# 加签减签
> 前加签、加签、减签

## 前加签
> 适用于多人顺序节点，添加待办且添加顺序在已有的办理人之前

接口请求调用说明 <br>
http请求方式: POST <br>
请求地址: http://127.0.0.1:8080/demo/horizon/workflow/rest/flow/support/action.wf <br>
**post数据说明：**
```
{
  "accessToken": "",
  "workId": "HZ28858f8113f08b018117f86ce3034e",
  "trackId": "HZ28858f8113f08b018117f86ce3034f",
  "actionData": {
    "operate": "jiaqianBefore",
    "operateFlag": 0,
    "operateClazz": "com.horizon.wf.action.ActionJiaQianBefore",
    "nextNodes": [
      {
        "authors": {
          "Author": {
            "selectAuthor": "U_HZ28821856ef63420156ef6342a20002/D_HZ28821856ef63420156ef6342a20001",
            "selectAuthorName": "用户01(测试部门0)"
          }
        },
        "isSelect": "true",
        "nodeKey": "Node1",
        "nodeId": "Node1",
        "selectId": "Node1"
      }
    ]
  }
}
```
请求参数说明:

| 参数          | 是否必须 | 描述            |
|-------------|------|---------------|
| accessToken | 是    | 调用接口凭证，唯一用户标识 |
| workId      | 是    | 流程实例id        |
| trackId     | 是    | 流程路径id        |
| actionData  | 是    | 流程操作json数据    |
actionData 数据参数:

| 参数           | 是否必须 | 描述                                                    |
|--------------|------|-------------------------------------------------------|
| operate      | 是    | 前加签操作标识，固定值jiaqianBefore                              |
| operateFlag  | 是    | 操作标识，固定值0                                             |
| operateClazz | 是    | 前加签操作类路径，固定值com.horizon.wf.action.ActionJiaQianBefore |
| nextNodes    | 是    | 需要设置的节点列表                                             |
nextNodes参数说明：

| 参数       | 是否必须 | 描述                                     |
|----------|------|----------------------------------------|
| authors  | 是    | 下一节点办理人对象中key为Author,value值为Author对象参数 |
| isSelect | 是    | 是否选择了节点，固定值true                        |
| nodeKey  | 是    | 节点主键                                   |
| nodeId   | 是    | 节点id                                   |
| selectId | 是    | 需要选择的节点id                              |

authors中Author对象参数说明：

| 参数               | 是否必须 | 描述         |
|------------------|------|------------|
| selectAuthor     | 是    | 节点已选择办理人id |
| selectAuthorName | 是    | 节点已选择办理人名称 |
**返回结果示例：**
```
{
  "nextNodeId": "Node1",
  "nextNodes": [
    {
      "authors": {
        "Author": {
          "authorFlowVar": "",
          "authorId": "Author",
          "authorName": "主办",
          "freeArea": "",
          "isDefUser": "false",
          "isFree": "true",
          "isSelect": "true",
          "isUser": "false",
          "selectType": "checkbox"
        }
      },
      "isDone": "false",
      "isSelect": "true",
      "isShowTabs": "false",
      "memo": "",
      "nodeGroup": "",
      "nodeId": "Node1",
      "nodeKey": "Node1",
      "nodeName": "任务1",
      "nodeStatus": "0",
      "selectId": "Node1",
      "selectName": "前加签(任务1)"
    }
  ],
  "operate": "jiaqianBefore",
  "operateClazz": "com.horizon.wf.action.ActionJiaQianBefore",
  "operateFlag": "0",
  "operateMsg": "加签成功",
  "status": 0,
  "workId": "HZ28858f8113f08b018117f86ce3034e"
}
```
**结果参数说明:**

