# 审批任务与操作变更

## 事件描述

审批任务产生/通过/拒绝/加签/回退/完成/抄送/实例状态变更时通知事件（event_task、event_instance、event_cc）。三方审批任务通过轻审批同意/拒绝时通知事件（event_external_action）。

## 订阅说明

| **属性** | **说明** |
| --- | --- |
| **事件主题** | **kso.workflow** |
| **事件行为** | `create`、`update`、`delete` |
| **业务域** | `-` |
| **权限要求** | 查询审批实例 `kso.workflow_approval_instance.read` |
| **解密方式** | 详见 [解密算法](/app-integration-dev/wps365/server/event-subscription/security-verification) |


### 事件体（解密前）

<!-- 为了保持文档格式统一：（1）参数说明中请使用中文全角标点符号；（2）中英文间请添加空格 -->

| **名称**       | **参数类型** | **说明**                                                       |
| :------------- | :----------- | :------------------------------------------------------------- |
| topic          | string       | 消息主题 `kso.workflow`                                     |
| operation      | string       | 消息变更动作<br/>`create`：创建；`update`：更新；`delete`：删除 |
| time           | integer      | 时间（秒为单位的时间戳）                                       |
| nonce          | string       | iv 向量（解密时使用）                                          |
| signature      | string       | 消息签名                                                       |
| encrypted_data | string       | 消息变更的加密字段                                             |

### 事件体示例（解密前）

<!-- 为了保持文档格式统一，请使用 2 个空格作为 json 的缩进符 -->

```json
{
  "topic": "kso.workflow",
  "operation": "create",
  "time": 1704074400,
  "nonce": "71***********7",
  "signature": "w6**********6Q",
  "encrypted_data": "B7**********iA=="
}
```

### 事件体数据（解密后）

<!-- 为了保持文档格式统一：（1）参数说明中请使用中文全角标点符号；（2）中英文间请添加空格 -->

| **名称**         | **参数类型**      | **是否必带** | **说明**                   |
|:---------------|:--------------|:---------|:-------------------------|
| id | `string` | 是 | 业务内部事件 id |
| event_type | `string` | 是 | 事件类型：`task_event`-任务事件，`instance_event`-实例事件，`cc_event`-抄送事件，`external_action_event`-三方操作事件 |
| ctime | `number` | 是 | 创建时间戳，秒 |
| event_task | `object` | 否 | 审批任务事件，`event_task`、`event_instance`、`event_cc`、`event_external_action` 只会出现一个 |
| ∟ approval_define_id | `string` | 是 | 审批定义 id |
| ∟ extra | `object` | 否 | 扩展数据 |
| ∟ ∟ rollback_node_id | `string` | 否 | 回滚节点 id |
| ∟ ∟ add_sign_user_ids | `array` | 否 | 加签人 id 列表 |
| ∟ ∟ ex_add_sign_user_ids | `array` | 否 | 拓展加签人 id 列表 |
| ∟ ∟ biz_add_sign_user_ids | `array` | 否 | 拓展加签人，内部 id 列表 |
| ∟ instance_id | `string` | 是 | 审批实例 id |
| ∟ node_id | `string` | 是 | 节点 id |
| ∟ status | `string` | 是 | 任务状态：`pending`-待处理，`approved`-已通过，`rejected`-已拒绝，`transferred`-已转交，`done`-已完成（被动），`rollback`-已回退 |
| ∟ task_id | `string` | 是 | 任务 id |
| ∟ user_id | `string` | 是 | 任务处理人 id |
| ∟ ex_user_id | `string` | 否 | 拓展任务处理人 id |
| ∟ biz_user_id | `string` | 否 | 拓展任务审批人，内部 id |
| event_instance | `object` | 否 | 审批实例事件 |
| ∟ approval_define_id | `string` | 是 | 审批定义 id |
| ∟ creator | `string` | 是 | 审批创建者 |
| ∟ ex_creator | `string` | 否 | 审批创建者（拓展） |
| ∟ instance_id | `string` | 是 | 审批实例 id |
| ∟ status | `string` | 是 | 审批实例状态：`auditing`-待处理，`approved`-已通过，`refused`-已拒绝，`returned`-已回退，`revoked`-已撤回，`deleted`-已删除 |
| event_cc | `object` | 否 | 抄送事件 |
| ∟ approval_define_id | `string` | 是 | 审批定义 id |
| ∟ instance_id | `string` | 是 | 审批实例 id |
| ∟ cc_id | `string` | 是 | 抄送 id，抄送组的概念，内部 id |
| ∟ form_user_id | `string` | 是 | 抄送发起人 |
| ∟ ex_form_user_id | `string` | 否 | 抄送发起人（拓展） |
| ∟ to_user_id | `string` | 是 | 抄送接收人 |
| ∟ ex_to_user_id | `string` | 否 | 抄送接收人（拓展） |
| event_external_action | `object` | 否 | 三方操作事件 |
| ∟ define_code | `string` | 是 | 三方审批定义编码 |
| ∟ instance_id | `string` | 是 | 三方审批实例 id |
| ∟ task_id | `string` | 是 | 三方审批任务 id |
| ∟ action_type | `string` | 是 | 操作类型：`approve`-同意，`reject`-拒绝 |
| ∟ action_context | `string` | 否 | 操作上下文，JSON 字符串，由三方系统传入 |
| ∟ reason | `string` | 否 | 操作原因 |
| ∟ approval_message_id | `string` | 否 | 审批消息 id，用于更新审批机器人卡片消息 |
| ∟ user_id | `string` | 是 | 操作用户 id |

### 事件体数据示例（解密后）

<!-- 为了保持文档格式统一，请使用 2 个空格作为 json 的缩进符 -->

```json
{
  "id": "1972",
  "event_type": "task_event",
  "ctime": 1725952980,
  "event_task": {
    "approval_define_id": "ks-6v3xn74ykd12xg0wzr52ljq8wg",
    "extra": {
      "rollback_node_id": "",
      "add_sign_user_ids": ["281249626"],
      "ex_add_sign_user_ids": ["281249626"],
      "biz_add_sign_user_ids": [""]
    },
    "instance_id": "ks-g3p5o4qmxnzjy3m3z8d729lkyj",
    "node_id": "7",
    "status": "pending",
    "task_id": "833",
    "user_id": "281249626",
    "ex_user_id": "11",
    "biz_user_id": ""
  },
  "event_instance": {
    "approval_define_id": "ks-6v3xn74ykd12xg0wzr52ljq8wg",
    "creator": "280310411",
    "ex_creator": "280310411",
    "instance_id": "ks-g3p5o4qmxnzjy3m3z8d729lkyj",
    "status": "auditing"
  },
  "event_cc": {
    "approval_define_id": "ks-6v3xn74ykd12xg0wzr52ljq8wg",
    "instance_id": "ks-g3p5o4qmxnzjy3m3z8d729lkyj",
    "cc_id": "1024",
    "form_user_id": "1024",
    "ex_form_user_id": "1024",
    "to_user_id": "1024",
    "ex_to_user_id": "1024"
  },
  "event_external_action": {
    "define_code": "external_define_001",
    "instance_id": "external_instance_123456",
    "task_id": "external_task_789",
    "action_type": "approve",
    "action_context": "{\"custom_field\":\"value\"}",
    "reason": "同意该申请",
    "approval_message_id": "ks-g3p5o4qmxnzjy3v8z8d729lkyj",
    "user_id": "281249626"
  }
}
```