At my current customer, I had to rebuild a BPEL Process from 1.1 to 2.0, to be able to split it up using embedded and reusable subprocesses.
One requitement is to receive the wsa-Action property and reply it back, concatenated with 'Response'.
Since it implements a WSDL with 3 operations, I need a Pick-OnMessage construction.
To receive properties you can open the activity, in my case the OnMessage:
In the source his looks like the following:
<onMessage partnerLink="MyService_WS" portType="ns1:myService" operation="myOperation" variable="MyService_InputVariable"> <bpelx:fromProperties> <bpelx:fromProperty name="wsa.action" variable="wsaAction"/> </bpelx:fromProperties>With the wsaAction variable here is based on xsd:string.
However, this turns out not to work: the wsaAction variable stays empty.
This turns out to be a bug, that should have been solved since 11.1.1.6, but apparently still works as is. Read more about it in support document 1345071.1.
Solution is simple: just remove the wsa. prefix:
<onMessage partnerLink="MyService_WS" portType="ns1:myService" operation="myOperation" variable="MyService_InputVariable"> <bpelx:fromProperties> <bpelx:fromProperty name="action" variable="wsaAction"/> </bpelx:fromProperties>For invoke, reply, receive and other activities it works the same.
As said, in my case I need to reply with a wsa.action that is a concatenation of the received action with 'Response'. This can be done using an expression:
Again, first choose wsa.action and then in the source remove the wsa. prefix:
<reply name="ReplyMyService" partnerLink="MyService_WS" portType="ns1:myService" variable="MyService_OutputVariable" operation="myOperation"> <bpelx:toProperties> <bpelx:toProperty name="action">concat($wsaAction, 'Response')</bpelx:toProperty> </bpelx:toProperties> <bpelx:property name="action" variable="WSAction"/> </reply>Testing this in SoapUI or ReadyAPI will show:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <env:Header> <wsa:Action>http://www.darwin-it.nl/my/myServiceResponse</wsa:Action> <wsa:MessageID>urn:1694440c-c69a-11ea-bc81-0050569796a9</wsa:MessageID> <wsa:ReplyTo> ...
For more info on setting properties, see the docs.