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();
}