| 参数           | 参数类型   | 描述                    |
|--------------|--------|-----------------------|
| nextNodeId   | String | 当前节点id                |
| nextNodes    | List   | 需要选择的节点列表             |
| operate      | String | 前加签操作标识               |
| operateClazz | String | 前加签操作类路径              |
| operateFlag  | String | 操作标记 -1：显示关闭，0、1：正常提交 |
| operateMsg   | String | 返回操作信息                |
| status       | int    | 流程操作状态码               |
| workId       | String | 流程实例id                |
*nextNodes参数说明：*

| 参数         | 参数类型   | 描述                                                             |
|------------|--------|----------------------------------------------------------------|
| authors    | Map    | 下节点办理人map中key为Author，value为Author对象参数                          |
| isDone     | String | 是否已经走过                                                         |
| isSelect   | String | 是否已选择                                                          |
| isShowTabs | String | 是否显示办理人页签，主要用于运行页面办理人显示，不参与业务处理                                |
| memo       | String | 备注信息                                                           |
| nodeGroup  | String | 节点分组，单节点时无值，当前节点有分支节点时，值为上一节点id                                |
| nodeId     | String | 节点id                                                           |
| nodeKey    | String | 节点主键                                                           |
| nodeName   | String | 节点名称                                                           |
| nodeStatus | String | 节点状态，限定值<br>0.成功<br>1.选择办理人<br>2.选择节点<br>3.未找到办理人<br>4.未找到下一节点 |
| selectId   | String | 需要选择的节点id                                                      |
| selectName | String | 需要选择的节点名称                                                      |
*authors中Author参数说明：*

| 参数            | 参数类型   | 描述                                     |
|---------------|--------|----------------------------------------|
| authorFlowVar | String | 节点已选择办理人id                             |
| freeArea      | String | 节点已选择办理人名称                             |
| authorId      | String | 办理人id固定值Author                         |
| authorName    | String | 办理人名称：主办，协办，读者                         |
| isFree        | String | 是否自由选择                                 |
| isUser        | String | 是否只允许选择人员                              |
| isDefUser     | String | 流程定义列表中选择                              |
| isSelect      | String | 是否允许选择办理人                              |
| selectType    | String | 人员选择类型，限定值<br>radio：单选<br>checkbox：多选  |

## 加签
> 适用于多人顺序节点、多人并行节点，添加待办且添加顺序在已有的办理人之后

接口请求调用说明 <br>
http请求方式: POST <br>
请求地址: http://127.0.0.1:8080/demo/horizon/workflow/rest/flow/support/action.wf <br>
**post数据说明：**
```
{
  "accessToken": "",
  "workId": "HZ28858f8113f08b0181189a461e03be",
  "trackId": "HZ28858f8113f08b0181189a461e03bf",
  "actionData": {
    "operate": "jiaqian",
    "operateFlag": 0,
    "operateClazz": "com.horizon.wf.action.ActionJiaQian",
    "nextNodes": [
      {
        "authors": {
          "Author": {
            "selectAuthor": "U_HZ28821856ef63420156ef6342a20002/D_HZ28821856ef63420156ef6342a20001",
            "selectAuthorName": "用户01(测试部门0)"
          }
        },
        "isSelect": "true",
        "nodeKey": "Node1",
        "nodeId": "Node1",
        "selectId": "Node1"
      }
    ]
  }
}
```
请求参数说明:

| 参数          | 是否必须 | 描述            |
|-------------|------|---------------|
| accessToken | 是    | 调用接口凭证，唯一用户标识 |
| workId      | 是    | 流程实例id        |
| trackId     | 是    | 流程路径id        |
| actionData  | 是    | 流程操作json数据    |
actionData 数据参数:

| 参数           | 是否必须 | 描述                                            |
|--------------|------|-----------------------------------------------|
| operate      | 是    | 加签操作标识，固定值jiaqian                             |
| operateFlag  | 是    | 操作标识，固定值0                                     |
| operateClazz | 是    | 加签操实现类，固定值com.horizon.wf.action.ActionJiaQian |
| nextNodes    | 是    | 需要设置的节点列表                                     |
nextNodes参数说明：

