📋 需求说明
场景一:新增流程
场景二:流程设计器

签章管理需求说明

流程管理 · 契约锁对接 · 研发评审用 · 2026-07-31

一、背景与目标

华腾DTMP流程管理模块新增签章能力,通过对接契约锁私有云API,支持在流程审批环节完成电子签章。签章方式分为静默签(系统自动盖章)手动签署(用户在办理页面内嵌iframe完成签名)两种,双方(我方+对方如高校)均可独立配置。

二、整体流程设计

新增流程 → 选择【签章流程(契约锁)】类型 ↓ 进入流程设计器 → 审批节点出现【签章设置】Tab(与设置审批人/节点权限/节点事件/表单权限设置并列) ↓ 流程设计人员在每个审批节点配置签章参数 ↓ 用户发起申请 → 系统调契约锁API创建合同文档 + 创建合同(生成contractId,存入流程实例) ↓ 流程流转到签章节点 → 审批人点击【通过】才触发(驳回不触发任何签章动作)   ├─ 有盖章配置(静默签)→ 系统自动调契约锁完成盖章,用户无感   └─ 有签名配置(手动签)→ 办理页面嵌入iframe,用户在页内完成签名      ↓ 前端监听签署完成事件(非契约锁webhook回调)      ↓ 流程继续流转至下一节点

三、流程类型扩展

流程类型 审批节点签章Tab 契约锁合同创建
普通流程不显示不触发
签章流程(契约锁)显示,可配置发起时自动创建

四、签章配置项说明(对应【场景二】右侧签章设置Tab)

配置项 说明 契约锁接口字段
是否签章该审批节点是否触发签章动作
签章方式仅盖章(静默)/ 仅签名(手动)/ 同时使用action.type + autoSign
签章类型公章/合同章/财务章/法人章等,运行时根据当前用户身份匹配印章IDaction.sealId(运行时查询,不手选)
定位方式关键字定位(推荐)或坐标定位,二选一location.keyword / offsetX+offsetY
定位关键字/第几个PDF中的关键字文本;-1=最后一个,0=全部,N=第N个location.keyword / keywordIndex
签署页码-1=最后一页,0=全部,N=第N页location.page

五、签章方式与契约锁接口映射

签章方式 Action type autoSign 用户感知
仅盖章(静默签)CORPORATEtrue系统自动完成,用户无感
仅签名(手动签)PERSONALfalse办理页面嵌入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. 我方与对方(如高校)的盖章/签名定位参数各自独立配置,互不共用
用印申请(签章流程)(V1.0)
① 流程图
② 功能设置
③ 功能权限
④ 采集配置
100%
👤 发起人
事项发起人
+
签章
👤 导员审批
发起人自己
+
👤 院系主任审批
发起人自己
+
流程结束
导员审批 ×
设置审批人
节点权限
节点事件
表单权限设置
签章设置