using System.Text.Json; using System.Text.Json.Serialization; using Workflow.Domain.Enums; namespace Workflow.Domain.Engine; /// /// 钉钉式审批流的强类型树模型。前端树编辑器与后端存储/编译共用此结构。 /// /// 结构约定: /// /// Root 固定为 (发起人节点)。 /// 顺序链:每个节点的 指向下一个节点,形成链式(发起人→审批→抄送…)。 /// 条件分支 / 并行分支容器:节点的 存放分支集合;每条分支内部又是独立的顺序链()。 /// 分支在末端会自动收口回主链(编译器负责生成汇合边)。 /// /// 与 (运行态图)解耦: /// 负责把本树编译成引擎可运行的图。 /// /// public sealed class WorkflowTree { /// 树的根节点(发起人)。前端编辑态始终非空;空树用 表达。 [JsonPropertyName("root")] public TreeNode? Root { get; set; } /// 空树工厂:用于缺省/容错。 public static WorkflowTree Empty() => new(); }