| 参数       | 是否必须 | 描述                                     |
|----------|------|----------------------------------------|
| nodeKey  | 是    | 节点主键                                   |
| isSelect | 是    | 是否选择了节点，固定值true                        |
| selectId | 是    | 需要选择的节点id                              |
| nodeId   | 是    | 需要选择的节点id                              |
| authors  | 是    | 下一节点办理人对象中key为Author,value值为Author对象参数 |
authors中Author对象参数说明：

| 参数               | 是否必须 | 描述         |
|------------------|------|------------|
| selectAuthor     | 是    | 节点已选择办理人id |
| selectAuthorName | 是    | 节点已选择办理人名称 |
**返回结果示例：**
```
{
  "nextNodeId": "Node1",
  "nextNodes": [
    {
      "authors": {
        "Author": {
          "authorFlowVar": "",
          "authorId": "Author",
          "authorName": "主办",
          "freeArea": "",
          "isDefUser": "false",
          "isFree": "true",
          "isSelect": "true",
          "isUser": "false",
          "selectType": "checkbox"
        }
      },
      "isDone": "false",
      "isSelect": "true",
      "isShowTabs": "false",
      "memo": "",
      "nodeGroup": "",
      "nodeId": "Node1",
      "nodeKey": "Node1",
      "nodeName": "任务1",
      "nodeStatus": "0",
      "selectId": "Node1",
      "selectName": "加签(任务1)"
    }
  ],
  "operate": "jiaqian",
  "operateClazz": "com.horizon.wf.action.ActionJiaQian",
  "operateFlag": "0",
  "operateMsg": "加签成功",
  "status": 0,
  "workId": "HZ28858f8113f08b0181189a461e03be"
}
```
**结果参数说明:**

| 参数           | 参数类型   | 描述                    |
|--------------|--------|-----------------------|
| operate      | String | 加签操作标识                |
| operateClazz | String | 加签操作类路径               |
| operateFlag  | String | 操作标记 -1：显示关闭，0、1：正常提交 |
| operateMsg   | String | 返回操作信息                |
| nextNodeId   | String | 当前节点id                |
| workId       | String | 流程实例id                |
| status       | int    | 流程操作状态码               |
| nextNodes    | List   | 需要选择的节点列表             |
*nextNodes参数说明：*

| 参数            | 参数类型   | 描述                                                             |
|---------------|--------|----------------------------------------------------------------|
| nodeKey       | String | 节点主键                                                           |
| selectId      | String | 需要选择的节点id                                                      |
| selectName    | String | 需要选择的节点名称                                                      |
| isSelect      | String | 是否已选择                                                          |
| isDone        | String | 是否已经走过                                                         |
| nodeGroup     | String | 节点分组，单节点时无值，当前节点有分支节点时，值为上一节点id                                |
| isShowTabs    | String | 是否显示办理人页签，主要用于运行页面办理人显示，不参与业务处理                                |
| nodeStatus    | String | 节点状态，限定值<br>0.成功<br>1.选择办理人<br>2.选择节点<br>3.未找到办理人<br>4.未找到下一节点 |
| authors       | Map    | 下节点办理人map中key为Author，value为Author对象参数                          |
*authors中Author参数说明：*

| 参数            | 参数类型   | 描述                                     |
|---------------|--------|----------------------------------------|
| authorFlowVar | String | 节点已选择办理人id                             |
| freeArea      | String | 节点已选择办理人名称                             |
| authorId      | String | 办理人id固定值Author                         |
| authorName    | String | 办理人名称：主办，协办，读者                         |
| selectType    | String | 人员选择类型，限定值<br>radio：单选<br>checkbox：多选  |
| isFree        | String | 是否自由选择                                 |
| isUser        | String | 是否只允许选择人员                              |
| isDefUser     | String | 流程定义列表中选择                              |
| isSelect      | String | 是否允许选择办理人                              |

## 减签
> 适用于多人顺序节点、多人并行节点中的已办节点， 需要先查看当前已有的待办人员，从当前待办人员中去除指定的人

