10
10
import json
11
11
import threading
12
12
import traceback
13
+ import uuid
13
14
from concurrent .futures import ThreadPoolExecutor
14
15
from functools import reduce
15
16
from typing import List , Dict
@@ -575,7 +576,7 @@ def get_runtime_details(self):
575
576
details ['node_id' ] = node .id
576
577
details ['up_node_id_list' ] = node .up_node_id_list
577
578
details ['runtime_node_id' ] = node .runtime_node_id
578
- details_result [node . runtime_node_id ] = details
579
+ details_result [str ( uuid . uuid1 ()) ] = details
579
580
return details_result
580
581
581
582
def get_answer_text_list (self ):
@@ -664,9 +665,18 @@ def get_next_node_list(self, current_node, current_node_result):
664
665
for edge in self .flow .edges :
665
666
if (edge .sourceNodeId == current_node .id and
666
667
f"{ edge .sourceNodeId } _{ current_node_result .node_variable .get ('branch_id' )} _right" == edge .sourceAnchorId ):
667
- if self .dependent_node_been_executed (edge .targetNodeId ):
668
+ next_node = [node for node in self .flow .nodes if node .id == edge .targetNodeId ]
669
+ if len (next_node ) == 0 :
670
+ continue
671
+ if next_node [0 ].properties .get ('condition' , "AND" ) == 'AND' :
672
+ if self .dependent_node_been_executed (edge .targetNodeId ):
673
+ node_list .append (
674
+ self .get_node_cls_by_id (edge .targetNodeId ,
675
+ [* current_node .up_node_id_list , current_node .node .id ]))
676
+ else :
668
677
node_list .append (
669
- self .get_node_cls_by_id (edge .targetNodeId , self .get_up_node_id_list (edge .targetNodeId )))
678
+ self .get_node_cls_by_id (edge .targetNodeId ,
679
+ [* current_node .up_node_id_list , current_node .node .id ]))
670
680
else :
671
681
for edge in self .flow .edges :
672
682
if edge .sourceNodeId == current_node .id :
@@ -676,10 +686,12 @@ def get_next_node_list(self, current_node, current_node_result):
676
686
if next_node [0 ].properties .get ('condition' , "AND" ) == 'AND' :
677
687
if self .dependent_node_been_executed (edge .targetNodeId ):
678
688
node_list .append (
679
- self .get_node_cls_by_id (edge .targetNodeId , self .get_up_node_id_list (edge .targetNodeId )))
689
+ self .get_node_cls_by_id (edge .targetNodeId ,
690
+ [* current_node .up_node_id_list , current_node .node .id ]))
680
691
else :
681
692
node_list .append (
682
- self .get_node_cls_by_id (edge .targetNodeId , [current_node .node .id ]))
693
+ self .get_node_cls_by_id (edge .targetNodeId ,
694
+ [* current_node .up_node_id_list , current_node .node .id ]))
683
695
return node_list
684
696
685
697
def get_reference_field (self , node_id : str , fields : List [str ]):
0 commit comments