You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by sam tam <sa...@gmail.com> on 2006/10/26 09:00:36 UTC
SCA and BPEL - Integration
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.
Re: SCA and BPEL - Integration
Posted by Matthieu Riou <ma...@gmail.com>.
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 <an...@gmail.com> wrote:
>
> On 10/26/06, sam tam <sa...@gmail.com> 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/tuscany-dev@ws.apache.org/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
>
>
Re: SCA and BPEL - Integration
Posted by Matthieu Riou <ma...@gmail.com>.
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 <an...@gmail.com> wrote:
>
> On 10/26/06, sam tam <sa...@gmail.com> 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/tuscany-dev@ws.apache.org/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
>
>
Re: SCA and BPEL - Integration
Posted by ant elder <an...@gmail.com>.
On 10/26/06, sam tam <sa...@gmail.com> 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/tuscany-dev@ws.apache.org/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
Re: SCA and BPEL - Integration
Posted by ant elder <an...@gmail.com>.
On 10/26/06, sam tam <sa...@gmail.com> 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/tuscany-dev@ws.apache.org/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