Table 10.19, the XML serialization of the Buyer process in figure 10.23 (pg. 150) is shown. The process model in figure 10.23 shows a Pool named Buyer. The metamodell provides the possibility to define pools as participants, which have a reference to the process definition. But Table 10.19 doesn’t contain any definition of a participant.
---Proposal--------------- 04/07/2010 -------------------------
##Proposed Resolution: Fixed
(a) Update Table 10.19 by replacing the XML with the following XML,which adds a collaboration with a participant and a laneSet. The collaboration represents the pool Buyer in figure 10.23 (pg. 150).
<definitions id="Definition"
targetNamespace="http://www.example.org/UserTaskExample"
typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath"
xmlns="http://schema.omg.org/spec/BPMN/2.0"
xmlns:tns="http://www.example.org/UserTaskExample">
<resource id="regionalManager" name="Regional Manager">
<resourceParameter id="buyerName" isRequired="true" name="Buyer Name" type="xsd:string"/>
<resourceParameter id="region" isRequired="false" name="Region" type="xsd:string"/>
</resource>
<resource id="departmentalReviewer" name="Departmental Reviewer">
<resourceParameter id="buyerName" isRequired="true" name="Buyer Name" type="xsd:string"/>
</resource>
<collaboration id="BuyerCollaboration" name="Buyer Collaboration">
<participant id="BuyerParticipant" name="Buyer" processRef="BuyerProcess"/>
</collaboration>
<!-- Process definition -->
<process id="BuyerProcess" name="Buyer Process">
<laneSet id="BuyerLaneSet">
<lane id="ByerLane">
<flowElementRef>StartProcess</flowElementRef>
<flowElementRef>QuotationHandling</flowElementRef>
<flowElementRef>ApproveOrder</flowElementRef>
<flowElementRef>OrderApprovedDecision</flowElementRef>
<flowElementRef>TerminateProcess</flowElementRef>
<flowElementRef>OrderAndShipment</flowElementRef>
<flowElementRef>OrderHandling</flowElementRef>
<flowElementRef>ShipmentHandling</flowElementRef>
<flowElementRef>OrderAndShipmentMerge</flowElementRef>
<flowElementRef>ReviewOrder</flowElementRef>
<flowElementRef>EndProcess</flowElementRef>
</lane>
</laneSet>
<startEvent id="StartProcess"/>
<sequenceFlow sourceRef="StartProcess" targetRef="QuotationHandling"/>
<task id="QuotationHandling" name="Quotation Handling"/>
<sequenceFlow sourceRef="QuotationHandling" targetRef="ApproveOrder"/>
<userTask id="ApproveOrder" name="ApproveOrder">
<potentialOwner resourceRef="tns:regionalManager">
<resourceParameterBinding parameterRef="tns:buyerName">
<formalExpression>getDataInput('order')/address/name</formalExpression>
</resourceParameterBinding>
<resourceParameterBinding parameterRef="tns:region">
<formalExpression>getDataInput('order')/address/country</formalExpression>
</resourceParameterBinding>
</potentialOwner>
</userTask>
<sequenceFlow sourceRef="ApproveOrder" targetRef="OrderApprovedDecision"/>
<exclusiveGateway id="OrderApprovedDecision" gatewayDirection="diverging"/>
<sequenceFlow sourceRef="OrderApprovedDecision" targetRef="OrderAndShipment">
<conditionExpression>Was the Order Approved?</conditionExpression>
</sequenceFlow>
<sequenceFlow sourceRef="OrderApprovedDecision" targetRef="TerminateProcess">
<conditionExpression>Was the Order NOT Approved?</conditionExpression>
</sequenceFlow>
<endEvent id="TerminateProcess">
<terminateEventDefinition id="TerminateEvent"/>
</endEvent>
<parallelGateway id="OrderAndShipment" gatewayDirection="diverging"/>
<sequenceFlow sourceRef="OrderAndShipment" targetRef="OrderHandling"/>
<sequenceFlow sourceRef="OrderAndShipment" targetRef="ShipmentHandling"/>
<task id="OrderHandling" name="Order Handling"/>
<task id="ShipmentHandling" name="Shipment Handling"/>
<sequenceFlow sourceRef="OrderHandling" targetRef="OrderAndShipmentMerge"/>
<sequenceFlow sourceRef="ShipmentHandling" targetRef="OrderAndShipmentMerge"/>
<parallelGateway id="OrderAndShipmentMerge" gatewayDirection="converging"/>
<sequenceFlow targetRef="OrderAndShipmentMerge" sourceRef="ReviewOrder"/>
<userTask id="ReviewOrder" name="Review Order">
<potentialOwner resourceRef="tns:departmentalReviewer">
<resourceParameterBinding parameterRef="tns:buyerName">
<formalExpression>getDataInput('order')/address/name</formalExpression>
</resourceParameterBinding>
</potentialOwner>
</userTask>
<sequenceFlow sourceRef="ReviewOrder" targetRef="EndProcess"/>
<endEvent id="EndProcess"/>
</process>
</definitions>