Skip to content

规范 06 · 统一门面(JeeflowFacade)

面向"接口即 POST + JSON body"的框架风格:集成方只实现一个转发 controller, 把 body JSON 转成 Map 传入门面,所有流程能力通过 action 路由。 设计动机(为什么需要门面、与 boot2/boot3 端点的关系)见 设计原理 07 · 管理扩展与门面

入口契约

text
Map<String,Object> flow(String action, Map<String,Object> args)
  • action:boot2/boot3 端点路径的短名(见 action 清单)
  • 返回统一结构(对齐 mldong CommonResult):code=0 成功 / code!=0 失败(msg 描述)
text
{ "code": 0, "msg": "操作成功", "data": { ... } }
  • 操作人(operator)约定:门面不感知登录态——args.operator 显式传入(demo 风格), 集成方可覆盖为自定义实现(如从 LoginUserHolder 注入)

action 清单

分组action说明
流程定义processDefine/page分页查询(别名 t
processDefine/detail详情(含 jsonObject 流程图)
processDefine/startAndExecute发起并自动完成申请节点
processDefine/deploy部署:JSON → ModelParser 校验 → 版本管理写入 define
processDefine/redeploy按 ID 覆盖更新定义内容
processDefine/remove删除定义
processDefine/upAndDown启用/停用(state 0/1)
流程实例processInstance/page分页(t.operator 过滤)
processInstance/detail实例详情 + 任务列表
processInstance/startAndExecute同 processDefine/startAndExecute
processInstance/withdraw撤回(级联废弃 doing 任务)
流程任务processTask/todoList我的待办分页
processTask/doneList我的已办分页
processTask/execute处理待办(submitType 全枚举分发,对齐 boot3 execute)
流程设计processDesign/page设计稿分页
processDesign/detail设计稿详情(含历史列表)
processDesign/save保存设计(写 design + 追加 his 快照)
processDesign/remove删除设计稿
processDesign/deploy发布设计稿 → 生成/升级 define(同 processDefine/deploy 语义)
委托代理processSurrogate/page委托分页
processSurrogate/save新增/更新委托
processSurrogate/remove删除委托
流程定义(视图)processDefine/getLastByName按编码查最新版本定义
流程实例(视图)processInstance/highLight流程高亮:活跃/历史节点 + 路径补全(对齐 boot3 HighLightVO)
processInstance/approvalRecord审批记录:实例全部历史任务
processInstance/getAssigneeTextData参与人回显文本(label:任务显示名:参与者
processInstance/createCCInstance创建抄送(actorIds 数组)
processInstance/updateCCStatus更新抄送已读状态
processInstance/ccList我的抄送分页(依赖核心分页 SPI pageCcInstances
流程任务(视图)processTask/detail任务详情(参与者 + executable + taskModel)
processTask/jumpAbleTaskNameList可跳转节点(已办非会签节点去重)
processTask/candidatePage执行候选人:模型候选配置 → 用户信息;无候选 → 用户搜索(IUserSearchProvider)
processTask/surrogate单任务委托(转交他人,addTaskActor)
processTask/addCandidate加签(addTaskActor)
processTask/latest实例最新进行中任务

deploy 语义

  1. 入参 JSON → ModelParser 解析出 name/displayName/type
  2. 按 name 查最新 define:存在 → version+1 插新记录;不存在 → 新记录(version 从 0 起)
  3. 设计稿发布时同时更新 design 的 is_deployed=1

execute 分发(对齐 boot3 ProcessTaskController.execute)

submitType引擎方法
0 APPLY / 1 AGREE / 20 会签拒绝executeProcessTask
2 REJECTexecuteAndJumpToEnd
3 ROLLBACKexecuteAndJumpTask(target=null)
4 JUMPexecuteAndJumpTask(target=args.taskName)
5 重新提交业务方语义(发起人重新发起,门面透传)
6 ROLLBACK_TO_OPERATORexecuteAndJumpToFirstTaskNode

IUserSearchProvider(可选 SPI)

processTask/candidatePage 的"无候选 → 用户分页搜索"依赖集成方用户系统,通过可选 SPI 注入:

text
interface IUserSearchProvider:
    page(query): PageResult<Map>      # 用户分页搜索(query 透传 pageNum/pageSize/搜索条件)
    findById(userId): Map             # 单用户信息(候选映射用)
  • 未注入时:模型候选命中(candidateUsers 等配置)仍可用 UserProvider.getUser 逐个映射; 用户分页搜索返回明确错误
  • 各语言注入位置:Java 构造器;Go facade.New 参数/字段;Python/Node 构造参数

jeeflow · 轻量级多语言工作流引擎