Business process definition overview
Learn about business process definitions (BPMN files).
Define new business process
You can define business process using the Workflow Modeler. For more information, see Workflow Modeler at a glance.
To define a new business process, you can create the business process in the Workflow Modeler and then save the process as a BPMN file (*.bpmn20.dita).
For more information, see Workflow - Default Process Definitions Bit Bucket Repo.
Business process definition properties
This section describes some of the properties required in a business process definition.
- Id (corresponds to process type)
- Name (Process Name)
- Data Object tab
manualStart:
Mandatory. This is a Boolean value to indicate if the process instance can be started manually. Set to false for processes to be started using search query.objectTypes:
Optional. A comma-separated list of Reltio object types is to be configured here if the process definition is applicable to specific object types only.deleted:
Optional. This is a Boolean value to indicate if the process definition is no longer available. This is to be set to true in cases where the process definition needs to be made unavailable.
manualStart
).Main configuration properties
For a User Task, the following properties are used:
assignee
: this attribute enables you to directly assign a user task to a given user. For example:<userTask id="deleteReview" name="Delete Review" activiti:assignee="cust_user">
Note: You can only assign this task to users who are part of the possible assignee list. For more information, see topic Adding a User Profile to Possible Assignees List. We also validate that the default assignee is assigned the required permissions to execute this task.candidateGroups
: this attribute enables you to make a list of comma-separated Reltio roles candidates for a task. For example:<userTask id="dcrReview" name="DCR Review" activiti:candidateGroups="ROLE_REVIEWER">
dueDate
: this attribute enables you to set the due date of a task when it’s created. The format used is the ISO 8601[1] format (as required by the BPMN 2.0 specification). For example:<userTask id="dcrReview" name="DCR Review" activiti:dueDate="P2D">
Note: "P2D" is used asdueDate
to indicate that the task is due in two days.
Form properties
For a User Task, the following form properties are configured:
decision
(type enum): The possible values for actions.- Enum for possible actions
- Default value indicates the preferred action
- Enum values (Id) to be used to determine the next step
validator
: The class name (with full path) to indicate which class will be used to validate this particular task. Out of the checkbox classes are:com.reltio.workflow.core.task.validator.SingleEntityTaskValidator
com.reltio.workflow.core.task.validator.PotentialMatchTaskValidator
com.reltio.workflow.core.task.validator.DataChangeRequestValidator
notificationOnAssignmentEnabled
: Set totrue
orfalse
to enable/disable email notification on task assignment.notificationOnCompletionEnabled
: Set totrue
orfalse
to enable/disable email notification on task completion.disableAssignToOwner
: Set totrue
to disable assignment to the task owner. If set totrue
, a Workflow task can’t be assigned or reassigned to the task owner.accessTypes
: Specifies the list of privileges the user must have, to be an assignee. Example:<activiti:formProperty id="accessTypes" name="AccessTypes" type="string" default="READ,DELETE" writable="false"></activiti:formProperty>
Note: This means that a user must have READ and DELETE privileges on all entities involved in the task to be a possible assignee. IfaccessTypes
isn’t configured, a user must have all permissions on the objects to be a possible assignee.
Listeners
- Listener on assignment of task (if email notification is required): To be configured with a proper class name. If the source isn’t available, you can add the following line in the BPMN file:
<activiti:taskListener event="assignment" class="com.reltio.workflow.activiti.service.TaskAssignmentEventListener"></activiti:taskListener>
- Listener on creation of task: To be configured with a proper class name. This will be different depending upon the type of User Task as follows:
- General Task: Assign the task using the least-used algorithm among possible assignees (if assignee isn’t passed by the process initiator). If the source isn’t available, you can add the following in the BPMN file:
<activiti:taskListener event="create" class="com.reltio.workflow.activiti.service.TaskStartEventListener"></activiti:taskListener>
- Repeating Task: Assign the task to the previous assignee of this task. If the source isn’t available, you can add the following in the BPMN file:
<activiti:taskListener event="create" class="com.reltio.workflow.activiti.service.RepeatableTaskStartEventListener"></activiti:taskListener>
- Task not to be Assigned: Assign the task to no one. If the source isn’t available, you can add the following in the BPMN file:
<activiti:taskListener event="create" class="com.reltio.workflow.activiti.service.TaskNoAssignmentStartListener"></activiti:taskListener>
- DCR Task: Update
dcrType
(CREATE_ENTITY, UPDATE_ATTRIBUTE, and so on),entityType
(configuration/entityTypes/HCO, and so on) andrelationType
variables with information from the respective objects of the process. If the source isn’t available, you can add the following in the BPMN file:<activiti:taskListener event="create" class="com.reltio.workflow.activiti.service.DCRTypeTaskListener"></activiti:taskListener>
- Entity Task: Update the
entityType
variable (configuration/entityTypes/HCO, and so on) with information from the entity object of the process. If the source isn’t available, you can add the following in the BPMN file:<activiti:taskListener event="create" class="com.reltio.workflow.activiti.service.EntityTypeTaskListener"></activiti:taskListener>
- Relation Task: Update the
relationType
variable (configuration/relationTypes/HasAddress, and so on) with information from the relation object of the process. If the source isn’t available, you can add the following in the BPMN file:<activiti:taskListener event="create" class="com.reltio.workflow.activiti.service.RelationTypeTaskListener"></activiti:taskListener>
- General Task: Assign the task using the least-used algorithm among possible assignees (if assignee isn’t passed by the process initiator). If the source isn’t available, you can add the following in the BPMN file:
Service task
For a Service Task, define the following:
- Class name: Must be configured for each service task. Out-of-the-box classes are:
Delete
Service:com.reltio.workflow.activiti.service.Delete
NotAMatch
Service:com.reltio.workflow.activiti.service.NotAMatch
Merge
Service:com.reltio.workflow.activiti.service.Merge
- Apply Change Request:
com.reltio.workflow.activiti.service.ChangeRequestApply
- Reject Change Request:
com.reltio.workflow.activiti.service.ChangeRequestReject
Decision Gateway
Decision Gateway is required if there are separate paths to be followed based on the value of some variable.
Sequence flows
Sequence flows are conditional paths coming out of a decision gateway. These are to be defined on condition on a decision value like: ${decision=="Delete'}${decision=="Cancel'}${decision=="Merge'}${decision=="NotAMatch'}
Support of different BPMN constructs
Message Start Event
Workflow Adapter doesn’t have any API to support the starting process with a message start event.
Timer Start Event
Timer start event followed by a User Task with TaskStartEventListener
runs into error as the least-used assignment can’t be done without environment URL or tenant information. Since the Timer start event initiates a process internally without any start process API call, this information can’t be passed. Timer start event works if the process definition consists of just a simple service task followed by it.
Sub-process
Sub-process works fine on the Workflow Adapter. Call the activity-sub-BPMN file in a Call Activity followed by a User Task with TaskStartEventListener
runs into error as a least-used assignment can’t be done without the environment URL or tenant information but it works on the Workflow Adapter. Call activity works if the sub-BPMN file consists of just a simple service task.
Receive task
Workflow Adapter doesn’t have any API to support the starting process with the Receive Task.
Other tasks
- Script Task: supportedNote: Reltio supports Groovy language for the script task.
Register groovy jar on a tenant if you debug it locally. You can get groovy.jar from the MVN Repository.
If you want to use Groovy Script tasks in the Production environment, deploy the jar with the correct groovy version on a tenant using the following request body:
{ "module": "reltio.workflow-custom-jars/groovy/groovy-3.0.11.jar", "name": "groovy" }
For more information, see Deploy JAR Dynamically for Tenant.
- Manual Task: supported
- Business Rule task: not supported
- Parallel Gateway: supported.
- Inclusive Gateway: supported.
- Event-based Gateway: not supported.
OOTB validators
This section contains information about out-of-the-box validators.
Data change request validator
- Used in 'DCR Review' tasks
- class:
com.reltio.workflow.core.task.validator.DataChangeRequestValidator
- Tasks must be marked as invalid during validation if:
- DCR was already removed
- Entity was already removed or became a loser after merge
- More than one DCR is present in the task
Single entity task validator
- Used in 'Delete Review' task
- class:
com.reltio.workflow.core.task.validator.SingleEntityTaskValidator
-
Tasks must be marked as invalid during validation if:
- There’s more than one entity in the task
- Entity was already deleted or became a loser after merge
Potential match task validator
- Used in 'Match Review' task
- class:
com.reltio.workflow.core.task.validator.PotentialMatchTaskValidator
-
Tasks must be marked as invalid during validation if a match disappears or matches disappear by:
- Clicking Not a match in the UI
- Updating an entity so that it becomes not a match
- Changing match rules and reindexing
- Removing one of the entities