11.3. Activities

An activity is an action performed inside a business process. Activities are classified based on the type of tasks they do:
  • Task: Use this activity type in your business process to implement a single task which can not be further broken into subtasks.
  • Subprocess: Use this activity type in your business process when you have a group of tasks to be processed in a sequential order in order to achieve a single result.
Each activity has one incoming and one outgoing connection.

11.3.1. Tasks

A task is an action that is executed inside a business process. Tasks can be of the following types:

Table 11.2. Types of Tasks in the Object Library

Task Icon Description
User Use the User task activity type in your business process when you require a human actor to execute your task.
  • The User task defines within it, the type of task that needs to be executed. You must pass the data that a human actor may require to execute this task as the content of the task.
  • The user task has one incoming and one outgoing connection. You can use the user tasks in combination with Swimlanes to assign multiple human tasks to similar human actors.
Send Use the Send task to send a message.
  • A send task has a message associated with it.
  • When a Send task is activated, the message data is assigned to the data input property of the Send task. A Send task completes when this message is sent.
Receive Use the Receive task in your process when your process is relying on a specific message to continue.
  • When a Receive task receives the specified message, the data from the message is transferred to the Data Output property of the Receive task and the task completes.
Manual Use the Manual task when you require a task to be executed by a human actor that need not be managed by your process.
  • The difference between a manual task and a user task is that a user task is executed in the context of the process, requires system interaction to accomplish the task, and are assigned to specific human actors. The manual tasks on the other hand, execute without the need to interact with the system and not managed by the process.
Service Use the Service task in your business process for specifying the tasks use a service (such as a web service) that must execute outside the process engine.
  • The Service task may use any service such as email server, message logger, or any other automated service.
  • You can specify the required input parameters and expected results of this task in its properties. When the associated work is executed and specified result is received, the Service task completes.
Business Rule Use the Business Rule task when you want a set of rules to be executed as a task in your business process flow.
  • During the execution of your process flow, when the engine reaches the Business Rule task, all the rules associated with this task are fired and evaluated.
  • The DataInputSet and DataOutputSet properties define the input to the rule engine and the calculated output received from the rule engine respectively.
  • The set of rules that this task runs are defined in .drl format.
  • All the rules that belong to a Business Rule task must belong to a specific ruleflow group. You can assign a rule its ruleflow group using the ruleflow-group attribute in the header of the rule. So when a Business Rule task executes, all the rules that belong to the ruleflow-group specified in the ruleflow-group property of the task are executed.
Script Use the Script task in your business process when you want a script to be executed within the task.
  • A Script task has an associated action that contains the action code and the language that the action is written in.
  • When a Script Task is reached in the process, it executes the action and then continues to the next node.
  • Use a Script task in your process to for modeling low level behavior such as manipulating variables. For a complex model, use a Service task.
  • Ensure that the script associated with a Script task is executed as soon as the task is reached in a business process. If that is not possible, use an asynchronous Service task instead.
  • Ensure that your script does not contact an external service as the process engine has no visibility of the external services that a script may call.
  • Ensure that any exception that your script may throw must be caught within the script itself.
None A None task type is an abstract undefined task type.

11.3.2. Subprocesses

A subprocess is a process within another process. When a parent process calls a child process (subprocess), the child process executes in a sequential manner and once complete, the execution control then transfers to the main parent process. Subprocess can be of the following types:

Table 11.3. Types of Subprocesses in the Object Library

Subprocess Icon Description
Reusable Use the Reusable subprocess to invoke another process from the parent process.
  • The Reusable subprocess is independent from its parent process.
Multiple Instances Use the Multiple Instances subprocess when you want to execute the contained subprocess elements multiple number of times.
  • When the engine reaches a Multiple Instance subprocess in your process flow, the subprocess instances are executed in a sequential manner.
  • The Multiple Instances subprocess is completed when the condition specified in the MI completion condition property is satisfied.
Embedded Use the Embedded subprocess if you want a decomposable activity inside your process flow that encapsulates a part of your main process.
  • When you expand an Embedded subprocess, you can see a valid BPMN diagram inside it that comprises a Start Event and at least one End Event.
  • An Embedded subprocess allows you to define local subprocess variables that are accessible to all elements inside this subprocess.
Ad-Hoc Use an Ad-Hoc subprocess when you want to execute activities inside your process, for which the execution order is irrelevant. An Ad-Hoc subprocess is a group of activities that have no required sequence relationships.
  • You can define a set of activities for the this subprocess, but the sequence and number of performances for the activities is determined by the performers of the activities.
  • Use Ad-Hoc subprocesses in cases such as executing a list of tasks that have no dependencies between them and can be executed in any order.
Event Use the Event subprocess in your process flow when you want to handle events that occur within the boundary of a subprocess.
  • The Event subprocess differ from the other subprocess as they are not a part of the regular process flow and occur only in the context of a subprocess.
  • An Event subprocess becomes active when its start event gets triggered.
  • An Event subprocess can be interrupting or non-interrupting. An interrupting Event subprocess interrupts the parent process and a non-interrupting Event subprocess does not.