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

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-cppa-negot message

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


Subject: [ebxml-cppa-negot] Comments onCollaborationProtocolAgreementSimpleNegotiation$0.06.xml


Title:
I have tried validating the above XML instance against ebBPSS1.03.xsd and encountered a number of problems:
  1. The top-level ProcessSpecification element needs to specify the governing schema and schema location, i.e., 'xmlns = "http://www.ebxml.org/BusinessProcess" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.ebxml.org/BusinessProcess ebBPSS1.03a.xsd"'.
  2. The value "bcid:CpaSimpleNegotiation$0.06" is not a valid ID, because of the presence of the ':' and '$' characters. A number of other ID values also have this problem.
  3. The schema expects that the Start, BusinessTransactionActivity, Transition, Success, Failure to appear in that particular order. This ordering requirement is not met by the XML instance.
  4. A number of instances of the ConditionExpression element were misspelt as ConditionalExpression.
  5. A number of nameID attributes were misspelt as nameid. (By the way, the schema has a nameId attribute in the SubstitutionSet element which is inconsistent with the naming convention adopted for the rest of the schema.)
  6. The timeToPerform attribute is misspelt as timeToPeform in a number of places.
  7. The isAuthenticated, isConfidential, isTamperProof attributes are no longer boolean attributes. The permissible values are none, transient, persistent, and persistent-and-transient.
  8. "Commercial Transaction" is not a valid value for the type anyURI, because whitespace is not allowed.
  9. Values like 'file://BinaryCollaboration[@name="CPA Simple Negotiation"]/InitiatingRole[@name="CPA Negotiator A]' are not valid ID values. If you want to use XPath expressions as cross references, then perhaps the IDREF attributes should be changed into xlink:href attributes.
Attached is a modified file that fixes the above problems.
 
Besides the above syntactic issues, I also find the definition of the BinaryCollaboration a little bit confusing. There are two BusinessTransactionActivity included in the BinaryCollaboration: one is named 'Offer CPA BTA' and the other is named 'Counter Offer CPA BTA'. I find that misleading because the 'Offer CPA BTA' is always initiated by the party that has initiated the entire BinaryCollaboration, and the 'Counter Offer CPA BTA' is always initiated by the party playing the responder role in the BinaryCollaboration; whereas intuitively every offer after the initial one should be considered a counter offer. I think the Documentation element under the two BusinessTransactionActivity elements should provide some explanation to the non intuitive use of the term "counter offer" in this ProcessSpecification.
 
Currently, the 'Offer CPA BTA' and the 'Counter Offer CPA BTA' each references a different BusinessTransaction (one references 'Offer CPA' and the other references 'Counter Offer CPA'). The two BusinessTransactions are essentially isomorphic (each has a 'Create CPA Offer' RequestingBusinessActivity and a 'Process CPA Offer' RespondingBusinessActivity). I think it is sufficient to reuse a single BusinessTransaction definition.
 
Finally, I don't see why it is necessary to define a MultiParty Collaboration. The spec says that a MultiParty Collaboration is a synthesis of Binary Collaborations. Since there is only a single BinaryCollaboration, there is no synthesis. The BinaryCollaboration itself should completely describe the expected behavior of the party playing the initiating role and the party playing the responding role.
 
