1414 PlaybookExecutionStatusType
1515from protos .playbooks .playbook_pb2 import PlaybookTask
1616from utils .proto_utils import proto_to_dict , dict_to_proto
17-
17+ from integrations . utils . executor_utils import check_multiple_task_results
1818logger = logging .getLogger (__name__ )
1919
2020
@@ -126,7 +126,7 @@ def get_resolved_task(self, global_variable_set: Struct, input_task: PlaybookTas
126126
127127 return resolved_task , resolved_source_task_proto , task_local_variable_map
128128
129- def execute_task (self , time_range : TimeRange , global_variable_set , task : PlaybookTask ) -> PlaybookTaskResult :
129+ def execute_task (self , time_range : TimeRange , global_variable_set , task : PlaybookTask ):
130130 try :
131131 source_connector_proto = None
132132 if task .task_connector_sources and len (task .task_connector_sources ) > 0 :
@@ -142,18 +142,26 @@ def execute_task(self, time_range: TimeRange, global_variable_set, task: Playboo
142142 try :
143143 # Execute task
144144 task_type = resolved_source_task .type
145- playbook_task_result : PlaybookTaskResult = self .task_type_callable_map [task_type ]['executor' ](
145+ playbook_task_result = self .task_type_callable_map [task_type ]['executor' ](
146146 time_range , resolved_source_task , source_connector_proto )
147- # Set task local variables in playbook_task_result to be stored in database
148- task_local_variable_map_proto = dict_to_proto (task_local_variable_map ,
149- Struct ) if task_local_variable_map else Struct ()
150- playbook_task_result .task_local_variable_set .CopyFrom (task_local_variable_map_proto )
151- playbook_task_result .status = PlaybookExecutionStatusType .FINISHED
152- # Apply result transformer
153- playbook_task_result = self .apply_task_result_transformer (resolved_task , playbook_task_result )
154- return playbook_task_result
147+ if check_multiple_task_results (playbook_task_result ):
148+ task_results = []
149+ for result in playbook_task_result :
150+ task_results .append (self .postprocess_task_result (result , resolved_task , task_local_variable_map ))
151+ return task_results
152+ return self .postprocess_task_result (playbook_task_result , resolved_task , task_local_variable_map )
155153 except Exception as e :
156154 source_str = Source .Name (resolved_task .source ).lower ()
157155 raise Exception (f"Error while executing task for source: { source_str } with error: { e } " )
158156 except Exception as e :
159157 raise Exception (f"Error while executing task: { e } " )
158+
159+ def postprocess_task_result (self , playbook_task_result : PlaybookTaskResult , resolved_task : PlaybookTask , task_local_variable_map : dict ):
160+ task_local_variable_map_proto = dict_to_proto (task_local_variable_map ,
161+ Struct ) if task_local_variable_map else Struct ()
162+ playbook_task_result .task_local_variable_set .CopyFrom (task_local_variable_map_proto )
163+ playbook_task_result .status = PlaybookExecutionStatusType .FINISHED
164+
165+ # Apply result transformer
166+ playbook_task_result = self .apply_task_result_transformer (resolved_task , playbook_task_result )
167+ return playbook_task_result
0 commit comments