OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-bp message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Novelli 11/14/2005: Finalizing Changes for Recursion andOptionality...Update Again!



Cristiano,
We discussed this in further detail in last week's call and had some 
very productive suggestions from John Yunker. Please post to me and 
those cc: here so we can ensure you can effectively use the key ebBP 
functions.

   1. Re-enter (recursion): Use fork that sends you back into the same
      transaction. Use conditions on that fork not to re-enter. Example:
      Freight Status Advice, for example, has several possible values.
      We can model in two ways - one that reoccurs many times with a
      condition on the fork after the advice that says that if this
      status is 'delivered', then we don't re-enter. Otherwise, we
      recycle and look for another one. 
   2. Optionality: There are times that you don't know if you will get
      more (order status updates). You know at some point you are going
      get a delivery confirmation. That could be a different document.
      There could be a join related to this; when you receive delivery
      advice and move on always. If this is not the case and explicit
      closure is more difficult, suggest use a fork where parallel
      processing occurs. Receipt Advice, Freight Status Advise - both
      could be occurring.  Use preconditions and then could see if get
      delivery advise, if get freight advice, the collaboration is done,
      error occurs. Set up flows using fork-join to get to correct
      transactions. Based on pre- and post-conditions, when you get to
      the fork you do the right thing.

        Comments courtesy of John Yunker

If you can work with us, we'll be able to move forward. Other user 
communities are at the same stage and we can help you help one another. 
I've included an example from the CPP/A negotiation ebBP instance for 
your review. Thanks.

> mm2: 11/6/2005 As I indicated team, I've been corresponding with 
> Cristiano on his process definition and use of condition expressions. 
> He is interested in using OperationMapping and effectively 
> implementing the condition expressions (including the Ends and Begins 
> When).  I'd encourage any comments you have. Cristiano is considering 
> how to use the expressions given his query to John Yunker, myself and 
> Dale Moberg.  Comments encouraged. Thanks.
>
>>> novelli: Ok, I like "beginWhen" and "endsWhen" solution.
>>> How can I describe the condition expression:
>>> "the BTA X is started"?
>>> Is it BSI dependent?
>>> Can you do some short XML fragment examples?
>>
>> mm1: Section 3.4.10.1 gives an example for endsWhen, as well as 
>> references for semantic variables and condition expressions in 
>> general. Dale/John/Kenji, can you help Cristiano with some examples 
>> of condition expressions? We do have their use shown in Appendix A 
>> (for UBL example). These latter examples could help you identify what 
>> responses are needed, Cristiano, such as you identifying what 
>> notification is required on an Order Status Report.  As well, for the 
>> reuse of this BT in a BTA, you could have a Commission Order Change 
>> used if the XPath (in condition expression) shows that the business 
>> document includes such information.
>>
>> Guys, I'd encourage more suggestions for Cristiano so we ensure he 
>> has a quality example to use and we understand what other changes we 
>> need to include in the specification.
>>
>>>>            2. Any BT can be part of a recursive loop that continues
>>>>                  until explicitly terminated (explicit recursions). 
>>>> Use
>>>>                  endsWhen for example.
>>>
>>> novelli: If I don't specify endsWhen condition expression, is 
>>> execution of a BT implicit recursive?
>>> If false, how do I describe the loop? 
>>
>> mm1: As John indicated in his email (see below).  We've not 
>> encouraged the implicit recursiveness.  John, can you give Cristiano 
>> more details? Thanks.
>> ....Yunker: ....The "endsWhen" could be used to bound repeating BT, 
>> making the modeling simpler in those cases.
>>
>>> I can't find our discussion, however the linking nature of the spec 
>>> (decision / fork / join) allows for explicit modeling of the type 
>>> raised by Cristiano.
>>> Any BT can be fronted by a decision that explicitly excludes 
>>> execution of the BT (explicit optionality)
>>> Any BT can be part of a recursive loop that continues until 
>>> explicitly terminated (explicit recursions)
>>> As I ponder this, it strikes me that any declaration of optionality 
>>> or recursion needs to include the conditions that drive recursion 
>>> and optionality.  If the conditions are "the partner feels like 
>>> sending that document", then we handle that already through parallel 
>>> execution paths and beginsWhen.
>>> I CAN see how an "optional" declaration may help with certain types 
>>> of status messages, but when I think about it further I would like 
>>> to see the execution paths explicitly modeled in either case, making 
>>> the "optional" declaration "documentation" in essence.
>>


