@@ -225,6 +225,9 @@ def handler(self, workflow):
225225class BaseLoopNode (ILoopNode ):
226226 def save_context (self , details , workflow_manage ):
227227 self .context ['result' ] = details .get ('result' )
228+ for key , value in details ['context' ].items ():
229+ if key not in self .context :
230+ self .context [key ] = value
228231 self .answer_text = str (details .get ('result' ))
229232
230233 def get_answer_list (self ) -> List [Answer ] | None :
@@ -262,7 +265,13 @@ def workflow_manage_new_instance(loop_data, global_data, start_node_id=None,
262265 _write_context = get_write_context (loop_type , array , number , loop_body , stream ),
263266 _is_interrupt = _is_interrupt_exec )
264267
268+ def get_loop_context_data (self ):
269+ fields = self .node .properties .get ('config' , []).get ('fields' , []) or []
270+ return {f .get ('value' ): self .context .get (f .get ('value' )) for f in fields if
271+ self .context .get (f .get ('value' )) is not None }
272+
265273 def get_details (self , index : int , ** kwargs ):
274+
266275 return {
267276 'name' : self .node .properties .get ('stepName' ),
268277 "index" : index ,
@@ -276,6 +285,7 @@ def get_details(self, index: int, **kwargs):
276285 "current_item" : self .context .get ("item" ),
277286 'loop_type' : self .node_params_serializer .data .get ('loop_type' ),
278287 'status' : self .status ,
288+ 'loop_context_data' : self .get_loop_context_data (),
279289 'loop_node_data' : self .context .get ("loop_node_data" ),
280290 'loop_answer_data' : self .context .get ("loop_answer_data" ),
281291 'err_message' : self .err_message
0 commit comments