BPEL4People and WS-Human Task

IBM and SAP published the white paper for BPEL4People (2005).

BPEL4People proposes to add extensional elements to existing BPEL concepts and structures. The white paper proposed to introduce People Activities, a mechanism for People to manage Processes (initiate, query, interact, terminate), human interface definitions, infrastructure for people participation (Roles, Context, people Links, people resolution, states, properties, Process interaction interface, monitor interface), smooth transition between automatic and human operations, introduction of advanced interaction patterns (claim, revoke, complete, fail).

The first standard v 1.0 was published in June 2007 in two documents by Active Endpoints, Adobe, BEA, IBM, Oracle, and SAP.

An excerpt of the v. 1.0 proposal can be read in "BPEL4People Specifications Integrate Human Interactions Into Business Process" at xml.coverpages.

WS-BPEL Extension for People (BPEL4People), Version 1.0

The document WS-BPEL Extension for People (BPEL4People) Version 1.0 provides a mechanism and the formal syntax to extend the WS-BPEL standard to manage life cycle of Human Tasks, e.g. creation, assignment of people/group, handling of data input/output, and so on.

It provides 3 different types of Human Tasks (human activities). The 3 Task types are:

  • task (Inline Task, i.e. embedded task),
  • localTask (Standalone task) and
  • remoteTask (e.g. Web Services).

A Process can define a list of Human Tasks and then the BPEL4People extensions can be used to handle human activities as though they were regular BPEL Activities within the Process flow. For example:

<bpel:process ... >
  ...
  <b4p:humanInteractions>
	...
    <htd:tasks>
      <htd:task name="t12345">
	!-- task definition --
        ...
      </htd:task>
       ...
    </htd:tasks>
       ...
  </b4p:humanInteractions>

  ...
  <bpel:extensionActivity>
    <b4p:peopleActivity name="a12345" inputVariable="i12345" outputVariable="o12345" ...>
      <b4p:localTask reference="t12345"> <!-- task reference -->
	... <!-- overriding elements -->
      </b4p:localTask>
      <b4p:scheduledActions>?
        ...
      </b4p:scheduledActions>

      <bpel:toParts>?
	<bpel:toPart part="NCName" fromVariable="BPELVariableName"/>+
      </bpel:toParts>
      <bpel:fromParts>?
        <bpel:fromPart part="NCName" toVariable="BPELVariableName"/>+
      </bpel:fromParts>

      <b4p:attachmentPropagation fromProcess="all|none"
                           toProcess="all|newOnly|none"/>?
    </b4p:peopleActivity>
  </bpel:extensionActivity>
...

</bpel:process>

Note: "b4p" means BPEL4People namespace, "htd" means WS-Human Task namespace. Both namespaces are used together in both documents.

The <b4p:peopleActivity> inside the <bpel:extentionActivity> element can actually use either "task" or "notification" activity types in the Process description, each of which can be either of inline (e.g. embedded), standalone (e.g. local task application) or service (e.g. Web Service) sub-types.

<b4p:peopleActivity ...>
     <htd:task>|
     <b4p:localTask>|
     <b4p:remoteTask>|
     <htd:notification>|
     <b4p:localNotification>|
     <b4p:remoteNotification>
</b4p:peopleActivity>

<htd:task> requires an inline definition of the Task in position.

<b4p:localTask> takes the following syntax and refers to the task defined elsewhere, most likely defined within the Process.

<b4p:localTask referen="QName">
	... <!-- standard-overridng-elements -->
 </b4p:localTask>

<b4p:remoteTask> takes the following syntax and refers to the partnerLink (defined within the BPEL). The partnerLink refers to portType defined in WSDL of the service it uses.

<b4p:remoteTask  partnerLink="NCName" operation="NCName" responseOperation="NCName"?>
   <!-- standard-overridng-elements -->
</b4p:remoteTask>

"WS-BPEL Extension for People" defines <b4p:humanInteractions>, <b49:peopleAssignments> and <b4p:peopleActivity>. Their relative positions in conjunction with BPEL are indicated as below.

<bpel:process ...>
  ...
 ..
  <b4p:humanInteractions>?

    <htd:logicalPeopleGroups/>?
      <htd:logicalPeopleGroup name="NCName">+
        ...
      </htd:logicalPeopleGroup>
    </htd:logicalPeopleGroups>

    <htd:tasks>?
      <htd:task name="NCName">+
        ...
      </htd:task>
	...
    </htd:tasks>

    <htd:notifications>?
      <htd:notification name="NCName">+
        ...
      </htd:notification>
	...
    </htd:notifications>

  </b4p:humanInteractions>

  <b4p:peopleAssignments>
    ...
  </b4p:peopleAssignments>

  ...
  <bpel:extensionActivity>
    <b4p:peopleActivity name="NCName" ...>
      ...
    </b4p:peopleActivity>
	...
  </bpel:extensionActivity>
...

</bpel:process>

Web Services Human Task  (WS-HumanTask), Version 1.0

The document Web Services Human Task (WS-HumanTask) Version 1.0 is mainly concerned with how to define either "task" or "notification", whose definition will be referenced by <b4p:peopleActivity> inside <bpel:extentionActivity>. The document contains the full XSD as an appendix.

Although a Human Task may be defined as either of <htd:task>, <b4p:localTask> or <b4p:remoteTask>, the document defines <htd:task>, which may include:

  • <htd:interface>: This defines how the task should be called from a localTask
  • <htd:priority>
  • <htd:peopleAssigments>
  • <htd:delegation>
  • <htd:presentationElements>
  • <htd:outcome>
  • <htd:searchBy>
  • <htd:renderings>
  • <htd:deadlines>

Remember that <htd:task> is an inline Task, therefore, these elements are used to directly define <htd:task> for a <b4p:pelopleActivity> or for a Process. If the <htd:task> is defined for the Process, it can be referenced by different <b4p:peopleActivity> elements, which use <b4p:localTask> for referencing. The <b4p:localTask> or <b4p:remoteTask> can use only <htd:peopleAssigments> and <htd:priority> to override those properties, and they refer to tasks defined or set elsewhere (local or remote). The remoteTask refers to the task definition by using an interface defined in BPEL as <wsbpel:partnerLinkType>, which refers to <wsdl:portType>, i.e. the interface is defined in an extension of WSDL of the service it uses.

Similarly, the notification element may be defined as <htd:notification>, <b4p:localNotification> or <b4p:remoteNotificaiton>. The defines <htd:notfication>, which may look like as follows:

<htd:notification name="NCName">
	<htd:interface portType="QName" operation="NCName"/>

	<htd:priority expressionLanguage="anyURI"?>?
		nteger-expression
	</htd:priority>

	<htd:peopleAssignments>

		<htd:recipients>
              ...
		</htd:recipients>

		<htd:businessAdministrators>?
              ...
		</htd:businessAdministrators>

	</htd:peopleAssignments>

	<htd:presentationElements>
            ...
	</htd:presentationElements>

	<htd:renderings>?
            ...
	</htd:renderings>

</htd:notification>

This document also contains descriptions about the task instance data:

  • Presentation data: task or notification definitions
  • Context data: priority, task state, time stamp, Role value
  • Operational data: input message, output message, attachment and comments. 

and the definition of interface to handle these data, a programming interface for Participant Operations.

The API is provided to be able to handle the human actions, i.e. status transitions, presentation, message transactions.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.