# informat.bpmn 工作流操作

## 概述

使用`informat.bpmn`查询和创建工作流实例，工作流任务

## processEngine

ProcessEngine是Flowable流程引擎的核心组件，负责管理流程定义、流程实例、任务、变量、事件等各个方面，为用户提供了一套完整的流程管理接口。

```javascript
informat.bpmn.processEngine()
```

::: tip 提示
此接口需要license中包含`系统函数调用`模块

[参考ProcessEngine文档](https://javadoc.io/static/org.flowable/flowable-engine/6.7.2/org/flowable/engine/ProcessEngine.html)

:::

**示例**

```javascript
// 设置工作流任务负责人
let processEngine = informat.bpmn.processEngine();
let taskService = processEngine.getTaskService();
taskService.setAssignee('dcc50d2e-0601-11ef-92a9-0e6cd3d9f023', 'zhangsan');
```

## getBpmnProcessDefineList

查询工作流定义列表

```javascript
informat.bpmn.getBpmnProcessDefineList(module, query);
```

| 参数       | 类型                                                          | 描述       |
|----------|-------------------------------------------------------------|----------|
| moduleId | `String`                                                    | 工作流模块标识符 |
| query    | [BpmnProcessQuery](/guide/script/model.md#bpmnprocessquery) | 查询条件     |

**返回值**

返回值为符合条件的工作流定义列表,类型为 Array<[BpmnProcess](/guide/script/model.md#bpmnprocess)>;

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getBpmnProcessDefineList('flow', {
    accountId: 'zhangsan',
    name: '请假'
})
```
```json [返回值]
[
  {
    "color": "c2",
    "createTime": 1692861587735,
    "icon": "store",
    "id": "s615lvvta7l7",
    "key": "leave",
    "name": "请假流程",
    "remark": "",
    "rowNumber": 1,
    "updateTime": 1692861587735
  }
]
```
:::

## isMultiInstanceActivity

判断节点是否为多实例节点

```javascript
informat.bpmn.isMultiInstanceActivity(procDefId, activityId)
```

**入参**

| 参数         | 类型       | 描述     |
|------------|----------|--------|
| procDefId  | `String` | 流程定义ID |
| activityId | `String` | 节点ID   |

**返回值**

返回值Boolean

**示例**

::: code-group

```javascript [调用]
informat.bpmn.isMultiInstanceActivity('process_uotiqkw6kk5d:22:56aa67bf-8b65-11ee-adfa-a6c0b0be7615', 'Activity_121ubs9');
```
```json [返回值]
true
```
:::

## queryInstanceList

查询工作流实例列表

```javascript
informat.bpmn.queryInstanceList(module, query)
```

**入参**

| 参数       | 类型                                           | 描述       |
|----------|----------------------------------------------|----------|
| moduleId | `String`                                     | 工作流模块标识符 |
| query    | [BpmnInstanceQuery](/guide/script/model.md#bpmninstancequery) | 查询条件     |

**返回值**

返回值为符合条件的工作流实例列表,类型为 Array<[BpmnInstance](/guide/script/model.md#bpmninstance)>;

**示例-通过状态查询工作流实例**


::: code-group

```javascript [调用]
informat.bpmn.queryInstanceList('flow', {
    pageIndex: 1,
    pageSize: 10,
    processDefineId: 'leave',
    status: 'doing'
});
```
```json [返回值]
[
  {
    "active": true,
    "businessKey": "s615lvvta7l7",
    "id": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
    "isActive": true,
    "name": "请假",
    "procDefId": "process_idy5gsmor6ym:78:3663d930-ca24-11ed-b464-9604767b6c5e",
    "procDefName": "请假流程",
    "procInstId": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
    "startTime": 1679649411594,
    "startUserAvatar": "pic15.png",
    "startUserId": "zhangsan",
    "startUserName": "张三",
    "taskCount": 0,
    "tenantId": "g09aj7cus3d8s_croe0zft168y3_pwlfcrmbm46t"
  }
]
```

:::

**示例-通过数据表记录 ID 查询工作流实例**

::: code-group

```javascript [调用]
informat.bpmn.queryInstanceList('flow', {
    pageIndex: 1,
    pageSize: 10,
    status: 'doing',
    processDefineId: 'leave',
    varList: [{ 'name': 'form_recordId', 'value': 'vem8fxf4ooztl' }]
});
```
```json [返回值]
[
  {
    "active": true,
    "businessKey": "s615lvvta7l7",
    "id": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
    "isActive": true,
    "name": "请假",
    "procDefId": "process_idy5gsmor6ym:78:3663d930-ca24-11ed-b464-9604767b6c5e",
    "procDefName": "请假流程",
    "procInstId": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
    "startTime": 1679649411594,
    "startUserAvatar": "pic15.png",
    "startUserId": "zhangsan",
    "startUserName": "张三",
    "taskCount": 0,
    "tenantId": "g09aj7cus3d8s_croe0zft168y3_pwlfcrmbm46t"
  }
]
```
:::

## addComment

添加评论

```javascript
informat.bpmn.addComment(moduleId, taskId, msg)
```

**入参**

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 任务 ID    |
| msg      | `String` | 评论内容     |

**返回值**

返回值为新增评论的 ID 记录

**示例**

::: code-group

```javascript [调用]
informat.bpmn.addComment('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', '今天的天气特别好');
```
```text [返回值]
c5cyqgj06avp0
```

:::

::: warning 注意
存入数据库的 message 格式为：

```json
{
  "type": "doc",
  "content": [
    {
      "type": "paragraph",
      "content": [
        {
          "type": "text",
          "text": "今天的天气特别好"
        }
      ]
    }
  ]
}
```

:::

## addCommentWithUser

指定用户添加评论

```javascript
informat.bpmn.addCommentWithUser(moduleId, taskId, msg, userId);
```

**入参**

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 任务 ID    |
| msg      | `String` | 评论内容     |
| userId   | `String` | 指定的评论用户ID |

**返回值**

返回值为新增评论的 ID 记录

**示例**

::: code-group

```javascript [调用]
informat.bpmn.addCommentWithUser('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', '同意', 'zhangsan');
```
```text [返回值]
c263580f-9402-11ee-b865-eed108c67451
```

:::

::: warning 注意
存入数据库的 message 格式为：

```json
{
  "type": "doc",
  "content": [
    {
      "type": "paragraph",
      "content": [
        {
          "type": "text",
          "text": "同意"
        }
      ]
    }
  ]
}
```

:::

## deleteComment

删除评论

```javascript
informat.bpmn.deleteComment(moduleId, taskId, id)
```

**入参**

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 任务 ID    |
| id       | `String` | 评论ID     |

**返回值**

删除的评论数量

**示例**

::: code-group

```javascript [调用]
informat.bpmn.deleteComment('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'b8sy2k46dfckh');
```
```text [返回值]
1
```

:::

## queryCommentListCount

查询工作流任务评论列表总数

```javascript
informat.bpmn.queryCommentListCount(moduleId, query);
```

| 参数       | 类型                                          | 描述       |
|----------|---------------------------------------------|----------|
| moduleId | `String`                                    | 工作流模块标识符 |
| query    | [BpmnCommentQuery](/guide/script/model.md#bpmncommentquery) | 查询条件     |

**返回值**

返回值为符合条件的评论总数,类型为`Integer`

**示例**

::: code-group

```javascript [调用]
informat.bpmn.queryCommentListCount('flow', {
    procInstId: '1554f565-3e48-11ed-8392-a210f8dfa819',
    taskId: 'bf5e798f-3f1b-11ed-b5f4-a210f8dfa819'
});
```
```text [返回值]
1
```

:::

## queryCommentList

查询工作流评论列表

```javascript
informat.bpmn.queryCommentList(module, query);
```

| 参数       | 类型                                          | 描述       |
|----------|---------------------------------------------|----------|
| moduleId | `String`                                    | 工作流模块标识符 |
| query    | [BpmnCommentQuery](/guide/script/model.md#bpmncommentquery) | 查询条件     |

**返回值**

返回值为符合条件的工作流评论列表,类型为 Array<[BpmnComment](/guide/script/model.md#bpmncomment)>;

**示例**


::: code-group

```javascript [调用]
informat.bpmn.queryCommentList('flow', {
    pageIndex: 1,
    pageSize: 10,
    moduleId: 'flow',
    procInstId: '1554f565-3e48-11ed-8392-a210f8dfa819',
    taskId: 'bf5e798f-3f1b-11ed-b5f4-a210f8dfa819'
});
```
```json [返回值]
[
  {
    "userId": "liutao",
    "procInstId": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
    "taskId": "15571850-3e48-11ed-8392-a210f8dfa819",
    "startTime": 1664271502000,
    "message": "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"同意\"}]}]}"
  }
]
```

:::

## queryInstanceListCount

查询工作流实例列表总数

```javascript
informat.bpmn.queryInstanceListCount(moduleId, query);
```

| 参数       | 类型                                           | 描述       |
|----------|----------------------------------------------|----------|
| moduleId | `String`                                     | 工作流模块标识符 |
| query    | [BpmnInstanceQuery](/guide/script/model.md#bpmninstancequery) | 查询条件     |

**返回值**

返回值为符合条件的工作流实例列表总数,类型为`Integer`

**示例**

::: code-group

```javascript [调用]
informat.bpmn.queryInstanceListCount('flow', {
    moduleId: 'flow',
    processDefineId: 'insertUser',
    status: 'doing'
});
```
```text [返回值]
1
```

:::

## queryInstanceById

查询工作流实例

```javascript
informat.bpmn.queryInstanceById(moduleId, instanceId);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |

**返回值**

返回值为符合条件的实例,类型为[BpmnInstance](/guide/script/model.md#bpmninstance)

**示例**


::: code-group

```javascript [调用]
informat.bpmn.queryInstanceById('flow', '9cc1e6fa-ca24-11ed-8bc0-be634eacf49a');
```
```json [返回值]
{
  "active": true,
  "businessKey": "s615lvvta7l7",
  "id": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
  "isActive": true,
  "name": "请假",
  "procDefId": "process_idy5gsmor6ym:78:3663d930-ca24-11ed-b464-9604767b6c5e",
  "procDefName": "请假流程",
  "procInstId": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
  "startTime": 1679649411594,
  "startUserAvatar": "pic15.png",
  "startUserId": "zhangsan",
  "startUserName": "zhangsan",
  "taskCount": 0,
  "tenantId": "g09aj7cus3d8s_croe0zft168y3_pwlfcrmbm46t"
}
```

:::

## queryTaskList

查询工作流任务列表

```javascript
informat.bpmn.queryTaskList(moduleId, query);
```

| 参数       | 类型                                       | 描述       |
|----------|------------------------------------------|----------|
| moduleId | `String`                                 | 工作流模块标识符 |
| query    | [BpmnTaskQuery](/guide/script/model.md#bpmntaskquery) | 查询条件     |

**返回值**

返回值为符合条件的任务列表,类型为Array<[BpmnTask](/guide/script/model.md#bpmntask)>;

**示例**


::: code-group

```javascript [调用]
informat.bpmn.queryTaskList('flow', {
    pageIndex: 1,
    pageSize: 10,
    procInstId: '9cc1e6fa-ca24-11ed-8bc0-be634eacf49a',
    status: 'doing'
});
```
```json [返回值]
[
  {
    "assignee": "zhangsan",
    "assigneeAvatar": "c4b936e826fe45b38e1b4072c79a7a79.jpg",
    "assigneeName": "张三",
    "duration": 0,
    "executionId": "9cdf8124-ca24-11ed-8bc0-be634eacf49a",
    "id": "9cf63d7a-ca24-11ed-8bc0-be634eacf49a",
    "name": "部门经理审批",
    "procDefId": "process_idy5gsmor6ym:78:3663d930-ca24-11ed-b464-9604767b6c5e",
    "procDefName": "请假流程",
    "procInstId": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
    "procInstName": "请假",
    "startTime": 1679649411860,
    "startUserAvatar": "pic15.png",
    "startUserId": "zhangsan",
    "startUserName": "zhangsan",
    "taskDefKey": "Activity_0ofrc9c",
    "tenantId": "g09aj7cus3d8s_croe0zft168y3_pwlfcrmbm46t"
  }
]
```

:::

## queryTaskListCount

查询工作流任务列表总数

```javascript
informat.bpmn.queryTaskListCount(moduleId, query);
```

| 参数       | 类型              | 描述       |
|----------|-----------------|----------|
| moduleId | `String`        | 工作流模块标识符 |
| query    | [BpmnTaskQuery](/guide/script/model.md#bpmntaskquery) | 查询条件     |

**返回值**

返回值为符合条件的任务总数,类型为`Integer`

**示例**

::: code-group

```javascript [调用]
informat.bpmn.queryTaskListCount('flow', {
    procInstId: '9cc1e6fa-ca24-11ed-8bc0-be634eacf49a',
    status: 'doing'
});
```
```text [返回值]
1
```
:::


## queryTaskById

查询工作流任务

```javascript
informat.bpmn.queryTaskById(moduleId, taskId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 任务 ID    |

**返回值**

返回值为符合条件的任务,类型为[BpmnTask](/guide/script/model.md#bpmntask)

**示例**

::: code-group

```javascript [调用]
informat.bpmn.queryTaskById('flow', '9cf63d7a-ca24-11ed-8bc0-be634eacf49a');
```
```json [返回值]
{
  "assignee": "zhangsan",
  "assigneeAvatar": "c4b936e826fe45b38e1b4072c79a7a79.jpg",
  "assigneeName": "zhangsan",
  "duration": 0,
  "executionId": "9cdf8124-ca24-11ed-8bc0-be634eacf49a",
  "id": "9cf63d7a-ca24-11ed-8bc0-be634eacf49a",
  "name": "部门经理审批",
  "procDefId": "process_idy5gsmor6ym:78:3663d930-ca24-11ed-b464-9604767b6c5e",
  "procDefName": "请假流程",
  "procInstId": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
  "procInstName": "请假",
  "startTime": 1679649411860,
  "startUserAvatar": "pic15.png",
  "startUserId": "zhangsan",
  "startUserName": "zhangsan",
  "taskDefKey": "Activity_0ofrc9c",
  "tenantId": "g09aj7cus3d8s_croe0zft168y3_pwlfcrmbm46t"
}
```

:::

## setInstanceVar

设置流程实例变量

```javascript
informat.bpmn.setInstanceVar(moduleId, instanceId, name, value);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |
| name       | `String` | 变量名称     |
| value      | `Object` | 变量值      |

**示例**

```javascript
informat.bpmn.setInstanceVar('flow', 'a8bbc752-24af-11ef-bcd1-a6c0b0be7615', 'userName', '张三');
```

## getInstanceVar

获取流程实例变量

```javascript
informat.bpmn.getInstanceVar(moduleId, instanceId, name);
```

| 参数         | 类型       | 描述                                                          |
|------------|----------|-------------------------------------------------------------|
| moduleId   | `String` | 工作流模块标识符                                                    |
| instanceId | `String` | 流程实例 ID                                                     |
| name       | `String` | 变量名称，比如 form_recordId 能够获取工作流启动表的记录id，form 能够获取工作流启动表的表数据对象 |

**返回值**

类型`Object`，返回值为变量值

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getInstanceVar('flow', '9cc1e6fa-ca24-11ed-8bc0-be634eacf49a', 'userName');
```
```text [返回值]
张三
```

:::

## getInstanceVars

获取流程实例所有变量

```javascript
informat.bpmn.getInstanceVars(moduleId, instanceId);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |

**返回值**

类型`Object`，返回值为所有变量键值队

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getInstanceVars('flow', '9cc1e6fa-ca24-11ed-8bc0-be634eacf49a');
```
```json [返回值]
{
  "reason": "家里有事",
  "instanceId": "9cc1e6fa-ca24-11ed-8bc0-be634eacf49a",
  "form": {
    "approver": {
      "avatar": "c4b936e826fe45b38e1b4072c79a7a79.jpg",
      "id": "zhangsan",
      "name": "张三"
    },
    "id": "isvuoz412f1ve",
    "title": "333",
    "day": 5,
    "status": "1"
  },
  "initiator": "zhangsan",
  "project": "项目管理",
  "taskName": "任务",
  "userName": "张三",
  "taskStatus": "进行中"
}
```

:::

## setInstanceLocalVar

设置流程实例局部变量

```javascript
informat.bpmn.setInstanceLocalVar(moduleId, instanceId, name, value);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |
| name       | `String` | 变量名称     |
| value      | `Object` | 变量值      |

**示例**

```javascript
informat.bpmn.setInstanceLocalVar('flow', 'a8bbc752-24af-11ef-bcd1-a6c0b0be7615', 'project', '项目管理');
```

## getInstanceLocalVar

获取流程实例局部变量

```javascript
informat.bpmn.getInstanceLocalVar(moduleId, instanceId, name);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |
| name       | `String` | 变量名称     |

**返回值**

类型`Object`，返回值为变量值

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getInstanceLocalVar('flow', 'a8bbc752-24af-11ef-bcd1-a6c0b0be7615', 'project');

```
```text [返回值]
项目管理
```

:::

## setTaskVar

设置流程任务变量

```javascript
informat.bpmn.setTaskVar(moduleId, taskId, name, value);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| name     | `String` | 变量名称     |
| value    | `Object` | 变量值      |

**示例**

```javascript
informat.bpmn.setTaskVar('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'taskName', '任务');
```

## getTaskVar

获取流程任务变量

```javascript
informat.bpmn.getTaskVar(moduleId, taskId, name);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| name     | `String` | 变量名称     |

**返回值**

类型`Object`，返回值为变量值

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getTaskVar('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'taskName');
```
```text [返回值]
任务
```
:::

## getTaskVars

获取流程任务变量

```javascript
informat.bpmn.getTaskVars(moduleId, taskId, localVariable);
```

| 参数            | 类型        | 描述       |
|---------------|-----------|----------|
| moduleId      | `String`  | 工作流模块标识符 |
| taskId        | `String`  | 流程任务 ID  |
| localVariable | `Boolean` | 是否是本地变量  |

**返回值**

类型`Object`，返回值为变量值

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getTaskVars('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', false);
```
```json [返回值]
{
  "name": "张三"
}
```

:::

## setTaskLocalVar

设置流程任务局部变量

```javascript
informat.bpmn.setTaskLocalVar(moduleId, taskId, name, value);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| name     | `String` | 变量名称     |
| value    | `Object` | 变量值      |

**示例**

```javascript
informat.bpmn.setTaskLocalVar('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'taskStatus', '进行中');
```

:::warning 注意事项
在流程任务节点开启[`将表单数据存储为任务变量（任务变量仅当前任务可见）`](/guide/bpmn/vars.md#任务变量)时，设置流程任务变量的表单信息,**变量名称**需要使用
`${form}_task`,其中${form}为表单标识符
:::

## getTaskLocalVar

获取流程任务局部变量

```javascript
informat.bpmn.getTaskLocalVar(moduleId, taskId, name);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |
| name       | `String` | 变量名称     |

**返回值**

类型`Object`，返回值为变量值

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getTaskLocalVar('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'taskStatus');
```
```text [返回值]
进行中
```
:::

:::warning 注意事项
在流程任务节点开启[`将表单数据存储为任务变量（任务变量仅当前任务可见）`](/guide/bpmn/vars.md#任务变量)时，获取流程任务变量的表单信息,**变量名称**需要使用
`${form}_task`,其中${form}为表单标识符
:::

## createInstance

创建工作流实例

```javascript
informat.bpmn.createInstance(moduleId, processDefineId, startUserId, form, vars);
```

| 参数              | 类型       | 描述       |
|-----------------|----------|----------|
| moduleId        | `String` | 工作流模块标识符 |
| processDefineId | `String` | 工作流定义标识符 |
| startUserId     | `String` | 发起人账号 ID |
| form            | `Object` | 数据表记录    |
| vars            | `Object` | 启动变量     |

**返回值**

类型`String`，返回值为流程实例ID

**示例**

::: code-group

```javascript [调用]
let form = {
    level: 1,
    sex: 'man',
    idNo: '450323111111111111',
    post: '刚刚',
    biographicalNote: {
        'id': 'qqc5uxend8j5zg8annd6w.crx',
        'md5': '0b3df75922df4b125309577c93645d0b',
        'name': 'JSON-handle_0.6.1.crx',
        'path': 'do5u69j9ff3ap/jcn3qaf48z6dh/qqc5uxend8j5zg8annd6w.crx',
        'size': 197147,
    },
    name: '肖建宇',
    status: 'atInterview',
};

let vars = {
    startTime: new Date(),
};

informat.bpmn.createInstance('flow', 'insertUser', 'yvkc2kwpy3xzr', form, vars);
```
```text [返回值]
3cc15cd9-8b9f-11ee-bbf4-a6c0b0be7615
```
:::

## setTaskAssignee

设置任务的处理人

```javascript
informat.bpmn.setTaskAssignee(moduleId, taskId, userId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| userId   | `String` | 处理人账号 ID |

**示例**

```javascript
informat.bpmn.setTaskAssignee('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'yvkc2kwpy3xzr');
```

## setTaskOwner

设置任务的所有者

```javascript
informat.bpmn.setTaskOwner(moduleId, taskId, userId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| userId   | `String` | 所有者账号 ID |

**示例**

```javascript
informat.bpmn.setTaskOwner('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'yvkc2kwpy3xzr');
```

## claimTask

指派任务（将任务的责任分配给一个具体的参与者）

::: info
如果任务已经被领取，则不能指派任务。
:::

```javascript
informat.bpmn.claimTask(moduleId, taskId, userId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| userId   | `String` | 处理人账号 ID |

**示例**

```javascript
informat.bpmn.claimTask('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'zhangsan');
```

## unclaimTask

取消任务的指派

```javascript
informat.bpmn.unclaimTask(moduleId, taskId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |

**示例**

```javascript
informat.bpmn.unclaimTask('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615');
```

## transferTask

转交任务（将任务的所有权和处理权从当前参与者转移给另一个参与者，即将任务转交给另一个参与者）

```javascript
informat.bpmn.transferTask(moduleId, taskId, userId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| userId   | `String` | 处理人账号 ID |

**示例**

```javascript
informat.bpmn.transferTask('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'zhangsan');
```

## delegateTask

委托任务（将任务的责任从当前参与者转移给另一个参与者，即委派任务给另一个参与者）

```javascript
informat.bpmn.delegateTask(moduleId, taskId, userId, autoDelegate);
```

| 参数           | 类型        | 描述       |
|--------------|-----------|----------|
| moduleId     | `String`  | 工作流模块标识符 |
| taskId       | `String`  | 流程任务 ID  |
| userId       | `String`  | 处理人账号 ID |
| autoDelegate | `Boolean` | 是否自动委派   |

::: warning 注意事项
需要注意的是，当`autoDelegate`为 true 时，需要确保已经定义了自动委派规则，以确保任务能够正确地被委派给合适的参与者。同时，需要确保自动委派不会引起死循环或其他问题，以保证流程的稳定性和可靠性。
:::

**示例**

```javascript
informat.bpmn.delegateTask('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'zhangsan', true);
```

## getIdentityLinksForTask

获取与任务相关联的身份关联列表

```javascript
informat.bpmn.getIdentityLinksForTask(moduleId, taskId);
```

::: info
用于查询任务相关的参与者或候选人。通过查询身份关联列表，可以确定哪些用户或角色与任务相关联，并对任务进行相应的授权和管理
:::

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |

**返回值**

类型 Array<[BpmnIdentityLink](/guide/script/model.md#bpmnidentitylink)>;

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getIdentityLinksForTask('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615');
```
```json [返回值]
[
  {
    "groupId": "admin",
    "id": "662e2b7b-e8e5-11ed-9724-9604767b6c5e",
    "taskId": "a8c27e21-24af-11ef-bcd1-a6c0b0be7615",
    "type": "candidate"
  },
  {
    "taskId": "a8c27e21-24af-11ef-bcd1-a6c0b0be7615",
    "type": "owner",
    "userId": "zhangsan"
  }
]
```
:::

## addTaskCandidateRole

向任务添加候选角色

```javascript
informat.bpmn.addTaskCandidateRole(moduleId, taskId, roleId);
```

::: tip
候选角色是指可以参与到任务处理中的应用角色，例如“开发人员”、“测试人员”等。
:::

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| roleId   | `String` | 应用角色 ID  |

**示例**

```javascript
informat.bpmn.addTaskCandidateRole('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'tester');
```

## deleteTaskCandidateRole

删除任务候选角色。

```javascript
informat.bpmn.deleteTaskCandidateRole(moduleId, taskId, roleId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| roleId   | `String` | 应用角色 ID  |

**示例**

```javascript
informat.bpmn.deleteTaskCandidateRole('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'tester');
```

## addTaskCandidateUser

向任务添加候选用户

```javascript
informat.bpmn.addTaskCandidateUser(moduleId, taskId, userId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| userId   | `String` | 候选用户 ID  |

**示例**

```javascript
informat.bpmn.addTaskCandidateUser('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'zhangsan');
```

## deleteTaskCandidateUser

删除任务候选用户

```javascript
informat.bpmn.deleteTaskCandidateUser(moduleId, taskId, userId);
```

| 参数       | 类型       | 描述       |
|----------|----------|----------|
| moduleId | `String` | 工作流模块标识符 |
| taskId   | `String` | 流程任务 ID  |
| userId   | `String` | 候选用户 ID  |

**示例**

```javascript
informat.bpmn.deleteTaskCandidateUser('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'zhangsan');
```

## completeTask

完成任务

```javascript
informat.bpmn.completeTask(moduleId, taskId, variables);
```

| 参数        | 类型       | 描述                       |
|-----------|----------|--------------------------|
| moduleId  | `String` | 工作流模块标识符                 |
| taskId    | `String` | 流程任务 ID                  |
| variables | `Object` | 完成任务时需要传递给后续步骤的输出数据和流程变量 |

**示例**

```javascript
informat.bpmn.completeTask('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', null);
```

## moveToActivity

将流程节点从当前位置移动到另一个节点

```javascript
informat.bpmn.moveToActivity(moduleId, taskId, targetActivityId);
```

| 参数               | 类型       | 描述                                      |
|------------------|----------|-----------------------------------------|
| moduleId         | `String` | 工作流模块标识符                                |
| taskId           | `String` | 流程任务 ID                                 |
| targetActivityId | `String` | 目标节点 ID（工作流「设置流程图 >> 选中节点 >> 基本信息」可以查到） |

**示例**

```javascript
informat.bpmn.moveToActivity('flow', 'a8c27e21-24af-11ef-bcd1-a6c0b0be7615', 'Activity_0y15knc');
```

## revokeInstance

撤销流程实例

```javascript
informat.bpmn.revokeInstance(moduleId, instanceId, reason);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |
| reason     | `String` | 取消理由     |

**示例**

```javascript
informat.bpmn.revokeInstance('flow', 'a8bbc752-24af-11ef-bcd1-a6c0b0be7615', '取消流程');
```

## deleteInstance

删除流程实例

```javascript
informat.bpmn.deleteInstance(moduleId, instanceId, reason);
```

::: warning 注意事项
当一个流程实例被删除时，该流程将被终止，并将清除所有与该流程实例相关的数据和状态信息。
:::

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |
| reason     | `String` | 删除理由     |

**示例**

```javascript
informat.bpmn.deleteInstance('flow', 'a8bbc752-24af-11ef-bcd1-a6c0b0be7615', '删除流程');
```

## sendMessage

向流程实例或执行实例发送消息

```javascript
informat.bpmn.sendMessage(moduleId, instanceId, messageName);
```

| 参数          | 类型       | 描述       |
|-------------|----------|----------|
| moduleId    | `String` | 工作流模块标识符 |
| instanceId  | `String` | 流程实例 ID  |
| messageName | `String` | 消息名称     |

**示例**

```javascript
informat.bpmn.sendMessage('flow', '9cd49233-24b2-11ef-bcd1-a6c0b0be7615', '消息A');
```

## sendSignal

向流程实例或执行实例发送信号

```javascript
informat.bpmn.sendSignal(moduleId, instanceId, signalName);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |
| signalName | `String` | 信号名称     |

**示例**

```javascript
informat.bpmn.sendSignal('flow', '9cd49233-24b2-11ef-bcd1-a6c0b0be7615', '信号A');
```

## trigger

触发一个正在等待的流程实例

```javascript
informat.bpmn.trigger(moduleId, instanceId, activityId);
```

| 参数         | 类型       | 描述                         |
|------------|----------|----------------------------|
| moduleId   | `String` | 工作流模块标识符                   |
| instanceId | `String` | 流程实例 ID                    |
| activityId | `String` | 中间事件 ID（在流程设计节点的基本信息里可以查看） |

**示例**

```javascript
informat.bpmn.trigger('flow', '9cd49233-24b2-11ef-bcd1-a6c0b0be7615', 'Activity_0jl4nsq');
```

## getProcessDefineXml

获取工作流定义的xml内容

```javascript
informat.bpmn.getProcessDefineXml(moduleId, procDefId);
```

| 参数        | 类型       | 描述       |
|-----------|----------|----------|
| moduleId  | `String` | 工作流模块标识符 |
| procDefId | `String` | 流程定义ID   |

**示例**


::: code-group

```javascript [调用]
informat.bpmn.getProcessDefineXml('flow', 'process_idy5gsmor6ym:100:ae4923cb-6d64-11ee-a8da-eed108c67451');
```

```xml [返回值]
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:flowable="http://flowable.org/bpmn"
             xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
             xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:informat="http://informat.cn/schema/bpmn/ip"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="Examples">
    <process id="process_uotiqkw6kk5d" name="项目变更流程" isExecutable="true"
    ...
    >
    <message id="message" name="消息"/>
    <bpmndi:BPMNDiagram id="BPMNDiagram_1"
    ...
    >
</definitions>
```
:::


## getProcessDefineXmlObject

解析工作流定义XML，返回对应的JSON对象

```javascript
informat.bpmn.getProcessDefineXmlObject(moduleId, procDefId);
```

| 参数        | 类型       | 描述       |
|-----------|----------|----------|
| moduleId  | `String` | 工作流模块标识符 |
| procDefId | `String` | 流程定义ID   |


**返回值**

返回值为符合条件的任务,类型为[BpmnTask](/guide/script/model.md#bpmnprocessxml)

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getProcessDefineXml('flow', 'process_rzuwivdv487t:1:8aed09cb-fd70-11f0-ae9f-feb6f6e499c9');
```

```json [返回值]
{
  "flowList": [
    {
      "id": "Flow_ToSupervisor",
      "name": "提交审批",
      "remark":"同意",
      "sourceRef": "StartEvent_1",
      "targetRef": "UserTask_DirectSupervisor"
    },
    {
      "id": "Flow_Approve",
      "name": "同意",
      "sourceRef": "UserTask_DirectSupervisor",
      "targetRef": "EndEvent_Approve"
    },
    {
      "id": "Flow_Reject",
      "conditionExpression":"${form.totalDays==3}"
      "name": "驳回",
      "sourceRef": "UserTask_DirectSupervisor",
      "targetRef": "EndEvent_Reject"
    }
  ],
  "id": "process_rzuwivdv487t",
  "name": "请假审批流程",
  "nodeList": [
    {
      "id": "StartEvent_1",
      "name": "",
      "type": "startEvent"
    },
    {
      "id": "UserTask_DirectSupervisor",
      "name": "直接上级审批",
      "taskSetting": {
        "autocompleteNodeIds": [],
        "enableAutocomplete": false,
        "formSetting": {
          "completeSetVarList": [
            {
              "expression": "${Context.userId()}",
              "fieldId": "sruifsds4sqgd"
            },
            {
              "expression": "${Date.sysdate()}",
              "fieldId": "eu26q3x2tjwfc"
            }
          ],
          "enableShowProcessInfo": false,
          "formDesignerFieldSettingList": [],
          "formType": "Form",
          "id": "form",
          "localVariable": false,
          "tableFieldSettingList": [
            {
              "editable": false,
              "id": "lqvcgyi7g9z51",
              "visible": true
            },
            {
              "editable": false,
              "id": "utpt26idm3yg4",
              "visible": true
            },
            {
              "editable": false,
              "id": "wic79p7snatwg",
              "visible": true
            },
            {
              "editable": false,
              "id": "l88pwp787rghc",
              "visible": true
            },
            {
              "editable": false,
              "id": "rrllebhnpehsr",
              "visible": true
            },
            {
              "editable": false,
              "id": "yml19s62xf8ch",
              "visible": true
            },
            {
              "editable": false,
              "id": "qphuwqxdqf9l3",
              "visible": true
            },
            {
              "editable": false,
              "id": "qw5sx5kzv1y8t",
              "visible": true
            },
            {
              "editable": false,
              "id": "rsovlr2l2bdan",
              "visible": true
            },
            {
              "editable": false,
              "id": "sruifsds4sqgd",
              "visible": true
            },
            {
              "editable": false,
              "id": "eu26q3x2tjwfc",
              "visible": true
            },
            {
              "editable": true,
              "id": "ukjoz8ztq3m5m",
              "visible": true
            }
          ],
          "tableId": "h6u3t0in1tca2",
          "toolBarButtonList": [
            {
              "action": "TaskComplete",
              "actionSetting": {
                "enableComment": false,
                "bpmnModuleId": "nn2fbs4iv0uh1",
                "taskIdExpression": "${task.id}",
                "tableId": "h6u3t0in1tca2"
              },
              "buttonSetting": {
                "enableConfirm": false,
                "hideName": false,
                "icon": "check-double",
                "plain": false,
                "round": false,
                "type": "primary"
              },
              "controlType": "button",
              "hideExpression": "${task.endTime != null || task.assignee != user.id}",
              "id": "approve",
              "inputSetting": {
                "width": 200
              },
              "isDirectory": false,
              "labelSetting": {
                "bold": false,
                "fontSize": 13
              },
              "name": "同意",
              "selectSetting": {
                "multiple": false,
                "optionList": [],
                "width": 200
              },
              "switchSetting": {
                "type": "primary"
              }
            },
            {
              "action": "TaskMoveToActivity",
              "actionSetting": {
                "activityId": "EndEvent_Reject",
                "enableComment": true,
                "bpmnModuleId": "nn2fbs4iv0uh1",
                "taskIdExpression": "${task.id}",
                "tableId": "h6u3t0in1tca2"
              },
              "buttonSetting": {
                "enableConfirm": false,
                "hideName": false,
                "icon": "check-double",
                "plain": false,
                "round": false,
                "type": "primary"
              },
              "controlType": "button",
              "hideExpression": "${task.endTime != null || task.assignee != user.id}",
              "id": "reject",
              "inputSetting": {
                "width": 200
              },
              "isDirectory": false,
              "labelSetting": {
                "bold": false,
                "fontSize": 13
              },
              "name": "驳回",
              "selectSetting": {
                "multiple": false,
                "optionList": [],
                "width": 200
              },
              "switchSetting": {
                "type": "primary"
              }
            }
          ]
        },
        "noAssigneeHandleType": "UnClaimed",
        "userAction": "Form"
      },
      "type": "userTask"
    },
    {
      "id": "EndEvent_Approve",
      "name": "批准完成",
      "type": "endEvent"
    },
    {
      "id": "EndEvent_Reject",
      "name": "驳回完成",
      "type": "endEvent"
    }
  ],
  "startSetting": {
    "activityUserList": [],
    "draftNameVar": "${String.concat(User.user(initiator).name,'的请假申请草稿')}",
    "enableStartForm": true,
    "formSetting": {
      "completeSetVarList": [],
      "enableShowProcessInfo": false,
      "formDesignerFieldSettingList": [],
      "formType": "Form",
      "id": "form",
      "localVariable": false,
      "tableFieldSettingList": [
        {
          "editable": false,
          "id": "leaveNo",
          "visible": true
        },
        {
          "editable": false,
          "id": "applicant",
          "visible": true
        },
        {
          "editable": true,
          "id": "leaveType",
          "visible": true
        },
        {
          "editable": true,
          "id": "startDate",
          "visible": true
        },
        {
          "editable": true,
          "id": "endDate",
          "visible": true
        },
        {
          "editable": true,
          "id": "totalDays",
          "visible": true
        },
        {
          "editable": true,
          "id": "reason",
          "visible": true
        },
        {
          "editable": true,
          "id": "attachment",
          "visible": true
        },
        {
          "editable": false,
          "id": "status",
          "visible": true
        }
      ],
      "tableId": "leaveApplication",
      "toolBarButtonList": []
    },
    "instanceNameVar": "${String.concat(User.user(initiator).name,'的请假申请')}",
    "instanceToolbarButtonList": [],
    "startFormToolbarButtonList": [],
    "startVarList": []
  }
}
```
:::


## generateProcessDiagram

生成工作流流程图图片

```javascript
informat.bpmn.generateProcessDiagram(moduleId, procDefId, config);
```

| 参数        | 类型                                                  | 描述       |
|-----------|-----------------------------------------------------|----------|
| moduleId  | `String`                                            | 工作流模块标识符 |
| procDefId | `String`                                            | 流程定义ID   |
| config    | [BpmnProcessDiagramConfig](/guide/script/model.md#bpmnprocessdiagramconfig) | 配置信息     |

**示例**

::: code-group

```javascript [调用]
let config = {
    activityFontName: "宋体",
    labelFontName: "宋体",
    annotationFontName: "宋体",
    highLightedActivities: ['StartEvent_1', 'Activity_0ofrc9c', 'Activity_0i7rzdo'],
    highLightedFlows: ['Flow_061bx1o', 'Flow_0l1tmev', 'Flow_0n92u98'],
    scaleFactor: 1.0,
    drawSequenceFlowNameWithNoLabelDI: false
}
let procDefId = 'process_idy5gsmor6ym:100:ae4923cb-6d64-11ee-a8da-eed108c67451';
let base64Img = informat.bpmn.generateProcessDiagram('flow', procDefId, config);
console.log('base64Img', base64Img);
```
```text [返回值]
iVBORw0KGgoAAAANSUhEUgAAByYAAAImCAYAAAAWme0EAACAAElEQVR4XuzdCZxkVX33/8MmIuCCgiAiAwKi4...
```

:::

## setProcessInstanceName

设置流程实例名称

```javascript
informat.bpmn.setProcessInstanceName(moduleId, instanceId, name);
```

| 参数         | 类型       | 描述       |
|------------|----------|----------|
| moduleId   | `String` | 工作流模块标识符 |
| instanceId | `String` | 流程实例 ID  |
| name       | `String` | 变量名称     |

**示例**

```javascript
informat.bpmn.setProcessInstanceName('flow', 'a8bbc752-24af-11ef-bcd1-a6c0b0be7615', '新流程实例名称');
```

## addMultiInstanceExecution

多实例新增流程执行

```javascript
informat.bpmn.addMultiInstanceExecution(moduleId, activityId, parentExecutionId, variables);
```

| 参数                | 类型       | 描述                |
|-------------------|----------|-------------------|
| moduleId          | `String` | 工作流模块标识符          |
| activityId        | `String` | 流程节点ID            |
| parentExecutionId | `String` | 父流程执行ID，可以是流程实例ID |
| variables         | `Object` | 流程执行变量            |

**返回值**

返回值为新增的流程执行ID,类型为`String`

**示例**


::: code-group

```javascript [调用]
// 为节点A新增一个审批人(李四lisi)
var variables = {
    'assignee': 'yvkc2kwpy3xzr'	//assignee是流程节点处理人那里填写的变量名称,按照具体情况需要修改
}
informat.bpmn.addMultiInstanceExecution('flow', 'Activity_0a866jw', 'fa3d9fde-93ff-11ee-b865-eed108c67451', variables);
```
```text [返回值]
c263580f-9402-11ee-b865-eed108c67451
```

:::

::: warning 注意事项
此接口只针对多实例节点有效
:::

## deleteMultiInstanceExecution

多实例删除流程执行

```javascript
informat.bpmn.deleteMultiInstanceExecution(moduleId, executionId, executionIsCompleted);
```

| 参数                   | 类型        | 描述          |
|----------------------|-----------|-------------|
| moduleId             | `String`  | 工作流模块标识符    |
| executionId          | `String`  | 流程节点ID      |
| executionIsCompleted | `Boolean` | 是否标记流程执行已完成 |

**示例**

```javascript
// 为节点A删除一个审批人
informat.bpmn.deleteMultiInstanceExecution('flow', 'a8be867d-24af-11ef-bcd1-a6c0b0be7615', true);
```

::: warning 注意事项
此接口只针对多实例节点有效
:::

## addBpmnTaskCcList

此方法向BPMN任务抄送人表中添加抄送人

```javascript
informat.bpmn.addBpmnTaskCcList(taskId, copyUserList);
```

| 参数             | 类型              | 描述             |
|----------------|-----------------|----------------|
| `taskId`       | `String`        | BPMN任务的ID。     |
| `copyUserList` | `Array<String>` | 要添加的抄送人用户ID列表。 |

**示例**

```javascript
informat.bpmn.addBpmnTaskCcList('a8c27e21-24af-11ef-bcd1-a6c0b0be7615', ['yvkc2kwpy3xzr']);
```

## deleteBpmnTaskCc

此方法从BPMN任务抄送人表移除一个抄送人。

```javascript
informat.bpmn.deleteBpmnTaskCc(taskId, copyUserId);
```

| 参数           | 类型       | 描述              |
|--------------|----------|-----------------|
| `taskId`     | `String` | BPMN任务的ID。      |
| `copyUserId` | `String` | 要从CC列表中移除的用户ID。 |

**示例**

```javascript
informat.bpmn.deleteBpmnTaskCc('3cc8fe05-8b9f-11ee-bbf4-a6c0b0be7615', 'zhangsan');
```

## queryBpmnTaskCcList

根据给定查询检索BPMN任务抄送人列表。

```javascript
informat.bpmn.queryBpmnTaskCcList(query);
```

| 参数      | 类型      | 描述                   |
|---------|---------|----------------------|
| `query` | `Query` | 用于过滤BPMN任务抄送人表的查询对象。 |

可过滤的字段

| 参数           | 类型       | 描述   |
|--------------|----------|------|
| `taskId`     | `String` | 任务ID |
| `copyUserId` | `String` | 抄送用户 |

**示例**

::: code-group

```javascript [调用]
informat.bpmn.queryBpmnTaskCcList({
    pageIndex: 1,
    pageSize: 10,
    filter: {
        conditionList: [
            { fieldId: 'taskId', opt: 'eq', value: 'taskId' }
        ]
    }
})
```
```json [返回值]
[
  {
    "copyUserAvatar": "pic7.png",
    "copyUserId": "xwi9jogl4fcx4",
    "copyUserName": "张三",
    "id": "ifpno8kcp60w0",
    "taskId": "fb8ff623-f7ae-11ee-b253-a6c0b0be7615"
  },
  {
    "copyUserAvatar": "383e58e051c849e9bff4f26f432c0764.jpg",
    "copyUserId": "nx8hcjsq4xk8z",
    "copyUserName": "李四",
    "id": "fyyew216vjagc",
    "taskId": "396ebfdd-1770-11ef-b056-a6c0b0be7615"
  }
]
```
:::

## queryBpmnTaskCcListCount

根据给定过滤器返回BPMN任务抄送人表的数量。

```javascript
informat.bpmn.queryBpmnTaskCcListCount(filter);
```

| 参数       | 类型       | 描述                    |
|----------|----------|-----------------------|
| `filter` | `Filter` | 用于计数BPMN任务抄送人表的过滤器对象。 |

**示例**

::: code-group

```javascript [调用]
informat.bpmn.queryBpmnTaskCcList({
    conditionList: [
        { fieldId: 'taskId', opt: 'eq', value: 'taskId' }
    ]
})

```
```text [返回值]
2
```

:::

## getHistoryTaskVariables

获取流程历史任务变量

```javascript
informat.bpmn.getHistoryTaskVariables(taskId);
```

| 参数     | 类型       | 描述      |
|--------|----------|---------|
| taskId | `String` | 流程任务 ID |

**返回值**

类型`Object`，返回值为所有变量值

**示例**

```javascript
informat.bpmn.getHistoryTaskVariables('9cf63d7a-ca24-11ed-8bc0-be634eacf49a')
```

## getHistoryTaskVariable

获取流程历史任务变量

```javascript
informat.bpmn.getHistoryTaskVariable(taskId, variableName);
```

| 参数           | 类型       | 描述      |
|--------------|----------|---------|
| taskId       | `String` | 流程任务 ID |
| variableName | `String` | 变量名称    |

**返回值**

类型`Object`，返回值为变量值

**示例**

```javascript
informat.bpmn.getHistoryTaskVariable('9cf63d7a-ca24-11ed-8bc0-be634eacf49a', 'form')

```

## deleteTasks

删除工作流任务列表

```javascript
informat.bpmn.deleteTasks(moduleId, taskIds, deleteReason, cascade);
```

| 参数           | 类型              | 描述     |
|--------------|-----------------|--------|
| moduleId     | `String`        | 模块标识符  |
| taskIds      | `Array<String>` | 任务ID列表 |
| deleteReason | `String`        | 删除原因   |
| cascade      | `Boolean`       | 是否级联删除 |

**示例**

```javascript
informat.bpmn.deleteTasks('flow', ['9cf63d7a-ca24-11ed-8bc0-be634eacf49a'], '测试删除', true);
```

## getStartSetting

获取流程定义启动设置

```javascript
informat.bpmn.getStartSetting(moduleKey, defineId);
```

| 参数        | 类型       | 描述     |
|-----------|----------|--------|
| moduleKey | `String` | 模块标识符  |
| defineId  | `String` | 流程定义ID |

**返回值**

返回值类型为[BpmnStartSetting](/guide/script/model.md#bpmnstartsetting)，流程的启动设置信息

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getStartSetting('flow', 'h141dq1w5ijpf')
```
```json [返回值]
{
  "activityUserList": [],
  "enableStartForm": true,
  "formSetting": {
    "completeSetVarList": [],
    "enableShowProcessInfo": false,
    "formDesignerFieldSettingList": [],
    "id": "form",
    "localVariable": false,
    "tableFieldSettingList": [
      {
        "editable": true,
        "id": "y68l84iidbr9l",
        "visible": true
      },
      {
        "editable": true,
        "id": "vn4v208530vfj",
        "visible": true
      },
      {
        "editable": true,
        "id": "gjkb3rq7q44wu",
        "visible": true
      },
      {
        "editable": true,
        "id": "ceumuggdjze5i",
        "visible": true
      },
      {
        "editable": true,
        "id": "t9416rt5uv818",
        "visible": true
      },
      {
        "editable": true,
        "id": "a3rumke2j97m6",
        "visible": true
      }
    ],
    "tableId": "skwl7tkdsh650",
    "toolBarButtonList": []
  },
  "instanceToolbarButtonList": [],
  "startFormToolbarButtonList": [],
  "startVarList": []
}
```

:::

## getTaskSetting

获取任务设置

```javascript
informat.bpmn.getTaskSetting(procDefineId, taskDefKey);
```

| 参数           | 类型       | 描述     |
|--------------|----------|--------|
| procDefineId | `String` | 流程定义ID |
| taskDefKey   | `String` | 任务定义ID |

**返回值**

类型`BpmnTaskSetting`

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getTaskSetting('process_swf2089hng2j:1:c0cc319f-7a59-11ef-bb07-0242d99c1a6f', 'Activity_1nky9zn')
```
```json [返回值]
{
  "autocompleteNodeIds": [],
  "enableAutocomplete": false,
  "formSetting": {
    "completeSetVarList": [],
    "enableShowProcessInfo": false,
    "formDesignerFieldSettingList": [],
    "formType": "Form",
    "id": "form",
    "localVariable": false,
    "tableFieldSettingList": [
      {
        "editable": false,
        "id": "y68l84iidbr9l",
        "visible": true
      },
      {
        "editable": false,
        "id": "vn4v208530vfj",
        "visible": true
      },
      {
        "editable": false,
        "id": "gjkb3rq7q44wu",
        "visible": true
      },
      {
        "editable": false,
        "id": "ceumuggdjze5i",
        "visible": true
      },
      {
        "editable": false,
        "id": "t9416rt5uv818",
        "visible": true
      },
      {
        "editable": false,
        "id": "a3rumke2j97m6",
        "visible": true
      }
    ],
    "tableId": "skwl7tkdsh650",
    "toolBarButtonList": [
      {
        "action": "TaskComplete",
        "actionSetting": {
          "enableComment": false,
          "bpmnModuleId": "b6qe23fkfwlux",
          "taskIdExpression": "${task.id}",
          "varList": [],
          "valueList": [],
          "tableId": "skwl7tkdsh650"
        },
        "buttonSetting": {
          "enableConfirm": false,
          "hideName": false,
          "icon": "check-double",
          "plain": false,
          "round": false,
          "type": "primary"
        },
        "children": [],
        "controlType": "button",
        "hideExpression": "${task.endTime != null || task.assignee != user.id}",
        "id": "w7b5ah41xs1e",
        "inputSetting": {
          "width": 200
        },
        "isDirectory": false,
        "labelSetting": {
          "bold": false,
          "fontSize": 13
        },
        "name": "同意",
        "selectSetting": {
          "multiple": false,
          "optionList": [
          ],
          "width": 200
        },
        "switchSetting": {
          "type": "primary"
        }
      },
      {
        "action": "TaskMoveToEnd",
        "actionSetting": {
          "enableComment": false,
          "bpmnModuleId": "b6qe23fkfwlux",
          "taskIdExpression": "${task.id}",
          "valueList": [],
          "tableId": "skwl7tkdsh650"
        },
        "buttonSetting": {
          "completeExpression": "流程终止成功",
          "confirmMessageExpression": "确认要终止该流程吗？",
          "enableConfirm": true,
          "hideName": false,
          "icon": "stop-circle",
          "plain": false,
          "round": false,
          "type": "danger"
        },
        "children": [],
        "controlType": "button",
        "hideExpression": "${task.endTime != null || task.assignee != user.id}",
        "id": "mum6gdf67m9q",
        "inputSetting": {
          "width": 200
        },
        "isDirectory": false,
        "labelSetting": {
          "bold": false,
          "fontSize": 13
        },
        "name": "终止",
        "selectSetting": {
          "multiple": false,
          "optionList": [
          ],
          "width": 200
        },
        "switchSetting": {
          "type": "primary"
        }
      }
    ]
  },
  "userAction": "Form"
}
```
:::


## getActiveProcessDefineObject

根据工作流流程定义标识符获取最新部署的xml内容

```javascript
informat.bpmn.getActiveProcessDefineObject(moduleId, processDefineKey);
```

| 参数        | 类型       | 描述       |
|-----------|----------|----------|
| moduleId  | `String` | 工作流模块标识符 |
| processDefineKey | `String` | 流程定义标识符   |


**示例**

```javascript [调用]
informat.bpmn.getActiveProcessDefineObject('workflow', 'leaveApproval');
```

## getBpmnProcessVersionList

查询流程定义版本列表

```javascript
informat.bpmn.getBpmnProcessVersionList(moduleKey, processDefineKey);
```

| 参数               | 类型       | 描述       |
|------------------|----------|----------|
| moduleKey        | `String` | 工作流模块标识符 |
| processDefineKey | `String` | 流程定义标识符  |

**返回值**

返回值为版本列表，类型为 `Array<BpmnProcessVersion>`

| 字段                  | 类型       | 描述     |
|---------------------|----------|--------|
| id                  | `String` | 版本ID   |
| name                | `String` | 名称     |
| status              | `String` | 状态（`None`未配置 / `Pending`待启用 / `Running`启用中 / `Finished`已完成） |
| startTime           | `Date`   | 生效开始时间 |
| activeTime          | `Date`   | 生效时间   |
| createAccountId     | `String` | 创建人ID  |
| createAccountName   | `String` | 创建人名称  |
| createAccountAvatar | `String` | 创建人图标  |
| createTime          | `Date`   | 创建时间   |
| updateTime          | `Date`   | 最后修改时间 |

**示例**

::: code-group

```javascript [调用]
informat.bpmn.getBpmnProcessVersionList('flow', 'leave');
```
```json [返回值]
[
  {
    "id": "s615lvvta7l7",
    "name": "V1",
    "status": "Running",
    "startTime": 1692861587735,
    "activeTime": 1692861587735,
    "createAccountId": "zhangsan",
    "createAccountName": "张三",
    "createAccountAvatar": "pic15.png",
    "createTime": 1692861587735,
    "updateTime": 1692861587735
  }
]
```
:::

## setProcessCurrentVersion

设置流程定义的当前版本

```javascript
informat.bpmn.setProcessCurrentVersion(moduleKey, processDefineKey, versionId);
```

| 参数               | 类型       | 描述       |
|------------------|----------|----------|
| moduleKey        | `String` | 工作流模块标识符 |
| processDefineKey | `String` | 流程定义标识符  |
| versionId        | `String` | 版本ID     |

**示例**

```javascript
informat.bpmn.setProcessCurrentVersion('flow', 'leave', 's615lvvta7l7');
```
