using Serein.Library; using Serein.Library.Api; using Serein.Library.Utils; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Serein.NodeFlow { /// /// 脚本代码中关于流程运行的API /// public class ScriptFlowApi : IScriptFlowApi { /// /// 流程环境 /// public IFlowEnvironment Env { get; private set; } /// /// 对应的节点 /// public NodeModelBase NodeModel { get; private set; } /// /// 创建流程脚本接口 /// /// 运行环境 /// 节点 public ScriptFlowApi(IFlowEnvironment environment, NodeModelBase nodeModel) { Env = environment; NodeModel = nodeModel; } public Task CallNode(string nodeGuid) { throw new NotImplementedException(); } public object? GetArgData(IDynamicContext context, int index) { var _paramsKey = $"{context?.Guid}_{NodeModel.Guid}_Params"; var obj = context?.GetFlowData(_paramsKey); if (obj is object[] @params && index < @params.Length) { return @params[index]; } return null; } public object? GetFlowData(IDynamicContext context) { return context?.GetFlowData(NodeModel.Guid); } public object? GetGlobalData(string keyName) { return SereinEnv.GetFlowGlobalData(keyName); } } }