![流程操作](../../assets/img/rest/flowaction/jianqian.png)
### 减签-查看可减人员
接口请求调用说明 <br>
http请求方式: POST <br>
请求地址: http://127.0.0.1:8080/demo/horizon/workflow/rest/flow/support/action.wf <br>
**post数据说明：**
```
{
  "accessToken": "",
  "workId": "HZ28858f8113f08b0181189a461e03be",
  "trackId": "HZ28858f8113f08b0181189a461e03bf",
  "actionData": {
    "operate": "reduceAuthor",
    "operateClazz": "com.horizon.wf.action.ActionReduceAuthor"
  }
}
```
请求参数说明:

| 参数          | 是否必须 | 描述            |
|-------------|------|---------------|
| accessToken | 是    | 调用接口凭证，唯一用户标识 |
| workId      | 是    | 流程实例id        |
| trackId     | 是    | 流程路径id        |
| actionData  | 是    | 流程操作json数据    |
actionData 数据参数:

| 参数           | 是否必须 | 描述                                                |
|--------------|------|---------------------------------------------------|
| operate      | 是    | 减签操作标识，固定值reduceAuthor                            |
| operateClazz | 是    | 减签实现类，固定值com.horizon.wf.action.ActionReduceAuthor |
**返回结果示例：**
```
{
  "nextNodeId": "Node1",
  "nextNodes": [
    {
      "authors": {
        "Author": {
          "authorFlowVar": "",
          "authorId": "Author",
          "authorName": "主办",
          "freeArea": "",
          "initAuthor": {
            "others": [
              {
                "userFromId": "HZ28821856ef63420156ef6342a20001",
                "id": "HZ28821856ef63420156ef6342a20002",
                "userFromName": "测试部门0",
                "title": "用户01",
                "name": "用户01",
                "iconSkin": "U",
                "userFromIconSkin": "D"
              },
              {
                "userFromId": "HZ28821856ef63420156ef6342a20001",
                "id": "HZ28821856ef63420156ef6342a20003",
                "userFromName": "测试部门0",
                "title": "用户02",
                "name": "用户02",
                "iconSkin": "U",
                "userFromIconSkin": "D"
              },
              {
                "userFromId": "HZ28821856ef63420156ef6342a20001",
                "id": "HZ28821856ef63420156ef6342a20004",
                "userFromName": "测试部门0",
                "title": "用户03",
                "name": "用户03",
                "iconSkin": "U",
                "userFromIconSkin": "D"
              }
            ]
          },
          "isDefUser": "true",
          "isFree": "false",
          "isSelect": "true",
          "isUser": "false",
          "selectAuthor": "U_HZ28821856ef63420156ef6342a20002/D_HZ28821856ef63420156ef6342a20001;U_HZ28821856ef63420156ef6342a20003/D_HZ28821856ef63420156ef6342a20001;U_HZ28821856ef63420156ef6342a20004/D_HZ28821856ef63420156ef6342a20001",
          "selectAuthorName": "用户01(测试部门0);用户02(测试部门0);用户03(测试部门0)",
          "selectType": "checkbox"
        }
      },
      "isDone": "false",
      "isSelect": "true",
      "memo": "",
      "nodeGroup": "",
      "nodeId": "Node1",
      "nodeKey": "Node1",
      "nodeName": "任务1",
      "nodeStatus": "0",
      "selectId": "Node1",
      "selectName": "减签(任务1)"
    }
  ],
  "operate": "reduceAuthor",
  "operateClazz": "com.horizon.wf.action.ActionReduceAuthor",
  "operateFlag": "0",
  "operateMsg": "请从列表中选择需要减签的人员",
  "status": 4,
  "workId": "HZ28858f811e704701811ea661bc0095"
}
```
**结果参数说明:**

