mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-06 01:30:47 +08:00
在Serein.Library添加了基础功能模块,暂时实现了键值对/数组数据的创建(可配合JSON库进行序列化)
This commit is contained in:
@@ -53,40 +53,36 @@ namespace Serein.NodeFlow.Model
|
||||
/// <param name="context"></param>
|
||||
/// <returns></returns>
|
||||
public override async Task<object?> ExecutingAsync(IDynamicContext context)
|
||||
{
|
||||
// 条件区域中遍历每个条件节点
|
||||
foreach (SingleConditionNode? node in ConditionNodes)
|
||||
{
|
||||
var state = await JudgeAsync(context, node);
|
||||
context.NextOrientation = state; // 每次判读完成后,设置区域后继方向为判断结果
|
||||
if (state != ConnectionInvokeType.IsSucceed)
|
||||
{
|
||||
// 如果条件不通过,立刻推出循环
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//var previousNode = context.GetPreviousNode()
|
||||
return Task.FromResult(context.TransmissionData(this)); // 条件区域透传上一节点的数据
|
||||
}
|
||||
|
||||
|
||||
private async Task<ConnectionInvokeType> JudgeAsync(IDynamicContext context, SingleConditionNode node)
|
||||
{
|
||||
try
|
||||
{
|
||||
await node.ExecutingAsync(context);
|
||||
return context.NextOrientation;
|
||||
// 条件区域中遍历每个条件节点
|
||||
foreach (SingleConditionNode? node in ConditionNodes)
|
||||
{
|
||||
var state = await node.ExecutingAsync(context);
|
||||
if (context.NextOrientation != ConnectionInvokeType.IsSucceed)
|
||||
{
|
||||
// 如果条件不通过,立刻推出循环
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//var previousNode = context.GetPreviousNode()
|
||||
return context.TransmissionData(this); // 条件区域透传上一节点的数据
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
context.NextOrientation = ConnectionInvokeType.IsError;
|
||||
RuningException = ex;
|
||||
return ConnectionInvokeType.IsError;
|
||||
context.ExceptionOfRuning = ex;
|
||||
return context.TransmissionData(this); // 条件区域透传上一节点的数据
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override ParameterData[] GetParameterdatas()
|
||||
{
|
||||
return [];
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace Serein.NodeFlow.Model
|
||||
catch (Exception ex)
|
||||
{
|
||||
context.NextOrientation = ConnectionInvokeType.IsError;
|
||||
RuningException = ex;
|
||||
context.ExceptionOfRuning = ex;
|
||||
}
|
||||
|
||||
Console.WriteLine($"{result} {Expression} -> " + context.NextOrientation);
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace Serein.NodeFlow.Model
|
||||
catch (Exception ex)
|
||||
{
|
||||
context.NextOrientation = ConnectionInvokeType.IsError;
|
||||
RuningException = ex;
|
||||
context.ExceptionOfRuning = ex;
|
||||
return parameter;
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace Serein.NodeFlow.Model
|
||||
#endregion
|
||||
|
||||
MethodDetails md = MethodDetails;
|
||||
if (!context.Env.TryGetDelegateDetails(md.AssemblyName, md.MethodName, out var dd))
|
||||
if (!context.Env.TryGetDelegateDetails(md.AssemblyName, md.MethodName, out var dd)) // 流程运行到某个节点
|
||||
{
|
||||
throw new Exception("不存在对应委托");
|
||||
}
|
||||
@@ -72,14 +72,14 @@ namespace Serein.NodeFlow.Model
|
||||
}
|
||||
await Console.Out.WriteLineAsync($"触发器[{this.MethodDetails.MethodName}]异常:" + ex);
|
||||
context.NextOrientation = ConnectionInvokeType.None;
|
||||
RuningException = ex;
|
||||
context.ExceptionOfRuning = ex;
|
||||
return null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await Console.Out.WriteLineAsync($"触发器[{this.MethodDetails.MethodName}]异常:" + ex);
|
||||
context.NextOrientation = ConnectionInvokeType.IsError;
|
||||
RuningException = ex;
|
||||
context.ExceptionOfRuning = ex;
|
||||
return null;
|
||||
}
|
||||
finally
|
||||
|
||||
Reference in New Issue
Block a user