<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.