Tuesday, October 09, 2007

Deploy depending BPEL processes

When designing and developing BPEL processes. It could result that process A call proccess B. But process B will also call process A. During development your start with process A, deploy it and later on you create process B. Then you add a partnerlink in process A to call B and vice versa.

You will not notice that these two processes are depending on each other until you create/deploy these processes in a new environment. It will not possible to deploy process A, while it depends on B. In the bpel.xml file process A will be compiled, but it will try to retrieve WSDL specification of B. While B is not there, it fails to compile. The other way arround, is the same. Process B does not compile because A does not exists.

This can be solved. The way I prefer is the following:
  • Copy the WSDL file and the XSD file of process B into your project of process A.
  • Copy bpel.xml into bpel_post.xml
  • Change all the WSDL locations, in bpel.xml, into local files: http://host/orabpel/default/HelloWorldB/HellowWorldB?wsdl
    into
    HelloWorldB.wsdl
  • Compile process A based on bpel.xml.
  • Deploy process A.
  • Deploy process B.
  • Compile process A based on bpel_post.xml.
  • Deploy process A.
Issue solved.

5 comments:

Charles Poulsen said...

Heres how we do it using ANT:

* Use the ANT "copy" task to make a copy of each process

eg.
<copy todir="${build.dir}/${bpel.dir}}">
<fileset dir="${basedir}/../${wagnkeyflow.dir}">
<include name="**/*.*"/>
<exclude name="*.svn*"/>
</fileset>
</copy>


* Use the "replace" task to fix up any host names.
Heres a extract:

<replace dir="${build.dir}/${bpel.dir}" summary="true"
description="Replace hostnames">
<include name="**/bpel.xml"/>
<replacefilter token="${dev.host}:${dev.port}" value="${new.host}:${new.port}"/>
</replace>

* Use the "ANT" task to call the bpel process. eg:

<ant dir="${build.dir}/${bpel.dir}" inheritall="true" inheritrefs="true"
antfile="build.xml">
<property name="rev" value="${bpel.rev}"/>
<property name="http.hostname" value="${bpel.hostname}"/>
<property name="http.port" value="${bpel.port}"/>
<property name="domain" value="${bpel.domain}"/>
<property name="admin.user" value="${bpel.user}"/>
<property name="admin.password" value="${bpel.password}"/>
<property name="j2ee.hostname" value="${bpel.j2ee.hostname}"/>
<property name="cluster" value="${bpel.cluster}"/>
<property name="platform" value="${bpel.platform}"/>
<property name="rmi.port" value="${wagnkeyflow.bpel.rmi.port}"/>
<property name="opmn.requestport" value="${wagnkeyflow.bpel.opmn.port}"/>
<property name="oc4jinstancename"
value="${bpel.oc4jinstancename}"/>
<property name="asinstancename"
value="${wagnkeyflow.bpel.asinstancename}"/>
</ant>

Harald Reinmueller said...

We also faced the challenges of dependencies in bpel and wrote an article on otn.

http://www.oracle.com/technology/tech/soa/soa-suite-best-practices/process-and-service-dependencies.html

sveta said...

Hello sir, Iam Swetha Desh from India,
It seema that you have knowledge of web services,I have some issues related to web services on webSphere Integration Developer.

Can u please check out the following information, if u can please do give a reply, on sveta.aspire@gmnail.com

Actually Iam trying to create a web service in websphere integration developer, of IBM,

While creating a wsdl file, it asks for literals, there we need to check the corresponding literal based upon the requiremnet.

I came to know that document literal is used for document inputs and outputs,where as rpc literal/rpc encoded is used when dealing with the primitive data types.

I created a simple addition operation with rpc encoded its working,
but i tried out with the rpc encoded , which is causing an error

the err is :

IWAB0135E An unexpected error has occurred.
SOAPException
Operation timed out: connect:could be due to invalid address

Iam not getting how to resolve this error,
Please let me know , if any has faced this kind of error , n know hows to solve.

And also let me know exactly , the difference between the literals.

Regards,
Swetha Desh.

sveta said...

Hello sir, Iam Swetha Desh from India,
It seema that you have knowledge of web services,I have some issues related to web services on webSphere Integration Developer.

Can u please check out the following information, if u can please do give a reply, on sveta.aspire@gmnail.com

Actually Iam trying to create a web service in websphere integration developer, of IBM,

While creating a wsdl file, it asks for literals, there we need to check the corresponding literal based upon the requiremnet.

I came to know that document literal is used for document inputs and outputs,where as rpc literal/rpc encoded is used when dealing with the primitive data types.

I created a simple addition operation with rpc encoded its working,
but i tried out with the rpc encoded , which is causing an error

the err is :

IWAB0135E An unexpected error has occurred.
SOAPException
Operation timed out: connect:could be due to invalid address

Iam not getting how to resolve this error,
Please let me know , if any has faced this kind of error , n know hows to solve.

And also let me know exactly , the difference between the literals.

Regards,
Swetha Desh.

Dikcy said...

COOLL !!! haeiawiaweh i love this site God JOB !! Thanks for info many help me

http://TrafficGold.us

Post a Comment

Post a Comment