| 参数           | 参数类型   | 描述                    |
|--------------|--------|-----------------------|
| nextNodeId   | String | 当前节点id                |
| nextNodes    | List   | 需要选择的节点列表             |
| operate      | String | 加签操作标识                |
| operateClazz | String | 加签操作类路径               |
| operateFlag  | String | 操作标记 -1：显示关闭，0、1：正常提交 |
| operateMsg   | String | 返回操作信息                |
| status       | int    | 流程操作状态码               |
| workId       | String | 流程实例id                |
*nextNodes参数说明：*

| 参数         | 参数类型   | 描述                                                             |
|------------|--------|----------------------------------------------------------------|
| authors    | Map    | 下节点办理人map中key为Author，value为Author对象参数                          |
| isDone     | String | 是否已经走过                                                         |
| isSelect   | String | 是否已选择                                                          |
| memo       | String | 备注信息                                                           |
| nodeGroup  | String | 节点分组，单节点时无值，当前节点有分支节点时，值为上一节点id                                |
| nodeId     | String | 节点id                                                           |
| nodeKey    | String | 节点主键                                                           |
| nodeName   | String | 节点名称                                                           |
| nodeStatus | String | 节点状态，限定值<br>0.成功<br>1.选择办理人<br>2.选择节点<br>3.未找到办理人<br>4.未找到下一节点 |
| selectId   | String | 需要选择的节点id                                                      |
| selectName | String | 需要选择的节点名称                                                      |
*authors中Author参数说明：*

| 参数               | 参数类型   | 描述                                    |
|------------------|--------|---------------------------------------|
| authorFlowVar    | String | 流程变量                                  |
| authorId         | String | 办理人id固定值Author/SecondAuthor/Reader    |
| authorName       | String | 办理人名称：主办，协办，读者                        |
| freeArea         | String | 自由选择时的范围                              |
| initAuthor       | Object | 节点初始化办理人id                            |
| isDefUser        | String | 流程定义列表中选择                             |
| isFree           | String | 是否自由选择                                |
| isSelect         | String | 是否允许选择办理人                             |
| isUser           | String | 是否只允许选择人员                             |
| selectAuthor     | String | 节点已选择办理人id                            |
| selectAuthorName | String | 节点已选择办理人名称                            |
| selectType       | String | 人员选择类型，限定值<br>radio：单选<br>checkbox：多选 |
*initAuthor参数说明：*

| 参数     | 参数类型 | 描述      |
|--------|------|---------|
| others | List | 初始化人员参数 |
*初始化人员参数说明：*

| 参数               | 参数类型   | 描述           |
|------------------|--------|--------------|
| userFromId       | String | 用户所在组织机构id   |
| id               | String | 用户id         |
| userFromName     | String | 用户所在组织机构类型名称 |
| title            | String | 用户名称         |
| name             | String | 用户名称         |
| iconSkin         | String | 用户标识         |
| userFromIconSkin | String | 用户所在组织机构标识   |

### 减签-设置减签人员
接口请求调用说明 <br>
http请求方式: POST <br>
请求地址: http://127.0.0.1:8080/demo/horizon/workflow/rest/flow/support/action.wf <br>
**post数据说明：**
```
{
  "accessToken": "",
  "workId": "HZ28858f811e704701811ea661bc0095",
  "trackId": "HZ28858f811e704701811ea661bc0096",
  "authorKey": "Author",
  "nodeId": "Node1",
  "nodeName": "任务1",
  "actionData": {
    "nextNodes": [
      {
        "authors": {
          "Author": {
            "selectAuthor": "U_HZ28821856ef63420156ef6342a20003/D_HZ28821856ef63420156ef6342a20001",
            "selectAuthorName": "用户02(测试部门0)"
          }
        },
        "isSelect": "true",
        "nodeId": "Node1",
        "nodeKey": "Node1",
        "selectId": "Node1"
      }
    ],
    "operate": "reduceAuthor",
    "operateFlag": 0,
    "operateClazz": "com.horizon.wf.action.ActionReduceAuthor"
  }
}
```
请求参数说明:

