- From: Tony Fletcher <tony_fletcher@btopenworld.com>
- Date: Fri, 10 Dec 2004 16:51:53 -0000
- To: <public-ws-chor@w3.org>
- Message-ID: <001e01c4ded8$8d976cf0$6701a8c0@corp.choreology.com>
Dear Colleagues, Sorry, found what I think is another typo in the Example 1 and 2 in Section 2.4.10 Choreography Coordination. Yes happy to lick the egg of my face as this is in one of the parts we contributed!! Corrected bits highlighted in red in the second version of the code examples (I have left the first uncorrected version in so people can work out the change if viewing a text rather than an HTML version of this message. Change is to the informationType of creditAuthorized and creditDenied Example 1: Coordinated credit authorization without Finalizer Block(s): <informationType name="creditDeniedType" exceptionType="true"/> <!-- Coordinated CreditAuthorization choreography without Finalizer Block(s)--> <choreography name="CreditAuthorization" root="false" coordination="true"> <relationship type="tns:CreditReqCreditResp"/> <variableDefinitions> <variable name="CreditExtended" informationType="xsd:int" silent="true" roleTypes="tns:CreditResponder"/> <variable name="creditRequest"/> <variable name="creditAuthorized"/> <variable name="creditDenied" informationType = "creditDeniedType"/> </variableDefinitions> <!-- the normal work - receive the request and decide whether to approve --> <interaction name="creditAuthorization" channelVariable="tns:CreditRequestor" operation="authorize"> <participate relationshipType="SuperiorInferior" fromRole="tns:Superior" toRole="Inferior"/> <exchange name="creditRequest" informationType="creditRequest" action="request"> <send variable="tns:creditRequest"/> <receive variable="tns:creditRequest"/> </exchange> <exchange name="creditAuthorized" informationType="creditDenied" action="respond"> <send variable="tns:creditAuthorized"/> <receive variable="tns:creditAuthorized"/> </exchange> <exchange name="creditDenied" informationType="refusal" action="respond"> <send variable="tns:creditDenied" causeException="true"/> <receive variable="tns:creditDenied" causeException="true"/> </exchange> </interaction> <!-- catch the (application) exception - as an exception it will abort the choreography --> <exceptionBlock name="handleBadCreditException"> <workunit name="handleBadCredit" > <interaction name="badCreditInteraction" channelVariable="tns:CreditResponder" operation="creditDenied"> <participate relationshipType="CreditReqCreditResp" fromRole="tns:Responder" toRole="CreditRequestor"/> </interaction> </workunit> </exceptionBlock> </choreography> Example 2: Coordinated credit authorization with Finalizer Block(s): <informationType name="creditDeniedType" exceptionType="true"/> <!-- Coordinated CreditAuthorization choreography with Finalizer Block(s) --> <choreography name="CreditAuthorization" root="false" coordination="true"> <relationship type="tns:CreditReqCreditResp"/> <variableDefinitions> <variable name="CreditExtended" informationType="xsd:int" silent="true" roleTypes="tns:CreditResponder"/> <variable name="creditRequest"/> <variable name="creditAuthorized"/> <variable name="creditDenied" informationType = "creditDeniedType"/> </variableDefinitions> <!-- the normal work -receive the request and decide whether to approve --> <interaction name="creditAuthorization" channelVariable="tns:CreditRequestor" operation="authorize"> <participate relationshipType="SuperiorInferior" fromRole="tns:Superior" toRole="Inferior"/> <exchange name="creditRequest" informationType="creditRequest" action="request"> <send variable="tns:creditRequest"/> <receive variable="tns:creditRequest"/> </exchange> <exchange name="creditAuthorized" informationType="creditDenied" action="respond"> <send variable="tns:creditAuthorized"/> <receive variable="tns:creditAuthorized"/> </exchange> <exchange name="creditDenied" informationType="refusal" action="respond"> <send variable="tns:creditDenied" causeException="true"/> <receive variable="tns:creditDenied" causeException="true"/> </exchange> </interaction> <!-- catch the (application) exception - as an exception it will abort the choreography and the Finalizer Block(s) are not accessible --> <exceptionBlock name="handleBadCreditException"> <workunit name="handleBadCredit" > <interaction name="badCreditInteraction" channelVariable="tns:CreditResponder" operation="creditDenied"> <participate relationshipType="CreditReqCreditResp" fromRole="tns:Responder" toRole="CreditRequestor"/> </interaction> </workunit> </exceptionBlock> <!-- Finalizer Block(s) --> <!-- what to do if the credit is drawn down --> <finalizerBlock name="drawDown"> <!-- if there is no application content to send, this could just be an assignment to the statecapturevariable creditExtended --> <workunit name="drawdown" > <interaction name="drawdownInteraction" channelVariable="tns:CreditRequestor" operation="drawDown"> <participate relationshipType="CreditReqCreditResp" fromRole="tns:CreditRequestor" toRole="CreditResponder"/> <exchange name="dummy" action="request"> <send></send> <receive recordReference="drawdownRecord"/> </exchange> <record name="drawdownRecord" when="before"> <source expression="drawnDown"/> <target variable="CreditExtended"/> </record> </interaction> </workunit> </finalizerBlock> <!-- what to do if the credit is not used --> <finalizerBlock name="replenish"> <!-- if there is no application content to send, this could just be an assignment to the state capturing variable creditExtended --> <workunit name="replenishWU"> <interaction name="replenishInteraction" channelVariable="tns:CreditRequestor" operation="replenish"> <participate relationshipType="CreditReqCreditResp" fromRole="tns:CreditRequestor" toRole="CreditResponder"/> <exchange name="dummy" action="request"> <send></send> <receive recordReference="replenishRecord"/> </exchange> <record name="replenishRecord" when="before"> <source expression="released"/> <target variable="CreditExtended"/> </record> </interaction> </workunit> </finalizerBlock> </choreography> Now my corrections Example 1: Coordinated credit authorization without Finalizer Block(s): <informationType name="creditDeniedType" exceptionType="true"/> <!-- Coordinated CreditAuthorization choreography without Finalizer Block(s)--> <choreography name="CreditAuthorization" root="false" coordination="true"> <relationship type="tns:CreditReqCreditResp"/> <variableDefinitions> <variable name="CreditExtended" informationType="xsd:int" silent="true" roleTypes="tns:CreditResponder"/> <variable name="creditRequest"/> <variable name="creditAuthorized"/> <variable name="creditDenied" informationType = "creditDeniedType"/> </variableDefinitions> <!-- the normal work - receive the request and decide whether to approve --> <interaction name="creditAuthorization" channelVariable="tns:CreditRequestor" operation="authorize"> <participate relationshipType="SuperiorInferior" fromRole="tns:Superior" toRole="Inferior"/> <exchange name="creditRequest" informationType="creditRequest" action="request"> <send variable="tns:creditRequest"/> <receive variable="tns:creditRequest"/> </exchange> <exchange name="creditAuthorized" informationType="creditAuthorizedType" action="respond"> <send variable="tns:creditAuthorized"/> <receive variable="tns:creditAuthorized"/> </exchange> <exchange name="creditDenied" informationType="creditDeniedType" action="respond"> <send variable="tns:creditDenied" causeException="true"/> <receive variable="tns:creditDenied" causeException="true"/> </exchange> </interaction> <!-- catch the (application) exception - as an exception it will abort the choreography --> <exceptionBlock name="handleBadCreditException"> <workunit name="handleBadCredit" > <interaction name="badCreditInteraction" channelVariable="tns:CreditResponder" operation="creditDenied"> <participate relationshipType="CreditReqCreditResp" fromRole="tns:Responder" toRole="CreditRequestor"/> </interaction> </workunit> </exceptionBlock> </choreography> Example 2: Coordinated credit authorization with Finalizer Block(s): <informationType name="creditDeniedType" exceptionType="true"/> <!-- Coordinated CreditAuthorization choreography with Finalizer Block(s) --> <choreography name="CreditAuthorization" root="false" coordination="true"> <relationship type="tns:CreditReqCreditResp"/> <variableDefinitions> <variable name="CreditExtended" informationType="xsd:int" silent="true" roleTypes="tns:CreditResponder"/> <variable name="creditRequest"/> <variable name="creditAuthorized"/> <variable name="creditDenied" informationType = "creditDeniedType"/> </variableDefinitions> <!-- the normal work -receive the request and decide whether to approve --> <interaction name="creditAuthorization" channelVariable="tns:CreditRequestor" operation="authorize"> <participate relationshipType="SuperiorInferior" fromRole="tns:Superior" toRole="Inferior"/> <exchange name="creditRequest" informationType="creditRequest" action="request"> <send variable="tns:creditRequest"/> <receive variable="tns:creditRequest"/> </exchange> <exchange name="creditAuthorized" informationType="creditAuthorizedType" action="respond"> <send variable="tns:creditAuthorized"/> <receive variable="tns:creditAuthorized"/> </exchange> <exchange name="creditDenied" informationType="creditDeniedType" action="respond"> <send variable="tns:creditDenied" causeException="true"/> <receive variable="tns:creditDenied" causeException="true"/> </exchange> </interaction> <!-- catch the (application) exception - as an exception it will abort the choreography and the Finalizer Block(s) are not accessible --> <exceptionBlock name="handleBadCreditException"> <workunit name="handleBadCredit" > <interaction name="badCreditInteraction" channelVariable="tns:CreditResponder" operation="creditDenied"> <participate relationshipType="CreditReqCreditResp" fromRole="tns:Responder" toRole="CreditRequestor"/> </interaction> </workunit> </exceptionBlock> <!-- Finalizer Block(s) --> <!-- what to do if the credit is drawn down --> <finalizerBlock name="drawDown"> <!-- if there is no application content to send, this could just be an assignment to the statecapturevariable creditExtended --> <workunit name="drawdown" > <interaction name="drawdownInteraction" channelVariable="tns:CreditRequestor" operation="drawDown"> <participate relationshipType="CreditReqCreditResp" fromRole="tns:CreditRequestor" toRole="CreditResponder"/> <exchange name="dummy" action="request"> <send></send> <receive recordReference="drawdownRecord"/> </exchange> <record name="drawdownRecord" when="before"> <source expression="drawnDown"/> <target variable="CreditExtended"/> </record> </interaction> </workunit> </finalizerBlock> <!-- what to do if the credit is not used --> <finalizerBlock name="replenish"> <!-- if there is no application content to send, this could just be an assignment to the state capturing variable creditExtended --> <workunit name="replenishWU"> <interaction name="replenishInteraction" channelVariable="tns:CreditRequestor" operation="replenish"> <participate relationshipType="CreditReqCreditResp" fromRole="tns:CreditRequestor" toRole="CreditResponder"/> <exchange name="dummy" action="request"> <send></send> <receive recordReference="replenishRecord"/> </exchange> <record name="replenishRecord" when="before"> <source expression="released"/> <target variable="CreditExtended"/> </record> </interaction> </workunit> </finalizerBlock> </choreography> Best Regards Tony A M Fletcher Cohesions (TM) Business transaction management software for application coordination <http://www.choreology.com/> www.choreology.com Choreology Ltd., 68 Lombard Street, London EC3V 9LJ UK Tel: +44 (0) 1473 729537 Mobile: +44 (0) 7801 948219 <mailto:tony.fletcher@choreology.com> tony.fletcher@choreology.com (Home: <mailto:amfletcher@iee.org> amfletcher@iee.org)
Received on Friday, 10 December 2004 16:52:33 UTC