Hi, Nice volunteering indeed!
So on the Ode side, I'd go with implementing a specific integration layer for Tuscany instead of reusing the Axis2 one. That would allow in-VM SCA / BPEL interactions and a greater integration between the two. Ode provides an integration API that you have to implement if you want to plug the engine into something else. The engine uses this API to get whatever it needs to work, like the ability to send and receive messages, to get some representation of the services it's going to interact with, or even threads and transactions. So you would just wire up all services Tuscany provides into the engine when implementing these interfaces. To see what those look like you can have a look at [1]. We currently have 3 working implementations for these interfaces: Axis2, JBI and test. The Axis2 one is wrapped around Axis2 in a WAR and works in any servlet container. The JBI one is bundled in a Service Assembly and can be deployed in ServiceMix. The test one works in-memory in a standalone manner. These are great examples to look at to see how the required services are provided to the engine and how everything is initialized. In particular you can have a look at ODEServer [2] for Axis2 and OdeLifeCycle [3] for JBI, these are where all the initialization and wiring up logic happens for these 2 integrations. I'd start from the test IAPI implementation [4] [5] to see how things work out, this will run in memory so you won't have to worry about providing a datasource and a transaction manager to start with. Then you can bring some pieces from the Axis2 and JBI integrations (copy / paste is your friend) and increment from that. Implement the different communication interfaces by using Tuscany services and you should be all set. Now I think we could discuss about the details and how to use Tuscany services in Ode during an IRC chat session as I proposed in the other thread? So we can all have a better understanding of how this will work and you'll have more information to start from. Matthieu [1] https://svn.apache.org/repos/asf/incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ [2] https://svn.apache.org/repos/asf/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java [3] https://svn.apache.org/repos/asf/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java [4] https://svn.apache.org/repos/asf/incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTest.java [5] https://svn.apache.org/repos/asf/incubator/ode/trunk/bpel-test/src/main/java/org/apache/ode/test/ On 10/26/06, ant elder <[EMAIL PROTECTED]> wrote:
On 10/26/06, sam tam <[EMAIL PROTECTED]> wrote: > > Hi, > > I am a student and I have been looking into this topic for my project > work. > I'd like to contribute as much in this with some help from you folks. > For > now here is what I have been doing as ground work. > > - Tried out Tuscany M1 release and also recently from the current > development branch. > - With Apache ODE I deployed sample process in Tomcat and have been able > to > call it using a SOAP message. > > At the present moment I am trying to figure out how to integrate ODE into > Tuscany. One obvious thought I have in my mind is to use the Tuscany > Axis2 > Binding and invoke the BPEL process as a reference. I am going to be > digging into the OSOA specs for this and hope to get better clarity as I > go > along. > > I'd be happy to take advice from you folks on taking this forward. > > Thanks. > > Sam. > > Hi Sam, Its great you're interested in this, it would be really good to have BPEL support in Tuscany. In case you didn't see due to all the ASF email problems over the last few days, the Ode guys have also just started talking about this: http://www.mail-archive.com/[email protected]/msg10042.html. I talked about how to start a new container in this old mail: http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev/200610.mbox/browser . I'd start with trying to get a simple helloworld going which for this would be a combination of the Tuscany helloworldws sample and the Ode axis2-examples HelloWorld2. Basically start by copying the existing sample and one of the Tuscany containers, rename everything to BPEL. Remember when you do the copy/rename there's scdl in the META-INF/sca directory that you'll need to edit to update with the new class names. As there's an existing SCA spec for this you get some help with what to do. The spec defines what the implementation element looks like: <implementation.bpel process="xs:QName"/> So you'll need something like a BPELImplementation and BPELImplementationLoader for that. Use one of the existing ones and just change the QName constant to be "implementation.bpel" and the code to read in the attribute named "process". A harder part will be how Tuscany locates the BPEL process XML, for now its likely easiest to add a location attribute and have the loader just read it in, and then sort this part out properly later oncee things are working. So that would become: <implementation.bpel process="xs:QName" location="urlToBpelXml"/> The SCA BPEL spec talks about using introspection to work out the services and references used by the BPEL process, i'd leave this for later also and just require a .componentType side file for now. Again, just use some existing ComponentType and ComponentTypeLoader classes unchanged. Copy some XxxComponent and XxxComponentBuilder classes and change them to set up and create the necessary Ode objects, and an XxxInvoker to do the invoking of the bpel process. As the Ode people are also interested in doing this maybe you should try to work together. How about start with small patches which I can get committed to our sandbox so everyone can see how things progress. Or would it help if I created a folder and template for this in the sandbox first for you all to send patches in against? Let me know... ...ant
