1. 解决了DynamicFlow标记在静态类上导致流程初始化异常的问题,现在可以使用DynamicFlow修饰静态类了

This commit is contained in:
fengjiayi
2025-08-05 11:15:42 +08:00
parent 3059e109fc
commit 0029bc885e
3 changed files with 42 additions and 37 deletions

View File

@@ -146,28 +146,28 @@ namespace Serein.NodeFlow.Env
// 初始化每个画布的数据,转换为流程任务
var flowTasks = guids.Select(guid =>
{
if (!flowModelService.TryGetCanvasModel(guid, out var canvasModel))
{
SereinEnv.WriteLine(InfoType.WARN, $"画布不存在,将不会运行。{guid}");
return default;
}
if (canvasModel.StartNode is null)
{
SereinEnv.WriteLine(InfoType.WARN, $"画布不存在起始节点,将不会运行。{guid}");
return default;
}
return canvasModel;
})
if (!flowModelService.TryGetCanvasModel(guid, out var canvasModel))
{
SereinEnv.WriteLine(InfoType.WARN, $"画布不存在,将不会运行。{guid}");
return default;
}
if (canvasModel.StartNode is null)
{
SereinEnv.WriteLine(InfoType.WARN, $"画布不存在起始节点,将不会运行。{guid}");
return default;
}
return canvasModel;
})
.Where(canvasModel => canvasModel != default && canvasModel.StartNode != null)
.OfType<FlowCanvasDetails>()
.ToDictionary(key => key.Guid,
value => new FlowTask
{
GetStartNode = () => value.StartNode!,
GetNodes = () => flowModelService.GetAllNodeModel(value.Guid),
IsWaitStartFlow = false
});
{
GetStartNode = () => value.StartNode!,
GetNodes = () => flowModelService.GetAllNodeModel(value.Guid),
IsWaitStartFlow = false
});
if(flowTasks.Values.Count == 0)
@@ -181,7 +181,7 @@ namespace Serein.NodeFlow.Env
IOC.Register<IFlowEnvironment>(() => flowEnvironment);
var flowWorkManagement = GetFWM();
flowWorkManagement.WorkOptions.Flows = flowTasks;
flowWorkManagement.WorkOptions.AutoRegisterTypes = flowLibraryService.GetaAutoRegisterType(); // 需要自动实例化的类型
//flowWorkManagement.WorkOptions.AutoRegisterTypes = flowLibraryService.GetaAutoRegisterType(); // 需要自动实例化的类型
flowWorkManagement.WorkOptions.InitMds = flowLibraryService.GetMdsOnFlowStart(NodeType.Init);
flowWorkManagement.WorkOptions.LoadMds = flowLibraryService.GetMdsOnFlowStart(NodeType.Loading);
flowWorkManagement.WorkOptions.ExitMds = flowLibraryService.GetMdsOnFlowStart(NodeType.Exit);
@@ -351,8 +351,6 @@ namespace Serein.NodeFlow.Env
/// <inheritdoc/>
public void ActivateFlipflopNode(string nodeGuid)
{