forked from ChaiHao/BPOS-MVP
- routing domain:选边(XOR 恰取一条 + 默认分支兜底;AND 全走)、边映射装配(四类来源 + S-FEEL 转换)、AND 汇合回齐(容忍分支不阻汇合)、审批点驳回走向声明式 - process-service:起单 → 调度节点 → 负责人四策略解析(结果与依据留痕)→ 活动起单 / 审批点卡工位 / 终点收束按来源回执;任务终态到达继续流转或走失败走向四选一; 审批驳回按声明回指定节点重开新实例;状态每次变动后重算聚合投影 - adapter:流程包(id × version)、工作流实例、节点实例三表持久 —— 崩溃后可续跑 ADR 待补项登记为 debt M5-1:§6.1 的 Mastra workflow 编译器作为可替换 adapter 后补, 当前由自持确定性状态机承担,语义等价、usecase 不动 325 个测试通过,门禁五道全绿 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
3.3 KiB
3.3 KiB
module: process
职责: 流程层:流程包定义与版本、边映射闭合校验(连线即映射 · 画图即校验 · 不闭合不得发布)、 负责人四策略的确定性解析、工作流状态的聚合投影、失败走向的消化判定、节点实例重开 不负责: 活动的执行(见 task 与范式引擎)、触发器(与流程包平级,见 trigger)、 画布的绘制(见 apps/web 的 gov-process)
公开出口: index.ts
- 类型:
ProcessServiceStartWorkflowInputWorkflowRecordClosureReportClosureViolationActivityContractFaceCandidateResolutionNodeInstanceWorkflowStateDispatch - 错误:
NotPublishableErrorPositionVacantError - 端口类型:
ProcessStoreActivityDirectoryOrgDirectoryTaskGatewayApprovalGatewaySfeelFlowEventPublisherReceiptNotifier - 用例工厂:
createProcessService(deps): ProcessService - 纯函数:
checkClosurepublishableresolveOwneraggregateWorkflowStateisDigestednextInstanceNumberselectEdgesassemblejoinReadyrejectRouteOfdispatchOfstartNodeOf - adapter:
createProcessStore;Drizzle 表:processPackageTableworkflowTablenodeInstanceTable
层级: L7(编码规范 §4) 依赖: @contracts;task(L6)、@sfeel 被依赖: trigger, app(治理台 · 工作流管理)
不变量(OS 03 / 3.2):
- 不闭合不得发布:未完成边、必填未映射、类型冲突、孤立节点、异或出边缺条件、
汇合同名字段来源不明、容忍分支被下游必填依赖 —— 任一即
publishable = false - 求值语义前后端同源:画布的即时校验与后端裁决共用
checkClosure - 负责人解析确定性:轮值并列时按 staffId 稳定排序;同输入必同结果,结果与依据留痕
- 工作流状态是聚合投影:流程层不另设状态机;计量对象是节点实例, 重开产生新实例、旧实例不再入算;XOR 未选分支从未激活、不入集合
- 失败走向的消化:改道 / 容忍 / 升审批一经生效即消化;终止流待人工处置中算异常
- 流级重做一律重开新实例 —— 同节点、新任务 ID、留痕关联,不复活旧任务
其它不变量:
- 流转零 LLM:选边与条件求值全部经
@sfeel;判定依据入事件记录 - XOR 恰取一条:条件命中优先,无条件的边作默认分支兜底
- AND 汇合要回齐:未回齐就不进汇合节点;容忍分支以「已消化」计,不阻汇合
- 流程层不自动重试活动(过程内重试归 Harness); 流级重做一律人裁决后重开新任务实例
- 驳回走向声明式:审批点的驳回按
reject声明回指定节点重开新实例,不由临场决定 - 凡单必有来源:
source必填;终点按输出声明交付、按来源回执
M5 待补(docs/PROGRESS.md · docs/debt.md M5-1)
internal/adapter/workflow-compiler.ts —— 编码规范 §6.1 规定流程包动态编译为 Mastra
createWorkflow/createStep(XOR → .branch(),AND → .parallel(),节点 suspend()/resume())。
当前流转由本模块自持的确定性状态机 + sys.node_instance 持久承担,语义等价且已可测;
Mastra 编译器作为可替换的 adapter 后补,替换时 usecase 不动。