Getting Started with BPM

This section describes how to model and run a simple business process.

Let’s consider that we want to create a process for reimbursement.

Three participants will be involved in the process:

  • an employee who asks for the reimbursement;

  • a manager who approves the reimbursement;

  • an accountant who transfers money to the account of the employee.

The model that we are going to create:

model

Modeling Process

Start the application and open the BPM → Modeler screen.

When the modeler is first opened, the properties panel on the right displays properties of the process itself. Modify the fields:

  • Process id: reimbursement

  • Name: Reimbursement

properties

Find the Documentation text area in the properties panel and write a process description there.

description

Creating Start Form

Click on the StartEvent element on the canvas. The properties will be displayed on the properties panel.

The Form section describes the form that will be displayed to users when they start the process. Let’s specify the Input dialog as a start process form.

start event

Then we need to specify the parameters that will be displayed to a user in the input dialog form.

Click the Plus button and in the Input dialog parameter edit dialog create a requestNumber parameter with the following properties:

  • Caption – Request number.

  • Type – String.

  • Editable – true.

  • Required – true.

request number

Create three more input dialog parameters:

  • expenseAmount (type is Decimal (double), editable and required)

  • expenseDate (type is Date, editable and required)

  • document (type is File, editable and required)

After that create an input dialog parameter manager with the Entity type, required and editable. Select User entity name. Specify ComboBox UI component for user selection. We will leave the JPQL query field blank — that means that the default query select e from smpl_User e will be used.

Select the requestNumber field in the Business key lookup field under the list of input dialog parameters. A business key is a domain-specific identifier of a process instance.

After adding all the parameters, the Form section should look this way:

form

When a process is started, input dialog parameters will be saved in the corresponding process variables.

Creating Approval User Task

Let’s create the Approval user task. The start event should be selected on the canvas for displaying the pop-up menu. Click the Append task icon.

append task

Then click the Change type icon (a wrench) and select the User Task there.

user task

In the properties panel, specify a task name Approval and a task id approval.

We’ll use the Process variable assignee source. The drop-down list displays those fields and process variables that are of the Entity type, and their entity class implements the UserDetails interface. Select the manager process variable from the list.

manager
By default, the built-in initiator process variable is available to assign a task. See the corresponding section for more details.

For the Approval task, we should also specify a process form. It will be an input dialog again. The dialog will display process variables from the start form and one more new parameter.

Create a new input dialog parameter and in the Process variable drop-down list select the requestNumber variable. Make the field non-editable by unselecting the Editable checkbox.

user task variables

In the same way create input dialog parameters for expenseAmount, expenseDate and document variables. They all must be non-editable.

Add a new dialog parameter with the comment process variable name and the Multiline string type. The field must be editable and non-required. This field will be used by the manager if the manager wants to make some notes when approving or rejecting the reimbursement request.

Creating Outcomes

At the Approval step, the manager has two options: to approve and to reject the request. An easy way to support this is to use outcomes. For each outcome, a button will be displayed on the form and the result will be stored in a special process variable.

Let’s create the first outcome for the Approval user task using the corresponding button of the Outcomes section in the properties panel. In the outcome editor specify an outcome id approve, a caption Approve and select an icon CHECK in the icons list.

outcome approve

Then create the second outcome: the id is reject, the caption is Reject, the icon is BAN.

After the Approval task is completed, the process must decide which path to choose using the outcome value. Let’s create an exclusive gateway.

Select the Approval task element and click the Append Gateway action of the context menu.

append gateway

Click the gateway and with the help of the context menu create EndEvent and User task. One sequence flow goes from the exclusive gateway to the EndEvent element and another one to the user task. Give names to the sequence flows: approved and rejected.

flows

To specify a condition for the approved flow, click on the element and in the sequence flow properties panel select the User task outcome value in the Condition source combo box field. Select the Approval user task and the approve outcome.

flow approved

Do the same for the rejected sequence flow, but select the reject outcome value for it.

Creating Payment User Task

For the second user task set a task name Payment and a task id payment.

We will implement the following behavior: the task should be displayed for all accountants and any of them will be able to claim this task for himself. To achieve this we should not specify a particular assignee for the user task but should specify Candidate groups or Candidate users.

Let’s create Candidate group for accountants. Go to the BPM → User groups screen and create a new group called Accountants with the accountants code. Change the group type to Users and add several users to the group.

user group

The bpm-process-actor-ui role should be assigned to these users to grant access to BPM screens and entities required for starting the process and working with user tasks. You can assign roles in the Application → Users screen.

Go back to the modeler, select the Payment user task and click the edit button near the Candidate groups field in the Assignee section.

candidate groups

In the appeared dialog select Groups source value as User groups and add the Accountants group.

groups

Configure an input dialog form for the Payment task. Add existing requestNumber, expenseAmount, expenseDate, document and comment fields. Make them all non-editable.

Add the EndEvent element that goes after the Payment user task.

Specifying Users to Start Process

The last thing we need to do is to specify who can start this process. If we want the process to be started by any user we may create and use a special user group.

Open the User groups screen and create a new group called All users. Set its Type to All users, which means that this group will automatically include every user. In the modeler, select the All users group for process starter candidates.

all users

Go back to the modeler and click on the free space on the canvas to display the process properties. Similarly to the Payment task, we will define Candidate groups in the Starter candidates section.

users start

Starting Process

The process model is ready to be deployed to the process engine. Click the Deploy process button on the toolbar.

toolbar

To start the process, open the BPM → Start Process screen. This screen displays process definitions available for starting by the current user.

Testing Process

Select the reimbursement process and click the Start process button.

start process

The start form will appear. Fill in the fields, select manager and click the Start process button.

start form

The manager will see the assigned task in the BPM → My Tasks screen.

approval step

Double-click the task. Some fields on this form are read-only as we configured in the modeler and there are two buttons for outcomes: Approve and Reject.

approval form

Enter the comment and click the Approve button. Log in on behalf of any user who is a member of the Accountants user group. Open the BPM → My Tasks screen. You’ll see that the table is empty, but in the filter, there is an indicator that the user has a group task that can be claimed. Expand the Group tasks node.

group task

All users of the Accountants group will see the Payment task among their group tasks until any of the accountants claims it. Open the task form. The form is read-only – you cannot do anything with the task until you claim it. On the bottom of the form, there are two buttons: Claim and resume and Claim and close.

payment task
  • Claim and resume button will remove the task from the list of group tasks of other users and will leave the task form on the screen. The form will become editable and buttons for completing the task will be displayed.

  • Claim and close will remove the task from other user task lists, the process form will be closed. The task will appear in the Assigned tasks list for the current user.

Click the Claim and close button. Select the Payment tasks node from the Assigned tasks group. Open the task form and complete the task using the default Complete task button. When we don’t specify task outcomes in the model, this default button is displayed.

complete task

The process is completed.