| 参数          | 是否必须 | 描述            |
|-------------|------|---------------|
| accessToken | 是    | 调用接口凭证，唯一用户标识 |
| workId      | 是    | 流程实例id        |
| trackId     | 是    | 流程路径id        |
| authorKey   | 是    | 参与者类型id       |
| nodeId      | 是    | 当前节点id        |
| nodeName    | 是    | 当前节点名称        |
| actionData  | 是    | 流程操作json数据    |
actionData 数据参数:

| 参数           | 是否必须 | 描述                                                  |
|--------------|------|-----------------------------------------------------|
| nextNodes    | 是    | 需要设置的节点列表                                           |
| operate      | 是    | 减签操作标识，固定值reduceAuthor                              |
| operateFlag  | 是    | 操作标识，固定值0                                           |
| operateClazz | 是    | 减签操作类路径，固定值com.horizon.wf.action.ActionReduceAuthor |
nextNodes参数说明：

| 参数       | 是否必须 | 描述                                     |
|----------|------|----------------------------------------|
| authors  | 是    | 下一节点办理人对象中key为Author,value值为Author对象参数 |
| isSelect | 是    | 是否选择了节点，固定值true                        |
| nodeId   | 是    | 需要选择的节点id                              |
| nodeKey  | 是    | 节点主键                                   |
| selectId | 是    | 需要选择的节点id                              |
authors中Author对象参数说明：

| 参数               | 是否必须 | 描述         |
|------------------|------|------------|
| selectAuthor     | 是    | 节点已选择办理人id |
| selectAuthorName | 是    | 节点已选择办理人名称 |
**返回结果示例：**
```
{
    "authorKey": "Author",
    "nextNodeId": "Node1",
    "nextNodes": [
        {
            "authors": {
                "Author": {
                    "selectAuthor": "U_HZ28821856ef63420156ef6342a20003/D_HZ28821856ef63420156ef6342a20001",
                    "selectAuthorName": "用户02(测试部门0)"
                }
            },
            "isSelect": "true",
            "nodeId": "Node1",
            "nodeKey": "Node1",
            "selectId": "Node1"
        }
    ],
    "nodeId": "Node1",
    "nodeName": "任务1",
    "operate": "reduceAuthor",
    "operateClazz": "com.horizon.wf.action.ActionReduceAuthor",
    "operateFlag": "0",
    "operateMsg": "减少办理人成功",
    "operateStatus": "success",
    "status": 0,
    "workId": "HZ28858f811e704701811ea661bc0095"
}
```
**结果参数说明:**

| 参数            | 参数类型   | 描述                    |
|---------------|--------|-----------------------|
| authorKey     | String | 参与者类型id               |
| nextNodeId    | String | 下一节点id                |
| nextNodes     | List   | 操作的节点列表               |
| nodeId        | String | 当前节点id                |
| nodeName      | String | 当前节点名称                |
| operate       | String | 加签操作标识                |
| operateClazz  | String | 加签操作类路径               |
| operateFlag   | String | 操作标记 -1：显示关闭，0、1：正常提交 |
| operateMsg    | String | 返回操作信息                |
| operateStatus | String | 返回操作结果                |
| status        | int    | 流程操作状态码               |
| workId        | String | 流程实例id                |
*nextNodes参数说明：*

| 参数       | 参数类型   | 描述                                    |
|----------|--------|---------------------------------------|
| authors  | Map    | 下节点办理人map中key为Author，value为Author对象参数 |
| isSelect | String | 是否已选择                                 |
| nodeId   | String | 操作的节点id                               |
| nodeKey  | String | 节点主键                                  |
| selectId | String | 需要操作的节点id                             |
*authors中Author参数说明：*

| 参数               | 参数类型   | 描述         |
|------------------|--------|------------|
| selectAuthor     | String | 节点已选择办理人id |
| selectAuthorName | String | 节点已选择办理人名称 |