<?xml version="1.0" encoding="UTF-8"?>
<ProcessSpecification xmlns="http://docs.oasis-open.org/ebxmlbp/ebbp-2.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xi="http://www.w3.org/2001/XInclude"; xsi:schemaLocation="http://docs.oasis-open.org/ebxmlbp http://docs.oasis-open.org/ebxmlbp/ebbp-2.0.1.xsd"; name="Negotiation Business Process" nameID="Negotiation_business_process_id" uuid="urn:www.oasis-open.org/committees/negotiation/negotiation-business-process/2.1" specificationVersion="2" instanceVersion="2">
	<Documentation> This simplified business process describes parts of the CPPA negotiation process within the v2.0.1 ebBP schema. This document is a reorganization of Hima's original work using role rebinding within Performs elements of a CollaborationActivity, to switch who is offering the CPA. </Documentation>
	<!--CPA Offer Document-->
	<BusinessDocument name="CPA Offer Doc" nameID="CPA_Offer_Doc">
		<Specification name="CPA Offer Doc" nameID="CPA_Offer_Doc_Spec" type="schema" location="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0/documents/CPA_Offer_Doc.xsd"; targetNamespace="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0"/>
	</BusinessDocument>
	<!--CPA Accept Offer Document-->
	<BusinessDocument name="CPA Accept Offer Doc" nameID="CPA_Accept_Offer_Doc">
		<Specification name="CPA Offer Doc" nameID="CPA_Accept_Offer_Doc_Spec" type="schema" location="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0/documents/CPA_Accept_Offer_Doc.xsd"; targetNamespace="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0"/>
	</BusinessDocument>
	<!--CPA Reject Offer Document-->
	<BusinessDocument name="CPA Reject Offer Doc" nameID="CPA_Reject_Offer_Doc">
		<Specification name="CPA Offer Doc" nameID="CPA_Reject_Offer_Doc_Spec" type="schema" location="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0/documents/CPA_Reject_Offer_Doc.xsd"; targetNamespace="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0"/>
	</BusinessDocument>
	<!--CPA Counter Pending Offer Document-->
	<BusinessDocument name="CPA Counter Pending Offer Doc" nameID="CPA_Counter_Pending_Offer_Doc">
		<Specification name="CPA Offer Doc" nameID="CPA_Counter_Pending_Offer_Doc_Spec" type="schema" location="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0/documents/CPA_Conter_Pending_Offer_Doc.xsd"; targetNamespace="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0"/>
	</BusinessDocument>
	<!--CPA Document-->
	<BusinessDocument name="CPA Final Doc" nameID="CPA_Final_Doc">
		<Specification name="CPA Offer Doc" nameID="CPA_Final_Doc_Spec" type="schema" location="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0/documents/CPA_Final_Doc.xsd"; targetNamespace="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0"/>
	</BusinessDocument>
	<!--Response to final CPA Document. This will probably come from the CPA specification This is used when the CPA is not signed just to show acceptance or denial of final CPA-->
	<BusinessDocument name="CPA Final Response Doc" nameID="CPA_Final_Response_Doc">
		<Specification name="CPA Offer Doc" nameID="CPA_Final_Response_Doc_Spec" type="schema" location="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0/documents/CPA_Final_Response_Doc.xsd"; targetNamespace="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0"/>
	</BusinessDocument>
	<!-- Response to final CPA Document which is signed and agreed to create a double singed CPA. Receiving party will create a Signature over the signed CPA and send that. This will probably come from the CPA specification-->
	<BusinessDocument name="CPA Final Response Doc Signed" nameID="CPA_Final_Response_Doc_Signed">
		<Specification name="CPA Offer Doc" nameID="CPA_Final_Response_Doc_Signed_Spec" type="schema" location="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0/documents/CPA_Final_Response_Signed_Doc.xsd"; targetNamespace="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0"/>
	</BusinessDocument>
	<!--Response to final CPA Document Could be rejecting the final CPA cause it's different
