Beispiel #1
0
    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
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
    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)
Beispiel #5
0
 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
Beispiel #6
0
    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)
Beispiel #7
0
    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]
Beispiel #8
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)
Beispiel #9
0
    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]
Beispiel #10
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,
     )
Beispiel #11
0
 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)