# 【34507】统一待办推送支持 ECODE 方式开发

> 来源:`docs/【34507】新增功能：统一待办推送支持ECODE方式开发.docx`
> 作者:李黎清 | 审批者:徐如晶 | 主题:统一待办推送支持 ECODE 方式开发
> 提取日期:2026-06-23 | 提取方式:`pandoc --track-changes=all`

## 目录

1. [文档版本控制](#文档版本控制)
2. [1. 引言](#1-引言)
3. [1.1 背景](#11-背景)
4. [2. 概述](#2-概述)
5. [2.1 功能描述](#21-功能描述)
6. [3. 功能说明](#3-功能说明)
7. [3.1 统一待办推送 HTTP 订阅方式](#31-统一待办推送-http-订阅方式)
8. [3.2 统一待办推送 MQ 订阅方式](#32-统一待办推送-mq-订阅方式)

## 1. 引言

### 1.1 背景

统一待办推送一直以来通过 EC 服务上开发套件对接第三方接口实现业务。这种做法无法满足增长的二开需求量,第三方业务需求变化也难以只靠套件化快速覆盖。

因此需要一个统一出口,让任意第三方平台(包括 ECODE)可以方便订阅统一待办推送数据,再按自己的业务需要完成二开并对接第三方接口。

## 2. 概述

### 2.1 功能描述

1. 统一待办推送 HTTP 订阅方式。
2. 统一待办推送 MQ 订阅方式。

## 3. 功能说明

文档目录中还提到统一待办中心应用系统工作流程数据支持展示“删除”状态,高级搜索处理状态条件支持查询“删除”状态数据。

### 3.1 统一待办推送 HTTP 订阅方式

配置入口:

```text
统一待办推送 -> 基础设置 -> 新建推送信息
```

配置项:

| 项 | 值 |
| --- | --- |
| 推送类型 | 自定义 |
| 推送类 | `com.weaver.intunifytodo.client.engine.push.request.interfaces.WPushRequestForECODE` |
| TodoURL | 对接的接口地址 |

推送后,所有流程信息均推送给配置的外部接口,再进行二次业务实现。

#### 推送内容结构

推送内容为 JSON。顶层字段示例:

```json
{
  "id": 1169968827050229760,
  "sysCode": "ecode",
  "serverURL": "",
  "data": {},
  "paramJSON": {
    "todoURL": "http://example/rest/ofs/batchDeleteUserRequestInfoByJson"
  }
}
```

`data` 里包含流程、租户、人员、节点、链接和明细数据。重要字段:

| 字段 | 含义 |
| --- | --- |
| `tenantKey` | 租户 key |
| `timeStamp` | 推送时间戳 |
| `userId` | 用户账号 ID |
| `userToHrmRule` | 人员匹配规则值 |
| `requestId` | 流程请求 ID |
| `workflowId` | 流程 ID |
| `workflowName` | 流程名称 |
| `currentNodeName` | 当前节点名称 |
| `workflowType` | 流程类型 |
| `createDateTime` | 创建时间 |
| `flowStatus` | 流程状态对象 |
| `operateType` | 操作类型 |
| `pcUrl` | PC 流程地址 |
| `appUrl` | 移动端流程地址 |
| `adapterUrl` | 适配地址 |
| `wpushType` | 推送类型,示例为 `REQUEST` |
| `detailMap` | 按状态分组的明细 |
| `detailList` | 明细数组 |

`detailMap` 处理状态分组:

```json
{
  "DELETE": [],
  "OVER": [],
  "TODO": [],
  "DONE": []
}
```

明细项重要字段:

| 字段 | 含义 |
| --- | --- |
| `userId` | 接收用户 ID |
| `logId` | 日志 ID |
| `sendLogId` | 推送日志 ID |
| `sendGroup` | 分组,如 `TODO` 或 `DONE` |
| `realUserId` | 实际用户 ID |
| `cid` | 明细关联 ID |
| `beAgentUserId` | 被代理用户 ID |
| `receiveDateTime` | 接收时间 |
| `operateDateTime` | 操作时间 |
| `readMark` | 阅读状态 |
| `isRemark` | 处理标识 |
| `nodeId` | 节点 ID |
| `nodeName` | 节点名称 |
| `nodeType` | 节点类型 |
| `msgType` | 消息类型,如 `WF_TODO` / `WF_DONE` |
| `needWFBack` | 是否需要流程返回 |
| `isProcessed` | 是否已处理 |
| `viewDatetime` | 查看时间 |
| `otherParams.urlConfig` | 包含 requestId、nodeId、workflowId 的 URL 配置 |
| `handlePcUrl` | PC 办理地址 |
| `handleAppUrl` | 移动端办理地址 |
| `handleAdapterUrl` | 适配办理地址 |

多语言字段示例:

- `nodeNameMultiLangNodeName`
- `workFlowNameMultiLangList`
- `currentNodeNameMultiLangList`

这些字段是数组,元素包含 `langType` 和 `langValue`。

### 3.2 统一待办推送 MQ 订阅方式

#### 配置方式 1

公有云和私有化部署均可使用:

| 项 | 值 |
| --- | --- |
| 推送类型 | 自定义 |
| 推送类 | `com.weaver.intunifytodo.client.engine.push.request.interfaces.WPushRequestForMQ` |
| queueName | 队列名称,根据实际情况设置 |
| maxLength | 队列最大容量,暂无实际作用 |

#### 配置方式 2

私有化部署可使用:

| 项 | 值 |
| --- | --- |
| 推送类型 | `ToMQ` |
| 其他配置 | 与配置方式 1 一致 |

#### 队列建议

设置的 MQ 队列可能要在实际消费时才会自动生成。为防止意外,建议直接在 MQ 中新建对应队列。

推送数据后,即可在 MQ 中获取对应数据等待消费。

> 原文档包含截图和一段超长 JSON 示例。本文保留结构化字段和关键值,截图请查阅原始 docx。
