Skip to content

Instantly share code, notes, and snippets.

@faridasabry
Last active December 23, 2015 03:49
Show Gist options
  • Save faridasabry/6575881 to your computer and use it in GitHub Desktop.
Save faridasabry/6575881 to your computer and use it in GitHub Desktop.
BPEL file for Caller Process
<!-- CallerProcess BPEL Process [Generated by the Eclipse BPEL Designer] -->
<bpel:process name="CallerProcess"
targetNamespace="http://caller.com"
suppressJoinFailure="yes"
xmlns:tns="http://caller.com"
xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:ns1="http://async.com">
<!-- Import the client WSDL -->
<bpel:import namespace="http://async.com" location="AsynchProcessArtifacts.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"></bpel:import>
<bpel:import location="CallerProcessArtifacts.wsdl" namespace="http://caller.com"
importType="http://schemas.xmlsoap.org/wsdl/" />
<!-- ================================================================= -->
<!-- PARTNERLINKS -->
<!-- List of services participating in this BPEL process -->
<!-- ================================================================= -->
<bpel:partnerLinks>
<!-- The 'client' role represents the requester of this service. -->
<bpel:partnerLink name="client"
partnerLinkType="tns:CallerProcess"
myRole="CallerProcessProvider"
/>
</bpel:partnerLinks>
<!-- ================================================================= -->
<!-- VARIABLES -->
<!-- List of messages and XML documents used within this BPEL process -->
<!-- ================================================================= -->
<bpel:variables>
<!-- Reference to the message passed as input during initiation -->
<bpel:variable name="input"
messageType="tns:CallerProcessRequestMessage"/>
<!--
Reference to the message that will be returned to the requester
-->
<bpel:variable name="output"
messageType="tns:CallerProcessResponseMessage"/>
<bpel:variable name="AsynchRequest" messageType="ns1:AsynchProcessRequestMessage"></bpel:variable>
<bpel:variable name="AsynchCB" messageType="ns1:AsynchProcessResponseMessage"></bpel:variable>
<bpel:variable name="AsynchRequest2" messageType="ns1:AsynchProcessRequestMessage"></bpel:variable>
<bpel:variable name="AsynchCB2" messageType="ns1:AsynchProcessResponseMessage"></bpel:variable>
</bpel:variables>
<!-- ================================================================= -->
<!-- ORCHESTRATION LOGIC -->
<!-- Set of activities coordinating the flow of messages across the -->
<!-- services integrated within this business process -->
<!-- ================================================================= -->
<bpel:correlationSets>
<bpel:correlationSet name="AsynchCorr" properties="tns:property"></bpel:correlationSet>
<bpel:correlationSet name="FlowCorr" properties="tns:flow_property"></bpel:correlationSet>
<bpel:correlationSet name="FlowCorr2" properties="tns:flow_property"></bpel:correlationSet>
</bpel:correlationSets>
<bpel:sequence name="main">
<!-- Receive input from requester.
Note: This maps to operation defined in CallerProcess.wsdl
-->
<bpel:receive name="receiveInput" partnerLink="client"
portType="tns:CallerProcess"
operation="process" variable="input"
createInstance="yes">
<bpel:correlations>
<bpel:correlation set="AsynchCorr" initiate="yes"></bpel:correlation>
</bpel:correlations>
</bpel:receive>
<!-- Generate reply to synchronous request -->
<bpel:flow name="Flow"><bpel:scope name="Scope">
<bpel:partnerLinks>
<bpel:partnerLink name="Asynch_PL2" partnerLinkType="ns1:AsynchProcess" partnerRole="AsynchProcessProvider"></bpel:partnerLink>
<bpel:partnerLink name="AsyncCB_PL2" partnerLinkType="ns1:AsynchProcess" myRole="AsynchProcessRequester"></bpel:partnerLink>
</bpel:partnerLinks>
<bpel:sequence>
<bpel:assign validate="no" name="Assign">
<bpel:copy>
<bpel:from><bpel:literal><tns:AsynchProcessRequest xmlns:tns="http://async.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tns:input>tns:input</tns:input>
<tns:flow_number>tns:flow_number</tns:flow_number>
</tns:AsynchProcessRequest>
</bpel:literal></bpel:from>
<bpel:to variable="AsynchRequest" part="payload"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from part="payload" variable="input">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:input]]></bpel:query>
</bpel:from>
<bpel:to part="payload" variable="AsynchRequest">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[ns1:input]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from>
<![CDATA[string("flow 1:")]]>
</bpel:from>
<bpel:to part="payload" variable="AsynchRequest">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[ns1:flow_number]]>
</bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
<bpel:invoke name="InvokeAsynch" partnerLink="Asynch_PL2" operation="initiate" portType="ns1:AsynchProcess" inputVariable="AsynchRequest"><bpel:correlations>
<bpel:correlation set="AsynchCorr" initiate="no"></bpel:correlation>
<bpel:correlation set="FlowCorr" initiate="yes" ></bpel:correlation>
</bpel:correlations>
</bpel:invoke>
<bpel:wait name="Wait">
<bpel:for>
<![CDATA['PT5S']]>
</bpel:for>
</bpel:wait>
<bpel:receive name="ReceiveCallback" partnerLink="AsyncCB_PL2" operation="onResult" portType="ns1:AsynchProcessCallback" variable="AsynchCB"><bpel:correlations>
<bpel:correlation set="AsynchCorr" initiate="no"></bpel:correlation>
<bpel:correlation set="FlowCorr" initiate="no"></bpel:correlation>
</bpel:correlations>
</bpel:receive>
</bpel:sequence>
</bpel:scope>
<bpel:scope name="Scope1">
<bpel:partnerLinks>
<bpel:partnerLink name="Asynch_PL1" partnerLinkType="ns1:AsynchProcess" partnerRole="AsynchProcessProvider"></bpel:partnerLink>
<bpel:partnerLink name="AsyncCB_PL1" partnerLinkType="ns1:AsynchProcess" myRole="AsynchProcessRequester"></bpel:partnerLink>
</bpel:partnerLinks>
<bpel:sequence name="Sequence2">
<bpel:assign validate="no" name="Assign2">
<bpel:copy>
<bpel:from><bpel:literal><tns:AsynchProcessRequest xmlns:tns="http://async.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tns:input>tns:input</tns:input>
<tns:flow_number>tns:flow_number</tns:flow_number>
</tns:AsynchProcessRequest>
</bpel:literal></bpel:from>
<bpel:to variable="AsynchRequest2" part="payload"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from part="payload" variable="input">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:input]]>
</bpel:query>
</bpel:from>
<bpel:to part="payload" variable="AsynchRequest2">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[ns1:input]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from>
<![CDATA[string("flow 2:")]]>
</bpel:from>
<bpel:to part="payload" variable="AsynchRequest2">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[ns1:flow_number]]>
</bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign><bpel:invoke name="InvokeAsynch2" partnerLink="Asynch_PL1" operation="initiate" portType="ns1:AsynchProcess" inputVariable="AsynchRequest2">
<bpel:correlations>
<bpel:correlation set="AsynchCorr" initiate="no"></bpel:correlation>
<bpel:correlation set="FlowCorr2" initiate="yes" ></bpel:correlation>
</bpel:correlations>
</bpel:invoke>
<bpel:wait name="Wait2">
<bpel:for><![CDATA['PT10S']]></bpel:for>
<bpel:for><![CDATA['PT5S']]></bpel:for>
<bpel:for><![CDATA['PT5S']]></bpel:for>
</bpel:wait>
<bpel:receive name="ReceiveCallback2" partnerLink="AsyncCB_PL1" operation="onResult" portType="ns1:AsynchProcessCallback" variable="AsynchCB2"><bpel:correlations>
<bpel:correlation set="AsynchCorr" initiate="no"></bpel:correlation>
<bpel:correlation set="FlowCorr" initiate="no"></bpel:correlation>
</bpel:correlations>
</bpel:receive>
</bpel:sequence>
</bpel:scope></bpel:flow>
<bpel:assign validate="no" name="Assign1">
<bpel:copy>
<bpel:from><bpel:literal><tns:CallerProcessResponse xmlns:tns="http://caller.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tns:result>tns:result</tns:result>
</tns:CallerProcessResponse>
</bpel:literal></bpel:from>
<bpel:to variable="output" part="payload"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from>
<![CDATA[concat($AsynchCB.payload/tns:flow_number,$AsynchCB.payload/tns:result, $AsynchCB2.payload/tns:flow_number,$AsynchCB2.payload/tns:result)]]>
</bpel:from>
<bpel:to part="payload" variable="output">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
<bpel:reply name="replyOutput" partnerLink="client" portType="tns:CallerProcess" operation="process" variable="output" />
</bpel:sequence>
</bpel:process>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment