def _schedule_run_action(task_ex, task_spec, action_input, index): wf_ex = task_ex.workflow_execution wf_spec = spec_parser.get_workflow_spec(wf_ex.spec) action_spec_name = task_spec.get_action_name() action_def = action_handler.resolve_definition( action_spec_name, task_ex, wf_spec ) action_ex = action_handler.create_action_execution( action_def, action_input, task_ex, index ) target = expr.evaluate_recursively( task_spec.get_target(), utils.merge_dicts( copy.deepcopy(action_input), copy.copy(task_ex.in_context) ) ) scheduler.schedule_call( None, 'mistral.engine.action_handler.run_existing_action', 0, action_ex_id=action_ex.id, target=target )
def start_action(self, action_name, action_input, description=None, **params): with db_api.transaction(): action_def = action_handler.resolve_definition(action_name) resolved_action_input = action_handler.get_action_input( action_name, action_input) action = a_m.get_action_class( action_def.name)(**resolved_action_input) # If we see action is asynchronous, then we enforce 'save_result'. if params.get('save_result') or not action.is_sync(): action_ex = action_handler.create_action_execution( action_def, resolved_action_input, description=description) action_handler.run_action(action_def, resolved_action_input, action_ex.id, params.get('target')) return action_ex.get_clone() else: output = action_handler.run_action(action_def, resolved_action_input, target=params.get('target'), async=False) return db_models.ActionExecution(name=action_name, description=description, input=action_input, output=output)
def _schedule_run_action(task_ex, task_spec, action_input, index, wf_spec): action_spec_name = task_spec.get_action_name() action_def = action_handler.resolve_definition( action_spec_name, task_ex, wf_spec ) action_ex = action_handler.create_action_execution( action_def, action_input, task_ex, index ) target = expr.evaluate_recursively( task_spec.get_target(), utils.merge_dicts( copy.deepcopy(action_input), copy.deepcopy(task_ex.in_context) ) ) scheduler.schedule_call( None, 'mistral.engine.action_handler.run_existing_action', 0, action_ex_id=action_ex.id, target=target )
def _schedule_noop_action(task_ex, task_spec, wf_spec): wf_ex = task_ex.workflow_execution action_def = action_handler.resolve_action_definition( 'std.noop', wf_ex.workflow_name, wf_spec.get_name()) action_ex = action_handler.create_action_execution(action_def, {}, task_ex) target = expr.evaluate_recursively(task_spec.get_target(), task_ex.in_context) scheduler.schedule_call( None, 'mistral.engine.action_handler.run_existing_action', 0, action_ex_id=action_ex.id, target=target)
def start_action(self, action_name, action_input, description=None, **params): with db_api.transaction(): action_def = action_handler.resolve_definition(action_name) resolved_action_input = action_handler.get_action_input( action_name, action_input ) action = a_m.get_action_class(action_def.name)( **resolved_action_input ) # If we see action is asynchronous, then we enforce 'save_result'. if params.get('save_result') or not action.is_sync(): action_ex = action_handler.create_action_execution( action_def, resolved_action_input, description=description ) action_handler.run_action( action_def, resolved_action_input, action_ex.id, params.get('target') ) return action_ex.get_clone() else: output = action_handler.run_action( action_def, resolved_action_input, target=params.get('target'), async=False ) return db_models.ActionExecution( name=action_name, description=description, input=action_input, output=output )
def _schedule_noop_action(task_ex, task_spec, wf_spec): wf_ex = task_ex.workflow_execution action_def = action_handler.resolve_action_definition( 'std.noop', wf_ex.workflow_name, wf_spec.get_name() ) action_ex = action_handler.create_action_execution(action_def, {}, task_ex) target = expr.evaluate_recursively( task_spec.get_target(), task_ex.in_context ) scheduler.schedule_call( None, 'mistral.engine.action_handler.run_existing_action', 0, action_ex_id=action_ex.id, target=target )