What I had in mind is:

1) process sends a message and initiates a correlation set during the invoke (e.g. taskId = 'xxx') 2) worklist service processes the message and returns output message with same taskId in the body.
3) process receives message and correlates against the taskId property.

This correlation pattern is called "request-response" in BPEL 2.0 and "out-in" in BPEL 1.1, and should work with two one-way messages or a single request-response operation.

So you get roughly this BPEL activity (assuming you're doing a single operation):

<invoke operation="createTask"
   inputVariable="createTaskRequest"
   outputVariable="createTaskResponse"
   partnerLink="WorklistPartnerLink"
   portType="wl:WorklistPortType">
   <correlations>
<correlation set="taskId" initiate="yes" pattern="request-response"/>
   </correlations>
</invoke>

If you don't use correlation sets and you're doing an asynchronous operation, you're relying on an underlying protocol (e.g., WS-Addressing) and the fact that the service understands this protocol.

alex


Guillaume Nodet wrote:
You mean using a synchronous BPEL process to correlate the request and the
response of the main asyncrhonous BPEL process ?
That's also a good solution.
Still, there is the need to support wsa:replyTo somewhere ...

Cheers,
Guillaume Nodet

On 6/14/06, Alex Boisvert <[EMAIL PROTECTED]> wrote:


Also, by far the most portable and easiest way would be to use a BPEL
correlation set and define correlation properties to be extracted from
the message body.

This should work on ServiceMix today as it does not require any
infrastructure support from the message bus.

alex


Guillaume Nodet wrote:
> Let me check i have understood: your bpel process is asynchronous, it
> means
> that it will answer to the request by sending another http request,
> right ?
>
> I would see several solutions:
>  * use a synchronous bpel process, and let the servicemix-http handle
the
> wsa:replyTo header (unfortunately, this is not supported yet, please
> raise a
> jira)
>  * keep the bpel process asynchronous, but register an http binding
> for the
> response
>  * mix both (async bpel process + replyTo) and use a component to
> correlate
> the request to the bpel process and its response (it should be a
> servicemix-eip pattern, the opposite of the pipeline)
>  * use URIs (http://servicemix.goopen.org/site/uris.html)
>
> So in short, this is not currently possible as is.  The easiest way
> would be
> to change your process to be synchronous and implement a small
> component in
> front that would make the bridge and use URI support to send the
> response.
> If your process is asynchronous, how do you plan to correlate the
request
> and the response ?
>
> Cheers,
> Guillaume Nodet
>
>
> On 6/14/06, oho <[EMAIL PROTECTED]> wrote:
>>
>>
>> Hello
>>
>> I use PXE on Servicemix-3.0-Snapshot from 2006-04-26 on Tomcat 5.5.16.
>>
>> On BPEL-Process I call via jbiBridge a webservice called
>> worklistService.
>> This call is asynchron.
>> For callback BPEL-Process from worklistService i need to use
>> WS-Adressing
>> information from webservice-header. This information are not
>> supplied. Are
>> there any options to configure servicemix for supporting WS-Addressing.
>>
>> My service-definitions in applicationContext.xml:
>>
>> <?xml version=" 1.0" encoding="UTF-8"?>
>> <beans  xmlns="http://xbean.org/schemas/spring/1.0";
>>                 xmlns:sm=" http://servicemix.apache.org/config/1.0";
>>                 xmlns:http="http://servicemix.apache.org/http/1.0";
>>                 xmlns:process="
>> http://bpel.nesko.fin.be.ch/statemachine/process/Form";
>>
>> xmlns:startprozess="
http://ws.nesko.fin.be.ch/statemachine/process/startProzess
>>
>> "
>>
>> xmlns:wl="http://ws.statemachine.nesko.fin.be.ch/worklist";
>>                 >
>>
>>         <!-- the JBI container -->
>>         <sm:container   id="jbi"
>>                                 rootDir="#rootDir"
>>                                 useMBeanServer="true"
>>                                         createMBeanServer="true"
>>                                 installationDirPath="#installDir"
>>                                 deploymentDirPath="#deployDir"
>>
>>
>> monitorInstallationDirectory="true"
>>                                 dumpStats="true"
>>                                         statsInterval="10"
>>
>> transactionManager="#transactionManager">
>>
>>     <sm:activationSpecs>
>>         <!-- START SNIPPET: HTTP-Endpoint -->
>>         <sm:activationSpec componentName="httpEndpoints">
>>                 <sm:component>
>>                         <http:component>
>>                                 <http:endpoints>
>>
>>                                         <http:endpoint
>> service="process:FormErfassenStandardProcessService"
>>
>>
>> endpoint="FromErfassenStandardProcessPort"
>>
>> role="consumer"
>>
>>
>> locationURI="
>>
http://localhost:8192/statemachine/process/FormErfassenStandardProcessService
>>
>> "
>>
defaultMep="
>> http://www.w3.org/2004/08/wsdl/in-out";
>> soap="true" />
>>                                     </http:endpoints>
>>                                 </http:component>
>>                         </sm:component>
>>                 </sm:activationSpec>
>>                 <!-- END SNIPPET: HTTP-Endpoint -->
>>         <!-- START SNIPPET: Worklist Soap Endpoint Definition -->
>>         <sm:activationSpec componentName="worklistSoap"
>>
>> service="wl:CreateTaskService"
>>
>> endpoint="CreateTaskService"
>>                                                    >
>>                         <sm:component>
>>                                 <bean class="
>> org.apache.servicemix.components.saaj.SaajBinding">
>> <property name="soapEndpoint">
>>                                                 <bean class="
>> javax.xml.messaging.URLEndpoint">
>>
<constructor-arg
>> value="http://localhost:8889/statemachine/services/WorklistService"/>
>>                                         </bean>
>>                                 </property>
>>                         </bean>
>>                         </sm:component>
>>                 </sm:activationSpec>
>> <!-- END SNIPPET: Worklist Soap Endpoint Definition -->
>>     </sm:activationSpecs>
>>   </sm:container>
>>
>>   <!-- Transaction Manager -->
>>   <bean id="transactionContextManager"
>> class="org.jencks.factory.TransactionContextManagerFactoryBean "/>
>>   <bean id="transactionManager"
>> class="org.jencks.factory.GeronimoTransactionManagerFactoryBean" />
>>
>>   <!-- Directories relative to web app -->
>>   <bean id="servletContext"
>> class="
org.springframework.web.context.support.ServletContextFactoryBean"
>>
>> />
>>   <bean id="rootDir" class="org.springframework.web.util.WebUtils"
>> factory-method="getRealPath">
>>     <constructor-arg ref="servletContext" />
>>     <constructor-arg value="/wdir" />
>>   </bean>
>> <bean id="installDir" class="org.springframework.web.util.WebUtils "
>> factory-method="getRealPath">
>>     <constructor-arg ref="servletContext" />
>>     <constructor-arg value="/install" />
>>   </bean>
>>   <bean id="deployDir" class=" org.springframework.web.util.WebUtils"
>> factory-method="getRealPath">
>>     <constructor-arg ref="servletContext" />
>>     <constructor-arg value="/deploy" />
>>   </bean>
>> </beans>
>>
>>
>> Thanks for your help.
>> Oliver
>> --
>> View this message in context:
>>
http://www.nabble.com/WS-Addressing-from-pxe-over-JBI-t1785537.html#a4863047
>>
>>
>> Sent from the ServiceMix - User forum at Nabble.com.
>>
>>
>




Reply via email to