190 likes | 364 Views
WS-HT People Assignment Extensions for Task Routing Patterns. September 2008. Agenda. 1. Problem Statement and Goals. 2. Use Case. 3. Proposal. Problem Statement. There is no standard way for defining complex people assignment patterns in WS-HT itself
E N D
WS-HT People Assignment Extensions for Task Routing Patterns September 2008
Agenda 1. Problem Statement and Goals 2. Use Case 3. Proposal
Problem Statement • There is no standard way for defining complex people assignment patterns in WS-HT itself • WS-HT people assignment is singular in notion (from logical people group, literal or expression) • It does not allow specifying a sequence of potential owners or a group of potential owners that are allowed to work on the task in parallel • It lacks declaration of policies in the case where people assignment fails or a task is unexpectedly completed (early completion)
Problem Statement • Complex people assignments must be modeled in the business process • Customers view sequential/parallel routing patterns as part of one task • Human task involves collaboration between multiple users – sharing comments, attachments, input, output, etc. • Ability to see the various actions of the users in one single audit trail or history of the task • As complexity of the workflow routing patterns increase modeling the business process get more challenging • Portability of BPEL processes is not feasible unless we standardize on the BPEL generation • Might distract the business analyst from the purpose of the process • Tools that generated BPEL that orchestrate routing patterns would have hard time with any kind of change in generated processes • The lifecycle of people assignments might be more dynamic than the lifecycle of a business process. Thus modifying an approval chain would result in modifying the business process.
Goals • Make people assignment in WS-HT (and BPEL4People) more flexible by allowing specification of routing patterns in people assignments • Single • Sequential • Parallel • Specification of people assignment policies • Error assignee – potential owner in case the task could not be assigned to the specified owner • Policy under which routing of task could be completed early • Policy under which a potential owner might be skipped
Use Case ClaimReview (achrist) ClaimApproval (jstein) ClaimApproval (cdickens) ProcessPayment (bpalmer) ClaimService (mtwain) ClaimService (jlondon) SendPayment (wfaulk)
Routing Patterns <htd:potentialOwners> <htd:single name="ClaimReview"> .... </htd:single> <htd:sequential name="ClaimApproval"> .... </htd:sequential> <htd:parallel name="ClaimProcessing"> .... </htd:parallel> </htd:potentialOwners>
Routing Patterns • List of patterns • Each pattern is executed in order • Single • One task assignment to one or more users/groups • Sequential • Task gets routed to each user/group in the list • Parallel • Task gets assigned to multiple users/groups in parallel
Single Routing Pattern <htd:task name="ClaimProcessing""> …………… <htd:potentialOwners> <htd:single name="ClaimReview"> <htd:from> <htd:literal> <htd:organizationalEntity> <htd:users> <htd:user>achrist</htd:user> </htd:users> </htd:organizationalEntity> </htd:literal> </htd:from> </htd:single> </htd:potentialOwners> …………… </htd:task>
Single Routing Pattern <htd:task name="ClaimProcessing""> …………… <htd:potentialOwners> <htd:single name="ClaimReview"> <htd:from> htd:getInput("ClaimApprovalRequest")/reviewAgents </htd:from> </htd:single> </htd:potentialOwners> …………… </htd:task>
Sequential Routing Pattern <htd:task name="ClaimProcessing""> …………… <htd:potentialOwners> <htd:sequential name="ClaimApproval"> <htd:list> <htd:from> htd:getInput("ClaimApprovalRequest")/approvalAgents </htd:from> </htd:list> </htd:sequential> </htd:potentialOwners> …………… </htd:task>
Sequential Routing Pattern <htd:task name="ClaimProcessing""> …………… <htd:potentialOwners> <htd:sequential name="ClaimApproval"> <htd:list> <htd:managementChain> <htd:from> <htd:literal> <htd:organizationalEntity> <htd:users> <htd:user>jstein</htd:user> </htd:users> </htd:organizationalEntity> </htd:literal> </htd:from> <htd:levels>number(2)</htd:levels> <htd:title>string('Vice President')</htd:title> </htd:managementChain> </htd:list> </htd:sequential> </htd:potentialOwners> …………… </htd:task>
Parallel Routing Pattern <htd:task name="ClaimProcessing""> …………… <htd:potentialOwners> <htd:parallel name="ClaimProcessing"> <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> </htd:potentialOwners> …………… </htd:task> • Vote • First responder • All responder
Parallel Routing Pattern <htd:task name="ClaimProcessing""> …………… <htd:potentialOwners> <htd:parallel name="ClaimProcessing"> <htd:vote> <htd:defaultOutcome> string('APPROVE')</htd:defaultOutcome> <htd:percentageOfOutcome> number(50)</htd:percentageOfOutcome> </htd:vote>
Parallel Routing Pattern (cont.) <htd:branch> <htd:sequential name=“DispatchPayment"> <htd:list> <htd:from> <htd:literal> <htd:organizationalEntity> <htd:users> <htd:user>bpalmer</htd:user> </htd:users> </htd:organizationalEntity> </htd:literal> </htd:from> </htd:list> </htd:sequential> </htd:branch>
Parallel Routing Pattern (cont.) <htd:branch> <htd:sequential name=“ClaimService"> <htd:list> <htd:from> <htd:literal> <htd:organizationalEntity> <htd:users> <htd:user>jlondon</htd:user> <htd:user>mtwain</htd:user> </htd:users> </htd:organizationalEntity> </htd:literal> </htd:from> </htd:list> </htd:sequential> </htd:branch> </htd:parallel> </htd:potentialOwners> ……………
Skip Condition, Error Assignment, Early Completion <htd:task name="ClaimProcessing""> …………… <htd:peopleAssigments> <htd:potentialOwners> <htd:sequential name=“ClaimReview" skipCondition="htd:getInput("ClaimApprovalRequest")/amount < 50"> <htd:list> <htd:from> htd:getInput("ClaimApprovalRequest")/claimProcessingAgents </htd:from> </htd:list> </htd:sequential> <htd:sequential name="ClaimApproval"> ……… </htd:sequential> </htd:potentialOwners>
Skip Condition, Error Assignment, Early Completion <htd:onErrorPotentialOwner> <htd:from> <htd:literal> <htd:organizationalEntity> <htd:users> <htd:user>wfaulk</htd:user> </htd:users> </htd:organizationalEntity> </htd:literal> </htd:from> </htd:onErrorPotentialOwner> <htd:earlyCompletion> htd:getOutcome()=’REJECT’htd:getOutcome(“ApproveClaim") = </htd:earlyCompletion> </htd:peopleAssigments> ……………… </htd:task>