7.4.0

Release 7.4.0
The list of features and fixes provided by this release can be found here.
The Maven artifacts can be consumed from Alfresco Nexus:
<repositories>
<repository>
<id>activiti-releases</id>
<url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases</url>
</repository>
</repositories>
Activiti Cloud:
<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
<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):
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
  • GET /v1/identity/roles
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:
{
"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:
{
"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
{
"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.
Last modified 5mo ago