from garcon import activity from garcon import runner from garcon import param import tasks class HelloWorldFlow(object): def __init__(self, domain='dev', version='1.0'): """Create a WorkFlow flow. Args: domain (str): domain workflow runs under version (str): version of the workflow (ex 1.0). """ # Name of the SWF WorkFlow self.name = 'HelloWorldSeungHee' self.domain = domain self.version = version self.create = activity.create( self.domain, self.name, version=self.version) def decider(self, schedule, context): """Flow decider. Arg: schedule (callable): Call the scheduler. """ activity_one = schedule( 'hello_world_one', self.hello_world_one_activity) activity_two = schedule( 'hello_world_two', self.hello_world_two_activity, requires=[activity_one]) activity_three = schedule( 'hello_world_three', self.hello_world_three_activity, requires=[activity_two]) activity_four = schedule( 'hello_world_four', self.hello_world_four_activity, requires=[activity_two]) schedule( 'hello_world_five', self.hello_world_five_activity, requires=[activity_three, activity_four]) @property def hello_world_one_activity(self): return self.create( name='hello_world_one', tasks=runner.Sync( tasks.print_hello_task.fill( namespace='activity_1_task_1', prior_message=param.StaticParam('no activity'), workflow_id='execution.workflow_id', activity_name=param.StaticParam('Activity 1'), task_name=param.StaticParam('Task 1')) )) @property def hello_world_two_activity(self): return self.create( name='hello_world_two', tasks=runner.Sync( tasks.print_hello_task.fill( namespace='activity_2_task_1', prior_message='activity_1_task_1.message', workflow_id='execution.workflow_id', activity_name=param.StaticParam('Activity 2'), task_name=param.StaticParam('Task 1'), sleep=param.StaticParam(2)), tasks.print_hello_task.fill( namespace='activity_2_task_2', prior_message='activity_1_task_1.message', workflow_id='execution.workflow_id', activity_name=param.StaticParam('Activity 2'), task_name=param.StaticParam('Task 2')) )) @property def hello_world_three_activity(self): return self.create( name='hello_world_three', tasks=runner.Sync(tasks.print_hello_task.fill( namespace='activity_3_task_1', prior_message='activity_2_task_1.message', workflow_id='execution.workflow_id', activity_name=param.StaticParam('Activity 3'), task_name=param.StaticParam('Task 1')) )) @property def hello_world_four_activity(self): return self.create( name='hello_world_four', tasks=runner.Sync(tasks.print_hello_task.fill( namespace='activity_4_task_1', prior_message='activity_2_task_2.message', workflow_id='execution.workflow_id', activity_name=param.StaticParam('Activity 4'), task_name=param.StaticParam('Task 1')) )) @property def hello_world_five_activity(self): return self.create( name='hello_world_five', tasks=runner.Async( tasks.print_hello_task.fill( namespace='activity_5_task_1', prior_message='activity_3_task_1.message', sleep=param.StaticParam(3), workflow_id='execution.workflow_id', activity_name=param.StaticParam('Activity 5'), task_name=param.StaticParam('Task 1')), tasks.print_hello_task.fill( namespace='activity_5_task_2', prior_message='activity_4_task_1.message', workflow_id='execution.workflow_id', activity_name=param.StaticParam('Activity 5'), task_name=param.StaticParam('Task 2')) ))