Business Process Definition Overview

This topic contains information about business process definitions (BPMN files).

Define New Business Process

You can define business process using Workflow Modeler. For more information, see Workflow Web-based Modeler.

To define a new business process, you can create the business process in Workflow Modeler and then save the process as a BPMN file (*.bpmn20.xml).

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 allows you to directly assign a user task to a given user.For example:
    <userTask id="deleteReview" name="Delete Review" activiti:assignee="cust_user">
  • candidateGroups: this attribute allows 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 allows you to set the due date of a task when it is 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 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 box 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 cannot 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 a user must have READ and DELETE privileges on all entities involved in the task to be a possible assignee. If accessTypes is not 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 is not 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 type of User Task as follows:
    • General Task: Assign the task using least-used algorithm among possible assignees (if assignee is not passed by process initiator). If the source is not 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 is not 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 is not 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, etc), entityType(configuration/entityTypes/HCO, etc) and relationType variables with information from the respective objects of the process. If the source is not 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, etc) with information from the entity object of the process. If the source is not 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, etc) with information from the relation object of the process. If the source is not 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 Web-based Modeler.

Support of different BPMN Constructs

Message Start Event

Workflow Adapter does not 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 least-used assignment cannot be done without environment URL or tenant information. Since Timer start event initiates a process internally without any start process API call, this information cannot 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 activity-sub-BPMN file in a Call Activity followed by a User Task with TaskStartEventListener runs into error as a least-used assignment cannot be done without the environment URL or tenant information but it works on Workflow Adapter. Call activity works if the sub-BPMN file consists of just a simple service task.

Receive Task

Workflow Adapter does not have any API to support the starting process with the Receive Task.

Other Tasks

  • Script Task: supported
  • 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 should 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 should be marked as invalid during validation if:

    • There is 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 should 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