The list of features and
fixes provided by this release can be found here .
The Maven artifacts can be consumed from Alfresco Nexus:
Copy <repositories>
<repository>
<id>activiti-releases</id>
<url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases</url>
</repository>
</repositories>
Activiti Cloud:
Copy <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.activiti.cloud</groupId>
<artifactId>activiti-cloud-dependencies</artifactId>
<version>7.4.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
Activiti Core
Copy <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-dependencies</artifactId>
<version>7.4.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
Changes from previous versions
API changes
This version comes with the following changes to the APIs:
New API to replay a service task after a Cloud Connector failure
In the case where a service task has failed due to a failure in a Cloud Connector, it's possible to replay the task and send a new integration request to the connector. You need to provide the execution id and the definition id of the service task (id in the XML file):
Copy POST /rb/admin/v1/executions/{executionId}/replay/service-task
{
"flowNodeId": "flowNodeId"
}
Adds the group parameter to the user search API
GET /v1/identity/users?group=hr
Retrieves all the roles of a user from Keycloak
The API works in a similar way to a proxy and makes a call to the keycloak API to get the roles and return them.
Example response:
Copy {
"globalAccess": {
"roles": [
"ACTIVITI_USER",
"ACTIVITI_DEVOPS"
]
},
"applicationAccess":
[
{
"name": "simpleapp",
"roles": [
"ACTIVITI_USER"
]
},
{
"name": "myapp",
"roles": [
"ACTIVITI_USER"
]
}
]
}
Variables marked as displayable can be returned in the /tasks
and /process-instances
query service endpoints
In order to be returned in the response body of tasks and process instances, the variables should be marked as displayable in modeling app and be referenced in thevariableDefinitions
query parameter:
Example request for tasks:
GET /query/v1/tasks?variableDefinitions=fa22874c-ea1a-4243-9edf-33738ec5efd3&variableDefinitions=29a55c30-fb90-4224-ad42-e9fd275d5ed6
Example response:
Copy {
"list": {
"entries": [
{
"entry": {
"serviceName": "rb",
"serviceFullName": "rb",
"serviceVersion": "",
"appName": "simpleapp",
"appVersion": "1",
"id": "8f4fd681-b3fb-11ec-9085-acde48001122",
"name": "task-without-variable",
"createdDate": "2022-04-04T09:42:36.418+0000",
"priority": 0,
"processDefinitionId": "eda84c13-b0c8-11ec-8930-acde48001122",
"processInstanceId": "8f4faf6e-b3fb-11ec-9085-acde48001122",
"processDefinitionVersion": 1,
"processDefinitionName": "single-task-process-user-candidates",
"taskDefinitionKey": "Task_1869ft4",
"status": "CANCELLED",
"lastModified": "2022-04-04T09:42:37.065+0000",
"processVariables": [],
"candidateUsers": [
"testuser",
"hruser"
],
"candidateGroups": [],
"inFinalState": true,
"standalone": false
}
},
{
"entry": {
"serviceName": "rb",
"serviceFullName": "rb",
"serviceVersion": "",
"appName": "simpleapp",
"id": "611a75e3-e25e-11ec-a36b-acde48001122",
"assignee": "hruser",
"name": "task-with-variable",
"createdDate": "2022-06-02T10:25:52.557+0000",
"priority": 0,
"processDefinitionId": "Process_90W_3nLpw:1:7ff08eed-e252-11ec-946f-acde48001122",
"processInstanceId": "9515b86c-e25c-11ec-a36b-acde48001122",
"processDefinitionVersion": 1,
"processDefinitionName": "proc1",
"taskDefinitionKey": "UserTask_0j82lvh",
"completedBy": "hruser",
"status": "COMPLETED",
"formKey": "form-df33855d-cedf-4395-8c3d-de099b44bc99",
"completedDate": "2022-06-02T10:27:09.602+0000",
"duration": 77045,
"lastModified": "2022-06-02T10:27:09.602+0000",
"processVariables": [
{
"serviceName": "rb",
"serviceFullName": "rb",
"serviceVersion": "",
"appName": "simpleapp",
"type": "string",
"name": "displayableVar",
"createTime": "2022-06-02T10:14:48.510+0000",
"lastUpdatedTime": "2022-06-02T10:14:48.510+0000",
"value": "displayable value",
"markedAsDeleted": false,
"processInstanceId": "9515b86c-e25c-11ec-a36b-acde48001122",
"id": 502,
"variableDefinitionId": "fa22874c-ea1a-4243-9edf-33738ec5efd3",
"taskVariable": false
},
{
"serviceName": "rb",
"serviceFullName": "rb",
"serviceVersion": "",
"appName": "simpleapp",
"type": "string",
"name": "initializedVar",
"createTime": "2022-06-02T10:14:48.528+0000",
"lastUpdatedTime": "2022-06-02T10:14:48.528+0000",
"value": "initialized var value",
"markedAsDeleted": false,
"processInstanceId": "9515b86c-e25c-11ec-a36b-acde48001122",
"id": 503,
"variableDefinitionId": "29a55c30-fb90-4224-ad42-e9fd275d5ed6",
"taskVariable": false
}
],
"candidateUsers": [],
"candidateGroups": [],
"inFinalState": true,
"standalone": false
}
}
],
"pagination": {
"skipCount": 0,
"maxItems": 100,
"count": 50,
"hasMoreItems": false,
"totalItems": 50
}
}
}
Example request for process instances:
GET /query/v1/process-instances?variableDefinitions=29a55c30-fb90-4224-ad42-e9fd275d5ed6&variableDefinitions=9dc010f3-2243-4e2c-84dd-7eb0c86bb1aa
Example of response
Copy {
"list": {
"entries": [
{
"entry": {
"serviceName": "rb",
"serviceFullName": "rb",
"serviceVersion": "",
"appName": "simpleapp",
"id": "75d4ed49-e25c-11ec-a36b-acde48001122",
"processDefinitionId": "Process_90W_3nLpw:1:7ff08eed-e252-11ec-946f-acde48001122",
"processDefinitionKey": "Process_90W_3nLpw",
"initiator": "hruser",
"status": "CREATED",
"processDefinitionVersion": 1,
"processDefinitionName": "proc1",
"lastModified": "2022-06-02T10:12:08.340+0000",
"variables": [],
"inFinalState": false
}
},
{
"entry": {
"serviceName": "rb",
"serviceFullName": "rb",
"serviceVersion": "",
"appName": "simpleapp",
"id": "9515b86c-e25c-11ec-a36b-acde48001122",
"name": "proc1 - Jun 2, 2022, 9:18:37 AM",
"processDefinitionId": "Process_90W_3nLpw:1:7ff08eed-e252-11ec-946f-acde48001122",
"processDefinitionKey": "Process_90W_3nLpw",
"initiator": "hruser",
"startDate": "2022-06-02T10:14:48.530+0000",
"status": "RUNNING",
"processDefinitionVersion": 1,
"processDefinitionName": "proc1",
"lastModified": "2022-06-02T10:14:48.539+0000",
"variables": [
{
"serviceName": "rb",
"serviceFullName": "rb",
"serviceVersion": "",
"appName": "simpleapp",
"type": "string",
"name": "initializedVar",
"createTime": "2022-06-02T10:14:48.528+0000",
"lastUpdatedTime": "2022-06-02T10:14:48.528+0000",
"value": "initialized var value",
"markedAsDeleted": false,
"processInstanceId": "9515b86c-e25c-11ec-a36b-acde48001122",
"id": 503,
"variableDefinitionId": "29a55c30-fb90-4224-ad42-e9fd275d5ed6",
"taskVariable": false
},
{
"serviceName": "rb",
"serviceFullName": "rb",
"serviceVersion": "",
"appName": "simpleapp",
"type": "string",
"name": "displayableVar",
"createTime": "2022-06-02T10:27:09.606+0000",
"lastUpdatedTime": "2022-06-02T10:27:09.606+0000",
"value": "displayable value",
"markedAsDeleted": false,
"processInstanceId": "9515b86c-e25c-11ec-a36b-acde48001122",
"id": 504,
"variableDefinitionId": "9dc010f3-2243-4e2c-84dd-7eb0c86bb1aa",
"taskVariable": false
}
],
"inFinalState": false
}
}
],
"pagination": {
"skipCount": 0,
"maxItems": 100,
"count": 64,
"hasMoreItems": false,
"totalItems": 64
}
}
}
Improvements
Previously, if a connector failed a new integration request was not sent. Now you can send a new integration request so the process instance can continue its execution.
Software Updates
Updated Spring Boot version to 2.7.0.
Updated Spring Cloud version to 2021.0.2.
Bug fixes
When you ran an application with spring.jpa.open-in-view=false
, the query in org.activiti.cloud.services.query.rest.ProcessInstanceService#findAllWithVariables
did not enable the filter variableDefinitionIds
and subsequently returned all variables. Now the filter limits the returned variables.
Identity endpoints in the modeling service were only available to users with role Modeler
. Now all the endpoints are available to all authenticated users.