Human Task Coordination
This section explains the Human Task Coordination protocol implementation of WSO2 BPS. Human Task Coordination Protocol is used to coordinate between the task process and Task Parent. The following diagram from the WS-Human Task specification shows how the coordination context is used alone with the task parents protocol handler and task processor protocol handler for coordination.
Human task coordination is useful for the following scenarios:
- A BPEL process (task parent) has created some tasks in the task processor. If the BPEL process instance is terminated due to some condition, it is necessary to exit all the task instances within the human task engine since, the task parent is no longer active. This activity can be performed using the coordination protocol by keeping track of all the tasks that are associated with a given task parent.
- Additionally, when a task is skipped or when a fault happens from the task engine side, this information needs to be sent to the task creating BPEL process.
Click here to configure human task coordination.
Components
The following are the various components involved in the process of human task coordination.
Components | Details | Configuration |
B4P component (org.wso2.carbon.bpel.b4p) | Acts as a task parent and undertakes coordination between the task engine and itself. Publishes ws-coordination registration service. | Configured using the b4p-coordination-config.xml file located at |
Human task engine (org.wso2.carbon.humantask) | Task Processor. Publishes protocol handler service per tenant. | Configured using the humantask.xml file located at  |
Human task coordination module (org.wso2.carbon.humantask.coordination.module) | An Axis2 module that intercepts the coordination message to do the initial coordination with the Task Parent. | Configured using the humantask.xml file located at |
Compliance with WS-Humantask-1.1, BPEL4People-1.1 and WS-Coordination-1.2
Human task protocol messages
The following protocol messages are supported by task engine and task parent.
Protocol Message | Receiver |
Exit | Task Engine |
Skip | B4P module ( Task Parent ) |
Fault | B4P module ( Task Parent ) |
Human task context support
The following optional override attributes are accepted by the Task Engine:
- Priority
- isSkipable
Other human task context attributes are not supported with the current implementation.
Protocol handlers
Task Engine
Task Engine creates a protocol handler (HumanTaskProtocolHandler admin service) per tenant. These services are secured with HTTP basic authentication and hence only available as HTTPS transport.
Task Parent
The B4P module does not create a separate protocol handler service, but it re-uses a task's CallBack service as it’s Protocol Handler. This service does not support protocol messages defined in Human Task spec 1.1 section 8.2.1, However, it supports corresponding functionalities using custom soap headers.
Registration service (ws-coordination)
Registration service is used to coordinate task parent and task engine during task creation phase. This service is secured as an admin service and each tenant has its own registration service.
Note:- This service can be skipped using configuration xml file and it is not compliant with ws-coordination 1.2 and ws-humantask 1.1. In this case Task parent predicts Task Engine's Protocol Handler URL by using Task's service URL. By default this configuration is enabled since within a WSO2 BPS cluster, coordination function is achievable without the registration service and reduces the additional overhead introduced by the registration service.