7.4.0
Release 7.4.0
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>
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 endpointsIn 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 the
variableDefinitions
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
}
}
}
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.
- Updated Spring Boot version to 2.7.0.
- Updated Spring Cloud version to 2021.0.2.
- When you ran an application with
spring.jpa.open-in-view=false
, the query inorg.activiti.cloud.services.query.rest.ProcessInstanceService#findAllWithVariables
did not enable the filtervariableDefinitionIds
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 1yr ago