-Arvola
<?xml version = "1.0" encoding = "UTF-8"?>
<ProcessSpecification xmlns = "http://www.ebxml.org/BusinessProcess" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.ebxml.org/BusinessProcess ebBPSS1.03.xsd" name = "Collaboration Protocol Agreement Simple Negotiation" uuid = "urn:oasis:names:tc:cppa:bpid:CollaborationProtocolAgreementSimpleNegotiation$0.06" version = "0.06">
	<Documentation>A party proposes (offers) a Collaboration Protocol Agreement (CPA) to another party.  The initial CPA can be accepted, rejected, or the two parties can negotiate a mutually agreeable (and binding) CPA.</Documentation>
	<!--bpWsForms.AppendBusinessCollaborationForm: Processing CPA Simple Negotiation(BC-CPA-Simple-Negotiation).-->
	<BinaryCollaboration name = "CPA Simple Negotiation" preCondition = "Party B has a Collaboration Protocol Profile (or equivalent information) that is known by Party A and is sufficient enough for Party A to create a complete CPA that can, theoretically, be used." postCondition = "A mutually acceptable and binding CPA exists between the two negotiating parties; OR, The two parties do not agree on a mutually acceptable CPA." nameID = "bcid_CpaSimpleNegotiation_0.06">
		<Documentation>A party proposes (offers) a Collaboration Protocol Agreement (CPA) to another party.  The initial CPA can be accepted, rejected, or the two parties can negotiate a mutually agreeable (and binding) CPA.</Documentation>
		<!--bpWsForms.AppendBusinessCollaborationActivityTableForm: Processing CPA Simple Negotiation(BCAT-CPA-Simple-Negotiation).-->
		<InitiatingRole name = "CPA Negotiator A" nameID = "CPANegotiatorA"/>
		<RespondingRole name = "CPA Negotiator B" nameID = "CPANegotiatorB"/>
		<Start toBusinessState = "Offer CPA" toBusinessStateIDRef = "btid_OfferCPA_0.06">
			<!--bpWsForms.AppendBusinessCollaborationActivityTableForm: Transition Condition is 'CpaOffer.isPending'.-->
		</Start>
		<BusinessTransactionActivity name = "Offer CPA BTA" businessTransaction = "Offer CPA" businessTransactionIDRef = "btid_OfferCPA_0.06" fromAuthorizedRole = "CPA Negotiator A" toAuthorizedRole = "CPA Negotiator B" isConcurrent = "false" isLegallyBinding = "true" nameID = "OfferCPABTA" timeToPerform = "P99DT88H77M"/>
		<BusinessTransactionActivity name = "Counter Offer CPA BTA" businessTransaction = "Counter Offer CPA" businessTransactionIDRef = "btid_CounterOfferCPA_0.06" fromAuthorizedRole = "CPA Negotiator B" toAuthorizedRole = "CPA Negotiator A" isConcurrent = "false" isLegallyBinding = "true" nameID = "CounterOfferCPABTA" timeToPerform = "P99DT88H77M"/>
		<Transition onInitiation = "false" fromBusinessState = "Offer CPA" toBusinessState = "Counter Offer CPA">
			<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isCounterPending"/>
		</Transition>
		<Transition onInitiation = "false" fromBusinessState = "Counter Offer CPA" toBusinessState = "Offer CPA">
			<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isCounterPending"/>
		</Transition>
		<Success fromBusinessState = "Offer CPA" fromBusinessStateIDRef = "btid_OfferCPA_0.06">
			<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isAccepted"/>
		</Success>
		<Success fromBusinessState = "Counter Offer CPA" fromBusinessStateIDRef = "btid_CounterOfferCPA_0.06">
			<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isAccepted"/>
		</Success>
		<Failure fromBusinessState = "Offer CPA" fromBusinessStateIDRef = "btid_OfferCPA_0.06">
			<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isRejected"/>
		</Failure>
		<Failure fromBusinessState = "Counter Offer CPA" fromBusinessStateIDRef = "btid_CounterOfferCPA_0.06">
			<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isRejected"/>
		</Failure>
	</BinaryCollaboration>
	<!--bpWsForms.AppendBusinessTransactionForm: Processing Offer CPA(BT-Offer-CPA).-->
	<BusinessTransaction name = "Offer CPA" nameID = "btid_OfferCPA_0.06" pattern = "urn:x-un:cefact:tmwg:umm:pattern:businessTransaction:CommercialTransaction">
		<Documentation>One party’s CPA negotiator offers a CPA to another party’s negotiator.  The other party’s negotiator can accept the CPA, reject the CPA, or reject and indicate that a counter proposal is forth coming.</Documentation>
		<RequestingBusinessActivity name = "Create CPA Offer" isAuthorizationRequired = "true" isIntelligibleCheckRequired = "true" isNonRepudiationReceiptRequired = "true" isNonRepudiationRequired = "true">
			<DocumentEnvelope businessDocument = "CPA Offer" isPositiveResponse = "true" isAuthenticated = "transient" isConfidential = "transient" isTamperProof = "transient"/>
		</RequestingBusinessActivity>
		<RespondingBusinessActivity name = "Process CPA Offer" isAuthorizationRequired = "true" isIntelligibleCheckRequired = "true" isNonRepudiationReceiptRequired = "true" isNonRepudiationRequired = "true">
			<DocumentEnvelope businessDocument = "CPA Offer Response" isPositiveResponse = "true" isAuthenticated = "transient" isConfidential = "transient" isTamperProof = "transient"/>
		</RespondingBusinessActivity>
	</BusinessTransaction>
	<!--bpWsForms.AppendBusinessTransactionForm: Processing Counter Offer CPA(BT-Counter-Offer-CPA).-->
	<BusinessTransaction name = "Counter Offer CPA" nameID = "btid_CounterOfferCPA_0.06" pattern = "CommercialTransaction">
		<Documentation>One party’s CPA negotiator offers a CPA to another party’s negotiator.  The other party’s negotiator can either accept the CPA, reject the CPA, or reject and indicate that a counter proposal is forth coming.</Documentation>
		<RequestingBusinessActivity name = "Create CPA Offer" isAuthorizationRequired = "true" isIntelligibleCheckRequired = "true" isNonRepudiationReceiptRequired = "true" isNonRepudiationRequired = "true">
			<DocumentEnvelope businessDocument = "CPA Offer" isPositiveResponse = "true" isAuthenticated = "transient" isConfidential = "transient" isTamperProof = "transient"/>
		</RequestingBusinessActivity>
		<RespondingBusinessActivity name = "Process CPA Offer" isAuthorizationRequired = "true" isIntelligibleCheckRequired = "true" isNonRepudiationReceiptRequired = "true" isNonRepudiationRequired = "true">
			<DocumentEnvelope businessDocument = "CPA Offer Response" isPositiveResponse = "true" isAuthenticated = "transient" isConfidential = "transient" isTamperProof = "transient"/>
		</RespondingBusinessActivity>
	</BusinessTransaction>
	<MultiPartyCollaboration name = "Collaboration Protocol Agreement Simple Negotiation" nameID = "CollaborationProtocolAgreementSimpleNegotiation">
		<BusinessPartnerRole name = "CPA Negotiator A" nameID = "BPR_CPANegotiatorA">
			<Performs initiatingRole = "CPA Negotiator A"/>
			<Performs initiatingRole = "CPA Negotiator B"/>
			<Performs respondingRole = "CPA Negotiator B"/>
			<Transition onInitiation = "false" fromBusinessState = "START" toBusinessState = "Offer CPA">
				<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isPending"/>
			</Transition>
			<Transition onInitiation = "false" fromBusinessState = "Offer CPA" toBusinessState = "Counter Offer CPA">
				<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isCounterPending"/>
			</Transition>
			<Transition onInitiation = "false" fromBusinessState = "Counter Offer CPA" toBusinessState = "Offer CPA">
				<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isCounterPending"/>
			</Transition>
		</BusinessPartnerRole>
		<BusinessPartnerRole name = "CPA Negotiator B" nameID = "BPR_CPANegotiatorB">
			<Performs respondingRole = "CPA Negotiator B"/>
			<Performs respondingRole = "CPA Negotiator A"/>
			<Performs initiatingRole = "CPA Negotiator A"/>
			<Transition onInitiation = "false" fromBusinessState = "START" toBusinessState = "Offer CPA">
				<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isPending"/>
			</Transition>
			<Transition onInitiation = "false" fromBusinessState = "Offer CPA" toBusinessState = "Counter Offer CPA">
				<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isCounterPending"/>
			</Transition>
			<Transition onInitiation = "false" fromBusinessState = "Counter Offer CPA" toBusinessState = "Offer CPA">
				<ConditionExpression expressionLanguage = "urn:x-un:ebtwg:umm:expressionLanguage:businessEntityExpression" expression = "CpaOffer.isCounterPending"/>
			</Transition>
		</BusinessPartnerRole>
	</MultiPartyCollaboration>
</ProcessSpecification>
<!--bpWsForms.ParseForm: Finished. Mar 11 2002, 11:21:52 PM-->


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


Powered by eList eXpress LLC