修复条件分支和并行分支下的并行分支panic

1.0.6
v-me-50 2025-06-24 17:51:16 +08:00
parent f499afc060
commit b4e04a3d2e
1 changed files with 9 additions and 1 deletions

View File

@ -245,7 +245,12 @@ func RunNode(node *WorkflowNode, ctx *ExecutionContext) error {
var wg sync.WaitGroup var wg sync.WaitGroup
errChan := make(chan error, len(node.ConditionNodes)) errChan := make(chan error, len(node.ConditionNodes))
for _, branch := range node.ConditionNodes { for _, branch := range node.ConditionNodes {
branch.ChildNode.Config["fromNodeData"] = node.Config["fromNodeData"] if branch.ChildNode != nil {
if branch.ChildNode.ChildNode == nil {
branch.ChildNode.Config = make(map[string]any)
}
branch.ChildNode.Config["fromNodeData"] = node.Config["fromNodeData"]
}
wg.Add(1) wg.Add(1)
go func(node *WorkflowNode) { go func(node *WorkflowNode) {
defer wg.Done() defer wg.Done()
@ -271,6 +276,9 @@ func RunNode(node *WorkflowNode, ctx *ExecutionContext) error {
for _, branch := range node.ConditionNodes { for _, branch := range node.ConditionNodes {
if branch.Config["type"] == string(lastStatus) { if branch.Config["type"] == string(lastStatus) {
if branch.ChildNode != nil { if branch.ChildNode != nil {
if branch.ChildNode.Config == nil {
branch.ChildNode.Config = make(map[string]any)
}
fromNodeData, ok := ctx.GetOutput(node.Config["fromNodeId"].(string)) fromNodeData, ok := ctx.GetOutput(node.Config["fromNodeId"].(string))
if !ok { if !ok {
fromNodeData = nil fromNodeData = nil