from the agreed upon CPA or signature does not verify-->
	<BusinessDocument name="CPA Final Response Reject Doc" nameID="CPA_Final_Response_Reject_Doc">
		<Specification name="CPA Offer Doc" nameID="CPA_Final_Response_Reject_Doc_Spec" type="schema" location="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0/documents/CPA_Final_Response_Reject_Doc.xsd"; targetNamespace="http://www.oasis-open.org/groups/ebxml-cpa-negotiation/v2.0"/>
	</BusinessDocument>
	<!-- Business Transaction for sending the final CPA message. This CPA is sent by the party finally accepting the offer-->
	<RequestResponse name="CPA Final BT" nameID="CPA_Final_BT">
		<RequestingBusinessActivity name="Final CPA BT ReqBA" nameID="Final_CPA_BT_ReqBA" isAuthorizationRequired="false" isIntelligibleCheckRequired="false" isNonRepudiationReceiptRequired="false" isNonRepudiationRequired="false">
			<DocumentEnvelope name="CPA Final Doc Envelope" nameID="CPA_Final_Doc_Envelope" businessDocumentRef="CPA_Final_Doc" isAuthenticated="none" isConfidential="none"/>
		</RequestingBusinessActivity>
		<RespondingBusinessActivity name="Final_CPA_BT_RespBA" nameID="Final_CPA_BT_RespBA" isAuthorizationRequired="false" isIntelligibleCheckRequired="false" isNonRepudiationRequired="false">
			<DocumentEnvelope name="CPA Final Response Doc Env" nameID="CPA_Final_Response_Doc_Env" businessDocumentRef="CPA_Final_Response_Doc" isAuthenticated="none" isConfidential="none" isPositiveResponse="true"/>
			<DocumentEnvelope name="CPA Final Response Doc Signed Env" nameID="CPA_Final_Response_Doc_Signed_Env" businessDocumentRef="CPA_Final_Response_Doc_Signed" isAuthenticated="none" isConfidential="none" isPositiveResponse="true"/>
			<DocumentEnvelope name="CPA Final Response Reject Doc Env" nameID="CPA_Final_Response_Reject_Doc_Env" businessDocumentRef="CPA_Final_Response_Reject_Doc" isAuthenticated="none" isConfidential="none" isPositiveResponse="false"/>
		</RespondingBusinessActivity>
	</RequestResponse>
	<!-- Business Transaction for sending an offer -->
	<RequestResponse name="CPA Offer BT" nameID="CPA_Offer_BT">
		<RequestingBusinessActivity name="CPA_Offer_BT_ReqBA" nameID="CPA_Offer_BT_ReqBA" isAuthorizationRequired="false" isIntelligibleCheckRequired="false" isNonRepudiationReceiptRequired="false" isNonRepudiationRequired="false">
			<DocumentEnvelope name="CPA Offer Doc Env" nameID="CPA_Offer_Doc_Env" businessDocumentRef="CPA_Offer_Doc" isAuthenticated="none" isConfidential="none"/>
		</RequestingBusinessActivity>
		<RespondingBusinessActivity name="CPA_Offer_BT_RespBA" nameID="CPA_Offer_BT_RespBA" isAuthorizationRequired="false" isIntelligibleCheckRequired="false" isNonRepudiationRequired="false">
			<DocumentEnvelope name="CPA Accept Offer Doc Env" nameID="CPA_Accept_Offer_Doc_Env" businessDocumentRef="CPA_Accept_Offer_Doc" isAuthenticated="none" isConfidential="none" isPositiveResponse="true"/>
			<DocumentEnvelope name="CPA Reject Offer Doc Env" nameID="CPA_Reject_Offer_Doc_Env" businessDocumentRef="CPA_Reject_Offer_Doc" isAuthenticated="none" isConfidential="none" isPositiveResponse="false"/>
			<DocumentEnvelope name="CPA Counter Pending Offer Doc Env" nameID="CPA_Counter_Pending_Offer_Doc_Env" businessDocumentRef="CPA_Counter_Pending_Offer_Doc" isAuthenticated="none" isConfidential="none" isPositiveResponse="true"/>
		</RespondingBusinessActivity>
	</RequestResponse>
	<!-- Main collaboration for negotiation business process -->
	<BusinessCollaboration name="CPA Negotiation BC" nameID="CPA_Negotiation_BC">
		<!-- Role for initiator for negotiation process -->
		<Role name="CPA Negotiation Initiator" nameID="CPA_Negotiation_Initiator_Role"/>
		<!-- Role for initial responder of business collaboration -->
		<Role name="CPA Negotiation Responder" nameID="CPA_Negotiation_Responder_Role"/>
		<TimeToPerform duration="P1D"/>
		<Start name="CPA Negotiation BC Start" nameID="CPA_Negotiation_BC_Start">
			<ToLink toBusinessStateRef="CPA_Offer_BTA"/>
		</Start>
		<BusinessTransactionActivity name="CPA Offer BTA" nameID="CPA_Offer_BTA" businessTransactionRef="CPA_Offer_BT" hasLegalIntent="false" isConcurrent="false">
			<Documentation> First transaction in negotiation. Negotiation Initiator sends an offer
				to negotiation responder </Documentation>
			<TimeToPerform duration="P1D"/>
			<Performs currentRoleRef="CPA_Negotiation_Initiator_Role" initiatingRoleRef="CPA_Offer_BT_ReqBA"/>
			<Performs currentRoleRef="CPA_Negotiation_Responder_Role" respondingRoleRef="CPA_Offer_BT_RespBA"/>
		</BusinessTransactionActivity>
		<CollaborationActivity name="CPA Counter Offer CA" collaborationRef="CPA_Negotiation_BC" nameID="CPA_Counter_Offer_CA">
			<Documentation> If negotiation responder sends a "counter offer pending" message, then
				transitions to this collaboration where role of initiator in this is performed by
				the original negotiation responder by sending a counter offer to original initiator.
				Note that we revisit same BusinessCollaboration we are in.</Documentation>
			<Performs currentRoleRef="CPA_Negotiation_Initiator_Role" performsRoleRef="CPA_Negotiation_Responder_Role"/>
			<Performs currentRoleRef="CPA_Negotiation_Responder_Role" performsRoleRef="CPA_Negotiation_Initiator_Role"/>
		</CollaborationActivity>
		<BusinessTransactionActivity name="CPA Final BTA" nameID="CPA_Final_BTA" businessTransactionRef="CPA_Final_BT" hasLegalIntent="false" isConcurrent="false">
			<Documentation> If negotiation responder sends a "accept offer" message, then
				transitions to this transaction where responder who sent "accept offer" will send
				the "final cpa" </Documentation>
			<TimeToPerform duration="P1D"/>
			<Performs currentRoleRef="CPA_Negotiation_Initiator_Role"/>
			<Performs currentRoleRef="CPA_Negotiation_Responder_Role"/>
		</BusinessTransactionActivity>
		<!-- If final CPA BTA goes through fine, then overall collaboration is marked success -->
		<Success name="CPA_Negotiation_BC_Success" nameID="CPA_Negotiation_BC_Success">
			<FromLink conditionGuard="Success" fromBusinessStateRef="CPA_Final_BTA"/>
		</Success>
		<!--Success from CollaborationActivity reflecting a counteroffer.-->
		<Success name="CPA_Negotiation_BC_Success_from_CA" nameID="CPA_Negotiation_BC_Success_from_CA">
			<FromLink conditionGuard="Success" fromBusinessStateRef="CPA_Counter_Offer_CA"/>
		</Success>
		<!-- If Reject offer document is sent for offer bta collaboration is marked as failure-->
		<Failure name="CPA_Negotiation_BC_Failure_CPA_Reject" nameID="CPA_Negotiation_BC_Failure_CPA_Reject">
			<FromLink conditionGuard="BusinessFailure" fromBusinessStateRef="CPA_Offer_BTA">
				<ConditionExpression expressionLanguage="DocumentEnvelope" expression="CPA Reject Offer Doc"/>
			</FromLink>
		</Failure>
		<!-- If final CPA is rejected then its a failure too. -->
		<Failure name="CPA_Negotiation_BC_Failure_CPA_FinalResponse_Reject" nameID="CPA_Negotiation_BC_Failure_CPA_FinalResponse_Reject">
			<FromLink conditionGuard="BusinessFailure" fromBusinessStateRef="CPA_Final_BTA">
				<ConditionExpression expressionLanguage="DocumentEnvelope" expression="CPA Final Response Reject Doc"/>
			</FromLink>
		</Failure>
		<!-- If Final CPA BTA fails for some reason, then collaboration is marked as failure -->
		<Failure name="CPA_Negotiation_BC_Failure_Final_BTA_Fail" nameID="CPA_Negotiation_BC_Failure_Final_BTA_Fail">
			<FromLink conditionGuard="Failure" fromBusinessStateRef="CPA_Final_BTA"/>
		</Failure>
		<!-- If  Counter Offer Collaboration  CPA BTA fails for some reason, then collaboration is marked as failure -->
		<Failure name="CPA_Negotiation_BC_Failure_Counter_Collaboration_Fail" nameID="CPA_Negotiation_BC_Failure_Counter_Collaboration_Fail">
			<FromLink conditionGuard="Failure" fromBusinessStateRef="CPA_Counter_Offer_CA"/>
		</Failure>
		<!-- Transition to Final CPA offer  binary Transaction if the responder for main transaction accepts the initial offer -->
		<Transition>
			<FromLink fromBusinessStateRef="CPA_Offer_BTA">
				<ConditionExpression expressionLanguage="DocumentEnvelope" expression="CPA Accept Offer Doc"/>
			</FromLink>
			<ToLink toBusinessStateRef="CPA_Final_BTA"/>
		</Transition>
		<!-- Transition to counter offer  binary collaboration if the responder for main transaction returns a counter offer pending message -->
		<Transition>
			<FromLink fromBusinessStateRef="CPA_Offer_BTA">
				<ConditionExpression expressionLanguage="DocumentEnvelope" expression="CPA Counter Pending Offer Doc"/>
			</FromLink>
			<ToLink toBusinessStateRef="CPA_Counter_Offer_CA"/>
		</Transition>
	</BusinessCollaboration>
</ProcessSpecification>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]