<receive> – receive a message from a partner
<receive partnerLink="NCName" portType="QName"? operation="NCName" variable="BPELVariableName"? createInstance="yes|no"? messageExchange="NCName"? standard-attributes> standard-elements <correlations>? <correlation set="NCName" initiate="yes|join|no"? />+ </correlations> <fromParts>? <fromPart part="NCName" toVariable="BPELVariableName" />+ </fromParts> </receive>
throws bpel:ambiguousReceive, bpel:conflictingReceive, bpel:conflictingRequest, bpel:correlationViolation, bpel:invalidVariables, bpel:uninitializedPartnerRole,
bpel:uninitializedVariable
The <receive> activity enables a BPEL process to implement a Web Service operation. When this activity is encountered, ODE will begin searching for messages that match the activity. The activity will not complete until a match is found or the scope is terminated.
In this sense, the activity can be said to block. For non-deterministic selection (something akin to a POSIX select), the <pick> activity should be used.
| The precise timing of message arrival is not important. The message can arrive before the <receive> activity is activated; ODE will store the message in an internal queue and associate it with the appropriate <receive> once it is activated. |
If the operation is of a request-response style, the <reply> activity can be used to send the reply.
| ODE does not yet support the <fromPart> syntax. Hence, the variable attribute must be used. |
<pick> – provides non-deterministic version of <receive>.
<reply> – allows the process to reply to a <receive>'d message.
