# 7.4.0

The list of features `and` fixes provided by this release can be found [here](https://github.com/Activiti/Activiti/milestone/44?closed=1).

The Maven artifacts can be consumed from Alfresco Nexus:

```markup
<repositories>
  <repository>
    <id>activiti-releases</id>
    <url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases</url>
  </repository>
</repositories>
```

*Activiti Cloud:*

```markup
<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*

```markup
  <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 the`variableDefinitions` query parameter:

![](https://1262850880-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LHE-A0W4uh4yR1u7ql8%2Fuploads%2FkY19Nj4rOecOcK7hgeFe%2Fimage.png?alt=media\&token=5421bd87-23c6-4032-baff-30ba6bb56498)

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.  &#x20;

### 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.
