Service Task

Service Task

In Flowable, Service Tasks are used to perform some form of "technical" task. Whenever you want to perform calculations, trigger some action within your application’s back end or integrate with another system, it often involves Service Tasks. Most custom tasks such as the Script task are specialized versions of Service Tasks. This is possible thanks to the extensible nature of the CMMN standard which allows us to create our own tasks based on an existing type.

It is possible to configure Service Tasks in four ways:

  • Use a Value Expression.

  • Specifying a class that implements PlanItemJavaDelegate or CmmnActivityBehavior.

  • Evaluating an expression that resolves to a delegation object.

  • Invoking a method expression.

In many cases it makes sense to store the result of an operation carried out by a Service Task. For that matter, you can specify a result variable.


Group Attribute Description



A unique ID for the element. The ID is used to refer to a model element from outside of the diagram (for example, from a CMMN Action button in a form or when referring to a model element, such as plan item ID, in a CMMN REST call). For convenience, this ID can be edited.


The name of the element. This is the name displayed in the diagram. If no run-time name is specified, this name is also used in the running case.


The description attribute additionally adds a description to the component.


Documentation intended to explain concepts of its use for future reference.



When enabled, the behavior of the plan item is executed as an asynchronous job. This happens when the plan item transitions to the ACTIVE state. During the execution of the behavior, the plan item is set to an intermediate ASYNC_ACTIVE state.


The fully qualified name of a class which either implements the class PlanItemJavaDelegate or CmmnActivityBehavior.

Class Fields

Class fields make it possible to inject field values into your delegated class. You can either inject a fixed string value or an expression. See the section 'Field Injection' of the Flowable documentation for more information.

Delegate expression

Delegate Expression to be executed when the task is activated. A delegate expression must resolve to a Java object, for instance a Spring bean. The object’s class must implement either JavaDelegate or ActivityBehavior.


Select this option to mark the element as required (exclamation mark decorator).

Required plan items must either be in the state COMPLETED, TERMINATED or DISABLED for their parent stage to complete.


Select this option to mark the element as repeatable (number sign decorator).

By default, only one instance of a plan item may be created at runtime. Repeatable plan items do not have that limitation.

The combination of this property, Manual activation and no entry sentry has a special meaning called Automatic repetition: As a previous instance of the plan item completes, a new instance is automatically created and set into state Enabled.

Completion neutral

Completion neutral influences the plan item’s parent stage completes.

Plan items in the state AVAILABLE may prevent the parent stage (or case) from automatically completing. By checking this property, the plan item behaves neutral with respect to the completion of the parent container.


An expression that is resolved once the task is executed. The expression can either be a value expression such as ${firstName} or it can resolve a named object (e.g., a Spring Bean) and interact with it. For instance, in the above example, a possible expression could be ${clientService.createNewClient(firstName, lastName, email)}.

Result variable

The name of the variable under which to store the result of the expression evaluation. The result is the return value of the expression. If no result variable is indicated, the result is discarded.


Manual activation

Select this option to mark the element to have Manual activation (right arrow 'play' decorator).

Plan items with Manual activation move from state AVAILABLE to state ENABLED once they trigger. A plan item in state ENABLED exposes an action button that allows the user to manually start the plan item.


Lifecycle listeners

Allows you to define lifecycle listeners for a plan item. Lifecycle listeners allow you to execute an expression, a delegate expression or a class when a plan item transitions from one state to another.


Font weight

The font weight of the element in the diagram.

Font size

The font size of the element in the diagram.

Font color

The font color of the element in the diagram.

Font style

The font style 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.