Created
April 23, 2013 15:01
-
-
Save mcorner/5444310 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| desision.rb: | |
| require 'aws-sdk' | |
| config_path = File.expand_path(File.dirname(__FILE__)+"/aws.yml") | |
| AWS.config(YAML.load(File.read(config_path))) | |
| swf = AWS::SimpleWorkflow.new | |
| domain = swf.domains['my-domain'] | |
| #test_id = rand(1000000000) | |
| test_id = 9 | |
| puts "Test ID #{test_id}" | |
| process_name = "my-long-process-#{test_id}" | |
| task_list_name = "my-task-list-#{test_id}" | |
| activity_name = "do-something-#{test_id}" | |
| begin | |
| workflow_type = domain.workflow_types.create(process_name, '1', | |
| :default_task_list => task_list_name, | |
| :default_child_policy => :terminate, | |
| # :default_child_policy => :abandon, | |
| :default_task_start_to_close_timeout => 60, | |
| :default_execution_start_to_close_timeout => 45) | |
| rescue ::AWS::SimpleWorkflow::Errors::TypeAlreadyExistsFault | |
| end | |
| begin | |
| activity_type = domain.activity_types.create(activity_name, '1', | |
| :default_task_list => task_list_name, | |
| :default_task_heartbeat_timeout => 900, | |
| :default_task_schedule_to_start_timeout => 30, | |
| :default_task_schedule_to_close_timeout => 35, | |
| :default_task_start_to_close_timeout => 30) | |
| rescue ::AWS::SimpleWorkflow::Errors::TypeAlreadyExistsFault | |
| end | |
| workflow_execution = domain.workflow_types[process_name, 1].start_execution(:input => 'foobar') | |
| puts workflow_execution.inspect | |
| # poll for decision tasks from 'my-task-list' | |
| domain.decision_tasks.poll(task_list_name) do |task| | |
| # investigate new events and make decisions | |
| task.new_events.each do |event| | |
| puts "Event: #{event.event_type}" | |
| case event.event_type | |
| when 'WorkflowExecutionStarted' | |
| puts "Scheduling Activity" | |
| activity_type = domain.activity_types[activity_name, 1] | |
| task.schedule_activity_task(activity_type, {:input => 'abc xyz'}) | |
| when 'ActivityTaskCompleted' | |
| puts "Activity Task Completed" | |
| task.complete_workflow_execution({:result => "done"}) | |
| end | |
| end | |
| end # decision task is completed here | |
| activity.rb: | |
| require 'aws-sdk' | |
| config_path = File.expand_path(File.dirname(__FILE__)+"/aws.yml") | |
| AWS.config(YAML.load(File.read(config_path))) | |
| swf = AWS::SimpleWorkflow.new | |
| domain = swf.domains['my-domain'] | |
| test_id = ARGV[0].to_i | |
| puts "Test ID #{test_id}" | |
| process_name = "my-long-process-#{test_id}" | |
| task_list_name = "my-task-list-#{test_id}" | |
| activity_name = "do-something-#{test_id}" | |
| puts "Activity: #{activity_name}" | |
| # poll 'my-task-list' for activities | |
| domain.activity_tasks.poll(task_list_name) do |activity_task| | |
| puts "here" | |
| case activity_task.activity_type.name | |
| when activity_name | |
| puts " doing something" | |
| activity_task.complete! | |
| else | |
| puts "fail" | |
| activity_task.fail! :reason => 'unknown activity task type' | |
| end | |
| end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment