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

 


Help: OASIS Mailing Lists Help | MarkMail Help

bpel4people message

[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]