mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-03 00:00:49 +08:00
重写了Script的解释器代码,使其更加直观。重写了流程控制的部分代码,分离运行环境IOC与流程IOC。
This commit is contained in:
@@ -141,11 +141,11 @@ namespace Serein.NodeFlow.Model
|
||||
}
|
||||
else
|
||||
{
|
||||
var instance = Env.IOC.Get(md.ActingInstanceType);
|
||||
var instance = Env.FlowControl.IOC.Get(md.ActingInstanceType);
|
||||
if (instance is null)
|
||||
{
|
||||
Env.IOC.Register(md.ActingInstanceType).Build();
|
||||
instance = Env.IOC.Get(md.ActingInstanceType);
|
||||
Env.FlowControl.IOC.Register(md.ActingInstanceType).Build();
|
||||
instance = Env.FlowControl.IOC.Get(md.ActingInstanceType);
|
||||
}
|
||||
object[] args = await this.GetParametersAsync(context, token);
|
||||
var result = await dd.InvokeAsync(instance, args);
|
||||
|
||||
@@ -39,11 +39,11 @@ namespace Serein.NodeFlow.Model
|
||||
throw new Exception("不存在对应委托");
|
||||
}
|
||||
|
||||
var instance = context.Env.IOC.Get(md.ActingInstanceType);
|
||||
var instance = Env.FlowControl.IOC.Get(md.ActingInstanceType);
|
||||
if (instance is null)
|
||||
{
|
||||
Env.IOC.Register(md.ActingInstanceType).Build();
|
||||
instance = Env.IOC.Get(md.ActingInstanceType);
|
||||
Env.FlowControl.IOC.Register(md.ActingInstanceType).Build();
|
||||
instance = Env.FlowControl.IOC.Get(md.ActingInstanceType);
|
||||
}
|
||||
await dd.InvokeAsync(instance, [context]);
|
||||
var args = await this.GetParametersAsync(context, token);
|
||||
|
||||
@@ -246,6 +246,10 @@ namespace Serein.NodeFlow.Model
|
||||
}
|
||||
else
|
||||
{
|
||||
/*var tempName = node.MethodDetails.MethodName;
|
||||
var index = node.MethodDetails.MethodName.IndexOf('(');
|
||||
var methodName = tempName[..(index - 1)];
|
||||
return GetApiInvokeName(node, methodName);*/
|
||||
FlowLibraryService service = node.Env.IOC.Get<FlowLibraryService>();
|
||||
if (service.TryGetMethodInfo(md.AssemblyName, md.MethodName, out var methodInfo))
|
||||
{
|
||||
|
||||
@@ -69,11 +69,11 @@ namespace Serein.NodeFlow.Model.Operation
|
||||
public override async Task<bool> ExecuteAsync()
|
||||
{
|
||||
if (!ValidationParameter()) return false; // 执行时验证
|
||||
|
||||
|
||||
IFlowNode? nodeModel;
|
||||
if (IsBaseNode)
|
||||
{
|
||||
nodeModel = FlowNodeExtension.CreateNode(flowEnvironment, NodeControlType); // 加载基础节点
|
||||
nodeModel = FlowNodeExtension.CreateNode(flowEnvironment.IOC, NodeControlType); // 加载基础节点
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -89,7 +89,7 @@ namespace Serein.NodeFlow.Model.Operation
|
||||
return false;
|
||||
//throw new InvalidOperationException($"无法创建节点,因为没有找到{MethodDetailsInfo.AssemblyName}.{MethodDetailsInfo.MethodName}方法,请检查是否已加载对应程序集");
|
||||
}
|
||||
nodeModel = FlowNodeExtension.CreateNode(flowEnvironment, NodeControlType, methodDetails); // 一般的加载节点方法
|
||||
nodeModel = FlowNodeExtension.CreateNode(flowEnvironment.IOC, NodeControlType, methodDetails); // 一般的加载节点方法
|
||||
}
|
||||
|
||||
nodeModel.Guid ??= Guid.NewGuid().ToString();
|
||||
|
||||
Reference in New Issue
Block a user