签章管理需求说明
流程管理 · 契约锁对接 · 研发评审用 · 2026-07-31
一、背景与目标
华腾DTMP流程管理模块新增签章能力,通过对接契约锁私有云API,支持在流程审批环节完成电子签章。签章方式分为静默签(系统自动盖章)和手动签署(用户在办理页面内嵌iframe完成签名)两种,双方(我方+对方如高校)均可独立配置。
二、整体流程设计
新增流程 → 选择【签章流程(契约锁)】类型
↓
进入流程设计器 → 审批节点出现【签章设置】Tab(与设置审批人/节点权限/节点事件/表单权限设置并列)
↓
流程设计人员在每个审批节点配置签章参数
↓
用户发起申请 → 系统调契约锁API创建合同文档 + 创建合同(生成contractId,存入流程实例)
↓
流程流转到签章节点 → 审批人点击【通过】才触发(驳回不触发任何签章动作)
├─ 有盖章配置(静默签)→ 系统自动调契约锁完成盖章,用户无感
└─ 有签名配置(手动签)→ 办理页面嵌入iframe,用户在页内完成签名
↓ 前端监听签署完成事件(非契约锁webhook回调)
↓ 流程继续流转至下一节点
三、流程类型扩展
| 流程类型 |
审批节点签章Tab |
契约锁合同创建 |
| 普通流程 | 不显示 | 不触发 |
| 签章流程(契约锁) | 显示,可配置 | 发起时自动创建 |
四、签章配置项说明(对应【场景二】右侧签章设置Tab)
| 配置项 |
说明 |
契约锁接口字段 |
| 是否签章 | 该审批节点是否触发签章动作 | — |
| 签章方式 | 仅盖章(静默)/ 仅签名(手动)/ 同时使用 | action.type + autoSign |
| 签章类型 | 公章/合同章/财务章/法人章等,运行时根据当前用户身份匹配印章ID | action.sealId(运行时查询,不手选) |
| 定位方式 | 关键字定位(推荐)或坐标定位,二选一 | location.keyword / offsetX+offsetY |
| 定位关键字/第几个 | PDF中的关键字文本;-1=最后一个,0=全部,N=第N个 | location.keyword / keywordIndex |
| 签署页码 | -1=最后一页,0=全部,N=第N页 | location.page |
五、签章方式与契约锁接口映射
| 签章方式 |
Action type |
autoSign |
用户感知 |
| 仅盖章(静默签) | CORPORATE | true | 系统自动完成,用户无感 |
| 仅签名(手动签) | PERSONAL | false | 办理页面嵌入iframe,用户手动签 |
| 签名与盖章同时使用 | CORPORATE + PERSONAL | 盖章true,签名false | 盖章自动完成,签名需手动 |
六、契约锁接口调用时序
【手动签署调用链】
第一步 1.1.1.1 根据文件类型创建合同文档 → POST /v2/document/createbyfile → 得到 documentId
第二步 1.1.4.1 创建合同 → POST /contract/createbycategory → 传入 documentId + 签署方信息,得到 contractId
第三步 1.2.3.1 合同签署页面 v3(支持编号) → 获取签署页面 URL,内嵌 iframe 展示给用户
前端监听 window.postMessage 事件,收到签署完成事件后关闭 iframe
第四步 1.4.2.2 下载合同文档(可选,签署完成后提供下载入口)
【自动签署(静默签)调用链】
第一步 1.1.1.1 根据文件类型创建合同文档 → POST /v2/document/createbyfile → 得到 documentId
第二步 1.1.4.1 创建合同 → POST /contract/createbycategory → 传入 documentId + 签署方信息(autoSign=true),得到 contractId
第三步 1.2.1.2 企业印章静默签署授权链接 → 获取静默签授权(首次使用时需要授权)
第四步 根据盖章配置中的「签章明细」匹配对应印章(默认内部企业,调 v1 接口):
├── 内部企业(本方):1.2.2.1.1 公司公章签署 v1 → autoSign=true,系统自动完成,用户无感
└── 外部企业(对方,如高校):1.2.2.1.2 公司公章签署 v2 → autoSign=true,系统自动完成,用户无感
第五步 1.4.2.2 下载合同文档(可选,签署完成后提供下载入口)
七、异常处理
| 场景 |
处理方式 |
| 创建合同文档失败 | 阻断发起,提示“合同创建失败,请重试” |
| 静默签失败(契约锁返回非0) | 记录失败日志,节点停留在“签章中”状态,管理员可重试 |
| 手动签用户关闭iframe未完成 | 流程停留在当前节点,用户可再次打开iframe继续签署 |
| 审批驳回 | 不触发签章,contractId保留(流程重新发起时复用或重建) |
八、数据结构(节点签章配置示例)
{
"signConfig": {
"enabled": true,
"signMode": "BOTH", // SEAL_ONLY / SIGN_ONLY / BOTH
"triggerOn": "APPROVE", // 仅审批通过时触发
"sealConfig": {
"sealType": "公章",
"locationType": "KEYWORD", // KEYWORD / COORDINATE
"keyword": "所在单位盖章",
"keywordIndex": -1,
"page": -1
},
"signatureConfig": {
"locationType": "KEYWORD",
"keyword": "",
"keywordIndex": -1,
"page": -1
}
}
}
📌 研发注意事项
1. 签章流程类型在流程创建时确定,创建后不可更改
2. 印章选择由设计人员配置「签章类型」,运行时系统根据当前用户身份 + 签章类型调契约锁接口匹配具体印章ID,不暴露给用户选择
3. 手动签完成判断依赖前端监听iframe的window.postMessage事件,需与契约锁确认事件名称和数据格式
4. contractId需存入流程实例的扩展字段,供后续节点签章复用
5. 我方与对方(如高校)的盖章/签名定位参数各自独立配置,互不共用