<receive>
-- {excerpt}receive a message from a partner{excerpt}
<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](#ambiguousreceive.html)
, [bpel:conflictingReceive](#conflictingReceive)
, [bpel:conflictingRequest](#conflictingRequest)
, [bpel:correlationViolation](#correlationViolation)
, [bpel:invalidVariables](#invalidVariables)
, [bpel:uninitializedPartnerRole](#uninitializedPartnerRole)
,
[bpel:uninitializedVariable](#uninitializedvariable.html)
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](pick.html)>
activity should be used.
If the operation is of a request-response style, the <[reply](reply.html)>
activity can be used to send the reply.
partnerLink
-- the partnerLink whose myRole should be used.portType
-- (optional) the portType of the implemented operation.operation
-- name of the implemented operation.variable
-- (optional) variable into which the received message content should be storedcreateInstance
-- (optional) flag indicating whether this activity is used to instantiate the process instance
yes
-- if this is an activity that can be used to create a new process instance
no
-- if this activity does not create a new process instancemessageExchange
-- (optional) a string identifer used to disambiguate message exchanges on the same partnerLink/operation. <correlations> / <correlation>
-- specifies the correlation sets that are used in this exchange
-- set
-- name of the correlation set
-- initiate
-- specifies whether this operation will initiate the correlation set.
yes
-- the operation will initialize the correlation set based on the data received in the message
no
-- the operation will not initialize the correlation set --- correlation set will already be initialized and the operation will ensure that the message returned matches the correlation set
*** join
-- the operation will not initialize the correlation set if it is not already initialized. Otherwise, the operation will ensure that the message returned matches the correlation set.<fromParts> / <fromPart>
-- map received message parts into variables. When these elements are present, the variable
attribute must not be used
-- part
-- name of the received message part
-- toVariable
-- the variable in which the part should be saved
<fromPart>
syntax. Hence, the variable
attribute must be used.
{anchor:ambiguousReceive}
- bpel:[ambiguousReceive](ambiguousreceive.html)
--
{anchor:conflictingReceive}
- bpel:[conflictingReceive](conflictingreceive.html)
--
{anchor:conflictingRequest}
- bpel:[conflictingRequest](conflictingrequest.html)
--
{anchor:correlationViolation}
- bpel:[correlationViolation](correlationviolation.html)
--
{anchor:invalidVariables}
- bpel:[invalidVariables](invalidvariables.html)
--
{anchor:uninitializedPartnerRole}
- bpel:[uninitializedPartnerRole](uninitializedpartnerrole.html)
--
{anchor:uninitializedVariable}
- bpel:[uninitializedVariable](uninitializedvariable.html)
--
<[pick](pick.html)>
-- provides non-deterministic version of <[receive]>
.
<[reply](reply.html)>
-- allows the process to reply to a <receive>
'd message.