ExceptionBranchPlugin.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Collections.Generic;
  2. using System.Threading;
  3. using TeamAAS.FlowEditor.Models;
  4. using TeamAAS.FlowEditor.Plugins;
  5. using Plugins.Standard.Models;
  6. namespace Plugins.Standard
  7. {
  8. /// <summary>
  9. /// 异常分支插件 - 前驱节点 Failed 时由 FlowExecutor 显式触发执行;
  10. /// 无可编辑属性,双击不弹窗。多前驱异常时串行排队执行。
  11. /// 默认 PluginRun 返回 Success;具体异常处理逻辑由派生类重写。
  12. /// </summary>
  13. [Plugin("异常分支", PluginCategory.逻辑判断, /*modelType*/ null,
  14. "AlertOutline",
  15. NodeShape = NodeCategory.ExceptionBranch,
  16. Description = "前置节点异常时执行的分支节点,多前驱异常时串行排队执行")]
  17. [System.Serializable]
  18. public class ExceptionBranchPlugin : BasePlugin<ExceptionBranchModel>
  19. {
  20. public override List<OutputField> DeclareOutputs() => new List<OutputField>
  21. {
  22. new OutputField("状态", typeof(string)),
  23. new OutputField("异常源", typeof(string))
  24. };
  25. public override NodeRunStatus PluginRun(CancellationToken token, out Dictionary<string, object> results)
  26. {
  27. results = new Dictionary<string, object>
  28. {
  29. ["状态"] = "异常分支已执行",
  30. ["异常源"] = Model?.NodeName ?? ""
  31. };
  32. Log(2, $"异常分支已执行,异常源: {Model?.NodeName ?? "(未知)"}", TeamAAS.LogLevel.Warning);
  33. return NodeRunStatus.Success;
  34. }
  35. }
  36. }