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

![](/files/WaqZJgsvfuejbUKoHSd8)

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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://activiti.gitbook.io/activiti-7-developers-guide/releases/7.4.0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
