Unify and manage your data

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.
Note: Id & Name must be the same for Data Object tab properties (for example, 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 as dueDate 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 to true or false to enable/disable email notification on task assignment.
  • notificationOnCompletionEnabled: Set to true or false to enable/disable email notification on task completion.
  • disableAssignToOwner: Set to true to disable assignment to the task owner. If set to true, 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. If accessTypes 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) and relationType 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>

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'}

For more information, see Workflow Modeler at a glance.

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: supported
    Note: 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