using Serein.Library.Api; using Serein.Library.Entity; using Serein.Library.Enums; using Serein.NodeFlow.Base; namespace Serein.NodeFlow.Model { /// /// 组合动作节点(用于动作区域) /// public class CompositeActionNode : NodeModelBase { public List ActionNodes; /// /// 组合动作节点(用于动作区域) /// public CompositeActionNode(List actionNodes) { ActionNodes = actionNodes; } //public override async Task Executing(IDynamicContext context) public override Task ExecutingAsync(IDynamicContext context) { throw new NotImplementedException("动作区域暂未实现"); } internal override Parameterdata[] GetParameterdatas() { return []; } internal override NodeInfo? ToInfo() { if (MethodDetails is null) return null; var trueNodes = SuccessorNodes[ConnectionType.IsSucceed].Select(item => item.Guid); // 真分支 var falseNodes = SuccessorNodes[ConnectionType.IsFail].Select(item => item.Guid);// 假分支 var errorNodes = SuccessorNodes[ConnectionType.IsError].Select(item => item.Guid);// 异常分支 var upstreamNodes = SuccessorNodes[ConnectionType.Upstream].Select(item => item.Guid);// 上游分支 // 生成参数列表 Parameterdata[] parameterData = GetParameterdatas(); return new NodeInfo { Guid = Guid, MethodName = MethodDetails?.MethodName, Label = DisplayName ?? "", Type = this.GetType().ToString(), TrueNodes = trueNodes.ToArray(), FalseNodes = falseNodes.ToArray(), UpstreamNodes = upstreamNodes.ToArray(), ParameterData = parameterData.ToArray(), ErrorNodes = errorNodes.ToArray(), ChildNodeGuids = ActionNodes.Select(node => node.Guid).ToArray(), }; } } }