def start_child(cls, input, control=None): """Start child workflow execution. ``input`` is serialized and a workflow id is generated from it using ``get_id_from_input``. """ dec, attrs = decisions.skeleton("StartChildWorkflowExecution") attrs.update(cls._get_static_child_start_attrs()) attrs['workflowId'] = cls.get_id_from_input(input) attrs['input'] = serializing.dumps(input) if control is not None: attrs['control'] = serializing.dumps(control) return dec
def signal(self, name, input=None): serialized_input = None if input is not None: serialized_input = serializing.dumps(input) self._domain.conn.signal_workflow_execution( self._domain.name, name, self.workflow_id, input=serialized_input, run_id=self.run_id)
def complete(self, context=None): execution_context = None if context is not None: execution_context = serializing.dumps(context) self._domain.conn.respond_decision_task_completed( self.task_token, decisions=self._decisions, execution_context=execution_context)
def complete(self, result, context=None): """Complete workflow execution. This can only be called from a decision task. """ result = serializing.dumps(result) self._caller.decisions.complete_workflow_execution(result)
def schedule(cls, input, control=None): "Called from subclasses' ``schedule`` class method. " dec, attrs = decisions.skeleton("ScheduleActivityTask") attrs['activityId'] = cls.get_id_from_input(input) attrs['activityType'] = { 'name': cls.name, 'version': cls.version} attrs['taskList'] = {'name': cls.task_list} attrs['input'] = serializing.dumps(input) attrs['heartbeatTimeout'] = cls.heartbeat_timeout attrs['scheduleToCloseTimeout'] = cls.schedule_to_close_timeout attrs['scheduleToStartTimeout'] = cls.schedule_to_start_timeout attrs['startToCloseTimeout'] = cls.start_to_close_timeout if control is not None: attrs['control'] = serializing.dumps(control) return dec
def complete(self, result, context=None): """Complete workflow execution. This can only be called from a decision task. """ dec, attrs = decisions.skeleton("CompleteWorkflowExecution") attrs['result'] = serializing.dumps(result) self._caller._decisions.append(dec) self._caller.complete(context=context)
def schedule(cls, activity_id, input, control=None): "Called from subclasses' ``schedule`` class method. " if control is not None: control = serializing.dumps(control) l1d = Layer1Decisions() l1d.schedule_activity_task( activity_id=activity_id, activity_type_name=cls.name, activity_type_version=cls.version, task_list=cls.task_list, control=control, heartbeat_timeout=cls.heartbeat_timeout, schedule_to_close_timeout=cls.schedule_to_close_timeout, schedule_to_start_timeout=cls.schedule_to_start_timeout, start_to_close_timeout=cls.start_to_close_timeout, input=serializing.dumps(input), ) return l1d._data[0]
def _start(self, input): """Start workflow execution. ``input`` is serialized and a workflow id is generated from it using ``get_id_from_input``. """ kwargs = self._get_static_start_kwargs() kwargs['workflow_id'] = self.get_id_from_input(input) kwargs['input'] = serializing.dumps(input) return self._conn.start_workflow_execution(**kwargs)
def start_child(cls, workflow_id, input, control=None): """Start child workflow execution""" if control is not None: control = serializing.dumps(control) l1d = Layer1Decisions() l1d.start_child_workflow_execution( workflow_type_name=cls.name, workflow_type_version=cls.version, child_policy=cls.child_policy, control=control, execution_start_to_close_timeout=cls.execution_start_to_close_timeout, input=serializing.dumps(input), tag_list=cls.tag_list, task_list=cls.task_list, task_start_to_close_timeout=cls.task_start_to_close_timeout, ) # Unreleased bugfix in boto # https://github.com/boto/boto/commit/d5602f7299a919eceded11ba6da438543609c6db#L0R272 l1d._data[0]["startChildWorkflowExecutionDecisionAttributes"]["workflowId"] = workflow_id return l1d._data[0]
def _start(self, workflow_id, input): """Start workflow execution""" return self._conn.start_workflow_execution( domain=self._domain.name, workflow_id=workflow_id, workflow_name=self.name, workflow_version=self.version, task_list=self.task_list, child_policy=self.child_policy, execution_start_to_close_timeout=self.execution_start_to_close_timeout, input=serializing.dumps(input), tag_list=self.default_tag_list, # XXX: name missmatch task_start_to_close_timeout=self.task_start_to_close_timeout, )
def complete(self, result=None): serialized_result = None if result is not None: serialized_result = serializing.dumps(result) return self._domain.conn.respond_activity_task_completed( self.task_token, result=serialized_result)