按 subject_type 绑定的人审人流程:AntV X6 设计、发布编译成步骤/边,运行时只读编译表,不解析画布 JSON。
graph_json,不碰 steps/transitions。 workflow_id 的在途实例不受影响)。设计器入口:/admin/workflows/{id}/design(仅设计中可进)。点选节点/边打开右侧属性面板,用 X6 setData 写入业务配置(审批人、条件、结束结果、边 trigger、通过时动作)。
审批 / 抄送指派方式(节点属性「指派方式」):
| 取值 | 说明 |
|---|---|
user |
指定用户(user_id) |
role |
按 Spatie 角色(role_name) |
subject_field |
按单据用户字段(field,白名单见 config/workflows.php → assignee_fields,如开单人 / 费用申请人) |
审批节点「通过时动作」(config.on_approve,可选):
| 主体 | 取值 | 说明 |
|---|---|---|
| 销售单 | (空) | 无动作,与原先一致 |
| 销售单 | ship |
通过时按当前明细直接出库(件数/单价不变) |
| 销售单 | accept |
通过时按当前明细验收(实收=出库、无差异) |
| 销售单 | invoice |
关键:通过时开票(衔接 08 销售发票;标记本单已开票) |
| 销售单 | collect |
关键:通过时收款(衔接 08 回款;标记本单已收款) |
| 费用申请 | (空) | 无动作 |
| 费用申请 | pay |
通过时付款:写 paid_at、状态 → paid |
销售单财务闭环的两个关键节点是 开票(invoice)与 收款(collect),可与出库/验收节点画在同一条流程里,顺序由业务编排(先票后款 / 先款后票等)。
白名单见 config/workflows.php → actions。模型须实现 WorkflowActionable。
App\Contracts\WorkflowSubject(提交前状态 + 终态回写)。config/workflows.php → subjects 注册类名、中文 label、condition_fields(字段中文;枚举可写 enum 供比较值下拉)、assignee_fields;需要节点动作时再配 actions 并实现 WorkflowActionable。费用申请、采购单、销售单均作为 subject 注册。采购审批通过后单据进入 confirmed(入库/冲销仍见 14)。销售:若节点未挂 ship,实例通过后进入 to_ship(再人手出库);若流程内已 ship/accept,结束时不再压回 to_ship。销售财务侧关键节点:invoice 开票、collect 收款(见上表)。费用申请:付款在节点 on_approve=pay 完成。财务驳回冲销不另开画布节点。
| 进本工作流 | 不进本工作流 |
|---|---|
config/workflows.php 已注册的人审人单据(采购单、销售单、费用申请等) |
财务驳回冲销(见 14);未挂 on_approve 时销售出库/验收仍在单据页人手点 |
销售节点 on_approve=ship|accept 触发的出库/验收写流水 |
独立「动作节点」类型(P0 复用审批节点) |
销售关键节点 on_approve=invoice|collect(开票 / 收款) |
单据页另做「开票」「收款」按钮(与费用申请同理,动作进节点) |
费用申请节点 on_approve=pay 写已付款 |
单据页另做「已付款」按钮 |
| 后续可扩展的人审单据(如采购发票审核) | Eloquent ER |
workflows.graph_json(X6 toJSON)→ 发布编译 → workflow_steps + workflow_transitionsworkflow_instances → workflow_tasks(或签)→ workflow_logs;引擎从不解析 graph_jsonWorkflowEngine::submit($doc):主体 prepareWorkflowSubmit 后开实例;无 published 定义则拒绝。on_approve 则执行(同一事务)→ 沿 trigger=approve 边前进;到达 end 调 applyWorkflowStatus。reject_to 可配「上一审批节点」(默认,走 approve_stack;栈空则实例终态驳回)或「开始(退回发起人)」。销售单未出库时驳回回 draft;已出库/已验收后不可驳回(须走退拒或财务驳回)。费用申请已 paid 后不可驳回。无需画驳回边。表字段与节点类型见实现代码与迁移;审批流水只写 workflow_logs。
| P0 | 延后 |
|---|---|
可注册多 subject、五类节点、或签、驳回上一节点 / 退回发起人、销售 on_approve 出库/验收/开票/收款、费用申请 on_approve=pay |
会签、驳回任意节点、消息投递对接、通过时弹窗改件数、采购侧动作 |