BT

Article: An introduction to Apache ODE

by Stefan Tilkov on Sep 05, 2007 |
In this new InfoQ article, Paul Brown introduces Apache ODE, an open source implementation of the WS-BPEL 2.0 standard. ODE recently graduated from incubation to an Apache top-level project, and the first release since leaving incubation is now available. According to Paul, ODE differs from other BPEL engines in that it is delivered as a component rather than a framework for developers looking to add orchestration functionality to their systems.

After providing some background on WS-BPEL's long history, Paul introduces ODE's features by showing how to deploy and execute a simple process. The article includes step-by-step instructions on how to install and deploy the ODE runtime into a Jetty Web container, as well as how to deploy a very simple application created as a BPEL process into ODE. Apache Axis2's direct HTTP binding is then used to access the running process via HTTP issued via the curl command line tool.

The article is remarkably free of high-level buzzwords; as the author writes in the introduction,
The ODE philosophy on BPEL is that it is a language for describing how to implement a set of message-based communication capabilities in terms of state manipulation and messages exchanged with external services. Other than in this sentence and in the preceding paragraph, the word "business" will not appear, and there will be no talk of alignment with IT or other silliness — ODE is guilt-free (and gilt-free) technology like a web server or a database; what you do with it is up to you. No GUI, IDE, ESB, or other TLA (other than a little XML) is required.
Read the full article to find out whether it lives up to Paul's promise.

Hello stranger!

You need to Register an InfoQ account or to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Wrong URL by Odd Christer Brovig

The url to the article is wrong.

Re: Wrong URL by Stefan Tilkov

Thanks - fixed.

Who's using ODE by Casper Dino

Any public list of projects using this engine in their solutions?

/Dino

Re: Who's using ODE by Matthieu Riou

Dino, there's a very early list here:

ode.apache.org/links.html

However from the questions asked on our user and dev mailing lists I can tell you there's quite a few others. We just haven't asked people if we could list their projects there yet.

Good article by Kristoffer Sjögren

Hey, good article!

"close" operation doesn't listed in bindings by brain debugger

Hi! Nice article.

Looks like the the "close" operation is missing in bindings.
Following should be added after "init" operation.

<wsdl:operation name="close">
<soap:operation soapAction="" style="rpc"/>
<wsdl:input>
<soap:body namespace="http://example.com/bpel/counter" use="literal"/>
</wsdlinput>
<wsdl:output>
<soap:body namespace="http://example.com/bpel/counter" use="literal"/>
</wsdloutput>
</wsdloperation>

Also "while" block for "close" doesn't have <condition> statement, don't know if it is ok, though.

Regards,
Bugger</condition></wsdl:output></wsdl:input></wsdl:operation>

Re: Who's using ODE by Rafal Rusin

Information on who's using ODE is now under this location: ode.apache.org/resource-services.html

ODE and HTTP binding extension test by 陈 健

Hello,

I'm testing Restful web services with a simple wsdl.
I followed the document that describes Restful services.

In the bpel designer, there was no syntax errors.
I published it into the ODE container, however I got error messages in the
following.
If I made the wsdl port with HTTP, the endpoint address should be extracted
in a http:address, isn't it?
What should I do if I call Restful web services with ODE?
Please give me your advice.

Thanks in advance.
This is my service definition.
<definitions
....
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
....
><service name="IHelloWorld"> <port name="IHelloWorldPort" binding="tns:IHelloWorldBinding"> <http:address location="http://localhost:9091/openmemes"/> </port> </service>This is the error messages.
========================================================================
DEBUG - GeronimoLog.debug(66) | Process store event: {ProcessStoreEvent#DEPLOYED:{restful.bpel.openmemes.com/}IHelloWorld-2}DEBUG - GeronimoLog.debug(66) | Ignoring store event: {ProcessStoreEvent#DEPLOYED:{restful.bpel.openmemes.com/}IHelloWorld-2}DEBUG - GeronimoLog.debug(66) | Process store event: {ProcessStoreEvent#ACTIVATED:{restful.bpel.openmemes.com/}IHelloWorld-2}DEBUG - GeronimoLog.debug(66) | register: {restful.bpel.openmemes.com/}IHelloWorld-2DEBUG - GeronimoLog.debug(66) | Registering process {restful.bpel.openmemes.com/}IHelloWorld-2 with server.DEBUG - GeronimoLog.debug(66) | Register process: serviceId={restful.bpel.openmemes.com/}IHelloWorld:IHelloWorldPort, process=ODEProcess[{restful.bpel.openmemes.com/}IHelloWorld-2]DEBUG - GeronimoLog.debug(66) | Activating {restful.bpel.openmemes.com/}IHelloWorld-2WARN - GeronimoLog.warn(92) | Deployment failed within the engine, store undeploying process.DEBUG - GeronimoLog.debug(66) | Process store event: {ProcessStoreEvent#UNDEPLOYED:{restful.bpel.openmemes.com/}IHelloWorld-2}ERROR - GeronimoLog.error(108) | Deployment of IHello failed, aborting for now.org.apache.ode.bpel.iapi.ContextException: Could not activate endpoint for service {restful.bpel.openmemes.com/}IHelloWorld and port IHelloWorldPort at org.apache.ode.axis2.BindingContextImpl.activateMyRoleEndpoint(BindingContextImpl.java:62) at org.apache.ode.bpel.engine.ODEProcess.activate(ODEProcess.java:725) at org.apache.ode.bpel.engine.BpelServerImpl.register(BpelServerImpl.java:380) at org.apache.ode.axis2.ODEServer.handleEvent(ODEServer.java:626) at org.apache.ode.axis2.ODEServer.access$100(ODEServer.java:91) at org.apache.ode.axis2.ODEServer$ProcessStoreListenerImpl.onProcessStoreEvent(ODEServer.java:613) at org.apache.ode.store.ProcessStoreImpl.fireEvent(ProcessStoreImpl.java:517) at org.apache.ode.store.ProcessStoreImpl.fireStateChange(ProcessStoreImpl.java:523) at org.apache.ode.store.ProcessStoreImpl.deploy(ProcessStoreImpl.java:301) at org.apache.ode.axis2.deploy.DeploymentPoller.check(DeploymentPoller.java:144) at org.apache.ode.axis2.deploy.DeploymentPoller.access$300(DeploymentPoller.java:55) at org.apache.ode.axis2.deploy.DeploymentPoller$PollingThread.run(DeploymentPoller.java:188)Caused by: org.apache.ode.axis2.OdeFault: Could not extract any soap:address from service WSDL definition {restful.bpel.openmemes.com/}IHelloWorld (necessary to establish the process target address)! at org.apache.ode.axis2.hooks.ODEAxisService.extractEndpointUri(ODEAxisService.java:188) at org.apache.ode.axis2.hooks.ODEAxisService.extractServiceName(ODEAxisService.java:202) at org.apache.ode.axis2.ODEServer.createService(ODEServer.java:323) at org.apache.ode.axis2.BindingContextImpl.activateMyRoleEndpoint(BindingContextImpl.java:59) ... 11 more

Unterminated while by Raitis Bērziņš

The while cycle is using all the systems resources, and brings Apache ODE to a halt.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

9 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT