User task

A task where a user needs to perform a specific activity within a process engine or application. For example, the user is prompted to enter their details on a form.

General properties

Property Description
Model ID The unique identifier of the element within the process model.
Name The name of the element displayed in the diagram.
Documentation A description and any additional information about this element.

Form properties

Property Description
Form reference A link to a form that the user must interact with.

Assignment properties

Property Description
Candidate users Defines a list of users that can become assignee by claiming the task.

Multi instance properties

Property Description
Multi instance type Determines if multiple instances of this activity are created:
  • None - default, only one instance is created.
  • MI parallel - activities are created in parallel. This is good practice for user tasks.
  • MI sequential - activities are created sequentially. This is good practice for service tasks.
Collection

Expression to set the loop collection for a multi-instance task. The number of instances is determined by the elements of a collection. For each element in the collection, a new instance is created.

A common use case is to loop over lists created by multi-element subforms. For example, if you bound a subform to an array of invoice positions using the expression invoicePositions, you can set the loop collection to ${invoicePositions} to loop over each position.

Element variable

The name of the variable where the currently processed item from the loop collection is stored, for example invoicePosition.

You can access the element in the process through an expression, for example ${invoicePosition}. To access the element in a form, you can add a task listener that copies the variable on creation from the execution level to a local task variable, for example ${task.setVariableLocal("invoicePosition",invoicePosition)}. The element is then available in the form through the task.invoicePosition variable.

Element index variable

The name of the variable where the index of the currently processed item from the loop collection is stored, for example, itemIndex.

The index starts with 0 and increases with every element that is being looped through. You can access the index in the process through an expression, for example ${itemIndex} in the process. To access the index in a form, you can add a task listener that copies the variable on creation from the execution level to a local task variable, for example ${task.setVariableLocal("itemIndex", itemIndex)}. The index is then available in the form through the task.itemIndex variable.

Cardinality A number or an expression that evaluates to an integer, which controls the number of activity instances that are created. If the attribute Collection is empty, a new instance is created for every element of the list. With cardinality, you can overwrite this and only create a given number of instances. You can also use this attribute if you want to loop over an activity a given number of times without specifying a collection.
Completion condition A Boolean expression that when true cancels the remaining activity instances, stopping the loop, and produces a token.

Advanced form properties

Property Description
Form properties Custom form properties which are used within the legacy or custom form engine.

Advanced properties

Property Description
Asynchronous When enabled, the activity starts as an asynchronous job.
Exclusive Whether the asynchronous activity or process runs as an exclusive job. An exclusive job ensures that no other asynchronous exclusive activities within the same process are performed at the same time. This helps prevent failing jobs in concurrent scenarios.
Skip expression

An expression which is evaluated before executing the task. If it evaluates to true, the task is skipped.

You must opt-in to enable this feature by setting a process variable _FLOWABLE_SKIP_EXPRESSION_ENABLED with the Boolean value true.

Execution listeners

Allows you to invoke Java logic after certain events:

  • Start: Executes after the activity has been started.
  • End: Executes after the activity was completed.
  • Transition: When defined on a sequence flow, executes once the flow is transition is taken.
Task listeners Allows you to invoke Java logic after the creation, reassignment, completion and deletion of the task.
Task ID variable An optional variable that contains the ID of the task.
Task Completer variable An optional variable that contains the user ID of the person who completes the task.

Visual properties

Property Description
Font size The font size of the element in the diagram.
Font weight The font weight of the element in the diagram.
Font style The font style of the element in the diagram.
Font color The font color of the element in the diagram.
Background color The background color of the element in the diagram.
Border color The border color of the element in the diagram.