Journey Manager (JM) The transaction engine for the platform. | System Manager / DevOps | All versions This feature is related to all versions.
Manager allows you to define and configure a job services, which processes collaboration jobs, using a single JSONJSON (JavaScript Object Notation) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays. document. The job definition includes the list of steps that make up the collaboration job. Each of the individual steps has the list of actions to be performed when the step runs, and the routes property, which defines the next step transition by mapping the route name to the next step.
The job definition consists of the following properties:
The jobDetails
property defines a collaboration job and how it is processed. The snippet of the jobDetails
is shown below:
{
"jobDetails": {
"name": "2 Step Review Job",
"processSubmitImmediate": "true",
"version": "4.1.0"
},
"steps":[
{ .. step definition ...},
{ .. step definition ...},
...
]
}
The jobDetails
has the following attributes:
Attribute Name | Description |
---|---|
name |
The name of the collaboration job, which is set by the job controller service when the collaboration job has been saved. If defining multiple jobs, use distinct names for each job definition to ensure you can differentiate between them in the Journey Analyticsscope selector. |
processSubmitImmediate |
The collaboration job processing mode. If this attribute is omitted or set to false, the job will use the standard mode. Otherwise, it will use the process immediate mode. |
version |
The version of Manager that the job was created in. |
The jobGroups
property lists collaboration job groups, so job coordinators can manage the collaboration job. The snippet of the jobGroups
is shown below:
"jobGroups": {}
The jobGroups
has the following attributes:
Attribute Name | Description |
---|---|
name |
The name of the job group, which will be displayed in the Job Groups dropdown from the Reviews tab of the form space. |
description |
The description for the job group. |
The job groups can be created in one of the following ways:
The steps
property is an JSON array that defines steps. The snippet of the steps
property is shown below:
{
"name": "Initial Review",
"type": "",
"expiryRule": "+5d"
"expiryServiceName": "An Expiry Service"
"actions": [
{ ... Action 1 Definition ... },
{ ... Action 2 Definition ... }
],
"routes": [
{ "name": "Approve", "nextStep": "Application Delivery" },
{ "name": "Decline", "nextStep": "Applicant Update" },
{ "name": "Exceeds Threshold", "nextStep": "Additional Review", "display": "false" },
{ "name": "Terminate", "nextStep": "Terminated Initial" }
]
},
The steps
has the following attributes:
Attribute Name | Description |
---|---|
name |
The name of the step, which is unique within a collaboration job. |
type |
The type of the step, that can be:
|
expiryRule |
The step scheduled completion time, the step expiry, calculation rule. If specified, the job_step.time_completion_scheduled is set as the step creation time plus the expiry rule value, for example, 2014-03-05 + 5d = 2014-03-10. The valid values are:
This is an optional attribute. We recommend setting it up to some default value so an action doesn't stay in the queue forever, if an associated form never abandons and the task is never submitted, even as a transaction expires. |
expiryServiceName |
Specifies a job expiry service to clean up any items, such as incomplete submissions. This service should specify a route. A route name doesn't have to include a work expiry. |
If the expiryRule
is used, but the exprityServiceName
is not specified, then expiry route must be provided.
The actions
property defines the list of actions for each step, which are executed sequentially. Actions are required for all steps except endpoints. The snippet of the actions
property is shown below:
{
"name": "Create Task",
"type": "Job Task Assign",
"properties": [
{ "name": "Process Message Send Email", "value": "true" },
{ "name": "Process Message Submission Step", "value": "Start" },
{ "name": "Process Message Text", "value": "Your ${submission.formName} application is at the Initial Review Step" },
}
The actions
has the following attributes:
Attribute Name | Description |
---|---|
name |
The name of the action, which is unique within a collaboration job. |
type |
The action service type, that must be:
|
properties |
The action specific properties, see the |
The standard Action Property classes (com.avoka.fc.core.service.job.impl
) define a fixed set of Action Properties. The JobTaskAssignService
defines a broad range of separate properties, so you can add them to your script when creating a new job action. This makes a job action re-useable across a collaboration job and the whole form application. For example, if the job definition has this property:
"properties": [
{ "name": "ABC Widget Name", "value": "Aplle Blue Catapillar" },
...
]
Then, you can retrieve it using the Groovy code below:
def abcName = actionStepProperties.getProperty("ABC Widget Name")
However, you should consider the following:
$formDataMap.name
doesn't resolve as the job action doesn't have any concept of a submission.$func.previousSubmission().formDataMap.name
works as we have used the submission from the previous step.$job.submission(0).name
works as we have used the first submission linked to the collaboration job.You can use various job functions in a job definition as well.
The properties
property defines the job definition properties. The snippet of the properties
property is shown below:
"properties": [
{ "name": "Task Assign Group", "value": "$func.formProperty('Initial Review')" },
{ "name": "Task Type", "value": "Review" },
]
Properties can be used to pass information into an instance of the Action Service. In this case, they are called action properties and can be defined at the action, step or collaboration job level. Properties with the same name defined at an action level override properties defined at the step level. Step override properties of the same name at the job level. This is illustrated in the snippet below:
{
"jobDetails": { ... },
"properties": [
{ "name": "Task Form Code", "value": "$func.startFormCode()" }
],
"steps":[
{
"name": "Initial Review",
"type": "",
"actions": [
{
"name": "Create Task",
"type": "Job Task Assign",
"properties": [
{ "name": "Process Message Text", "value": "Your ${submission.formName} application is at the Initial Review Step" },
{ "name": "Task Assign Group", "value": "$func.formProperty('Initial Review')" },
{ "name": "Task Message", "value": "Please perform the initial review of the ${submission.formName} from ${formDataMap.firstName} ${formDataMap.lastName}." },
{ "name": "Task Review Previous Step", "value": "true" },
{ "name": "Task Subject", "value": "Initial review of ${submission.formName} from ${formDataMap.firstName} ${formDataMap.lastName}" },
{ "name": "Task Type", "value": "Review" },
]
},
{ ... }
],
"properties": [
{ "name": "Task Form Code", "value": "$func.startFormCode()" }
],
"routes": [
{ "name": "Approve", "nextStep": "Application Delivery" },
{ "name": "Decline", "nextStep": "Applicant Update" }
],
},
{ ... }
]
}
The properties
has the following attributes:
Attribute Name | Description |
---|---|
name |
The name of the property. The predefined action services, such as the job task assign service, have a set number of action properties |
value |
A property value that can include an Apache Velocity template. The action properties are templates that are evaluated when an action service is run. The templates can be:
|
template |
It evaluates the value as a velocity template and forces the return value to return a String. This can evaluate nested function calls. This is can be used with property values that start with "$func", these can return an object. For example,
|
The routes
property defines the route mapping between the route name and the next step, which are required for all steps except endpoints. An action can return a route result name, as a string, which is listed in each step. If a valid name is returned, the step routes the collaboration job to the next step. However, if the action returns an invalid route name, an error is thrown. The snippet of the routes
property is shown below:
"routes": [
{ "name": "Approve", "nextStep": "Application Delivery" },
{ "name": "Decline", "nextStep": "Applicant Update" },
{ "name": "Exceeds Threshold", "nextStep": "Additional Review", "display": "false" },
{ "name": "Terminate", "nextStep": "Terminated Initial" }
]
The routes
has the following attributes:
Attribute Name | Description |
---|---|
name |
The route name that can be any name except the following reserved names:
|
nextStep |
The next step, that can be:
|
display |
The collaboration job provides a list of available routes to the form. However, the |
You can see the complete example of a job definition here.
Next, learn how to configure job definition.