[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: BP-31: B4P spec doesn't support parallel routing pattern
Assigned: http://www.osoa.org/jira/browse/BP-31 -----Original Message----- From: Ravi Rangaswamy [mailto:ravi.rangaswamy@oracle.com] Sent: Tuesday, September 02, 2008 19:42 To: bpel4people@lists.oasis-open.org Subject: [bpel4people] NEW ISSUE: B4P spec doesn't support parallel routing pattern TARGET: WS-HT, General DESCRIPTION: WS-HT should support parallel routing pattern. In the current WS-HT spec, people assignments are singular in notion. The potential owners in the sequential pattern can either be done through logical people groups, literals or an expression. Use Case: Lets consider a document review process where people from different departments need to review a document and provide input for a task. WS-HT should support that model where multiple people work on a single task in parallel in a collaborative environment. RELATED ISSUES: . Support for routing patterns and policies . Support for single routing pattern . Support for sequential routing pattern PROPOSAL: Provide a mechanism to assign the task in parallel to users/groups by introducing a parallel routing pattern. In the parallel, all of the parallel users will work on the task in parallel. Completion criteria should also be specified to determine the completion of the parallel tasks and final outcome of the task. The potential owners in parallel pattern is specified by a htd:list or htd:branch. The htd:list is specified using a list of htd:from elements or a management chain. The htd:list element was introduced in the sequential pattern issue. htd:branch allows modeling complex routing inside any of the parallel branches. htd:branch contains htd:single, htd:sequential and/or htd:parallel. Syntax <xsd:complexType name="tParallel"> <xsd:complexContent> <xsd:extension base="tExtensibleElements"> <xsd:sequence> <xsd:choice minOccurs="1" maxOccurs="1"> <xsd:element name="firstResponder" type="tFirResponder"/> <xsd:element name="allResponders" type="tParallelCompletionCriteria"/> <xsd:element name="vote" type="tParallelCompletionCriteria"/> </xsd:choice> <xsd:element name="list" type="tList"/> <xsd:element name="branch" type="tPotentialOwner" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="optional"/> <xsd:attribute name="skipCondition" type="xsd:string" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tList"> <xsd:complexContent> <xsd:extension base="tExtensibleElements"> <xsd:sequence> <xsd:choice maxOccurs="1"> <xsd:element name="from" type="tFrom" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="managementChain" type="tManagementChain" minOccurs="0" maxOccurs="1"/> </xsd:choice maxOccurs="1"> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tManagementChain"> <xsd:complexContent> <xsd:extension base="tExtensibleElements"> <xsd:sequence> <xsd:element name="from" type="tFrom" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="levels" type="xsd:string" minOccurs="1"/> <xsd:element name="title" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <!-- tPotentialOwners duplicated from pattern and policy issues doc --> <xsd:complexType name="tPotentialOwners"> <xsd:complexContent> <xsd:extension base="tExtensibleElements"> <xsd:choice maxOccurs="unbounded"> <xsd:element name="single" type="tSingle"/> <xsd:element name="sequential" type="tSequential"/> <xsd:element name="parallel" type="tParallel"/> </xsd:choice> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tParallelCompletionCriteria"> <xsd:complexContent> <xsd:extension base="tExtensibleElements"> <xsd:sequence> <xsd:element name="defaultOutcome" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="percentageOfOutcome" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="tFirstResponder"> <xsd:complexContent> <xsd:extension base="tExtensibleElements"> <xsd:sequence></xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> Example In the example below, assuming that the task input ClaimApprovalRequest has 3 claimProcessingAgents children - jlondon, achrist, jcooper, there are 3 parallel task each assigned to those 3 users <htd:parallel name="Claim Processing Review"> <htd:vote> <htd:defaultOutcome> string('APPROVE')</htd:defaultOutcome> <htd:percentageOfOutcome> number(50)</htd:percentageOfOutcome> </htd:vote> <htd:list> <htd:from> htd:getInput("ClaimApprovalRequest")/claimAgent </htd:from> </htd:list> </htd:parallel> In the example below, there are 2 parallel branches. In each branch, there is a sequential pattern. <htd:parallel name="Claim Processing Review"> <htd:vote> <htd:defaultOutcome> string('APPROVE')</htd:defaultOutcome> <htd:percentageOfOutcome> number(50)</htd:percentageOfOutcome> </htd:vote> <htd:branch> <htd:sequential name="Claim Processing Agents"> <htd:list> <htd:from> htd:getInput("ClaimApprovalRequest")/claimProcessingAgents </htd:from> </htd:list> </htd:sequential> </htd:branch> <htd:branch> <htd:sequential name="Claim Processing Review Board"> <htd:list> <htd:from> <htd:literal> <htd:organizationalEntity> <htd:users> <htd:user>achrist</htd:user> <htd:user>bpalmer</htd:user> </htd:users> </htd:organizationalEntity> </htd:literal> </htd:from> </htd:list> </htd:sequential> </htd:branch> </htd:parallel> --------------------------------------------------------------------- To unsubscribe from this mail list, you must leave the OASIS TC that generates this mail. Follow this link to all your TCs in OASIS at: https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]