ntswf 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,9 @@ module Ntswf
11
11
  # :activity_task:: The {AWS::SimpleWorkflow::ActivityTask}
12
12
  # :name:: Kind of task
13
13
  # :params:: Custom parameters given to the execution (parsed back from JSON)
14
+ # :run_id:: The workflow execution's run ID
14
15
  # :version:: Client version
16
+ # :workflow_id:: The workflow execution's workflow ID
15
17
  #
16
18
  # See {Ntswf::Client#start_execution}'s options for details
17
19
  # @param proc [Proc] The callback
@@ -54,7 +56,12 @@ module Ntswf
54
56
  protected
55
57
 
56
58
  def describe(activity_task)
57
- options = parse_input(activity_task.input).merge(activity_task: activity_task)
59
+ options = parse_input(activity_task.input)
60
+ options.merge!(
61
+ activity_task: activity_task,
62
+ run_id: activity_task.workflow_execution.run_id,
63
+ workflow_id: activity_task.workflow_execution.workflow_id,
64
+ )
58
65
  options.map { |k, v| {k.to_sym => v} }.reduce(&:merge!)
59
66
  end
60
67
 
@@ -35,29 +35,35 @@ module Ntswf
35
35
  def process_decision_event(task, event)
36
36
  log("processing event #{event.inspect}")
37
37
  case event.event_type
38
- when 'WorkflowExecutionStarted'
39
- schedule(task, event)
40
- when 'TimerFired'
41
- retry_or_continue_as_new(task, task.events.first)
42
- when 'ActivityTaskCompleted'
43
- result = parse_result(event.attributes.result)
44
- start_timer(task, result["seconds_until_retry"]) or task.complete_workflow_execution(
45
- result: event.attributes.result)
46
- when 'ActivityTaskFailed'
47
- if (event.attributes.reason == RETRY)
48
- schedule(task, task.events.first)
49
- else
50
- start_timer(task) or task.fail_workflow_execution(
51
- event.attributes.to_h.keep_if {|k| [:details, :reason].include? k})
52
- end
53
- when 'ActivityTaskTimedOut'
54
- notify("Timeout in Simple Workflow. Possible cause: all workers busy",
55
- workflow_execution: task.workflow_execution.inspect)
56
- start_timer(task) or task.cancel_workflow_execution(
57
- details: 'activity task timeout')
38
+ when 'WorkflowExecutionStarted' then schedule(task, event)
39
+ when 'TimerFired' then retry_or_continue_as_new(task, task.events.first)
40
+ when 'ActivityTaskCompleted' then activity_task_completed(task, event)
41
+ when 'ActivityTaskFailed' then activity_task_failed(task, event)
42
+ when 'ActivityTaskTimedOut' then activity_task_timed_out(task, event)
58
43
  end
59
44
  end
60
45
 
46
+ def activity_task_completed(task, event)
47
+ result = parse_result(event.attributes.result)
48
+ start_timer(task, result["seconds_until_retry"]) or task.complete_workflow_execution(
49
+ result: event.attributes.result)
50
+ end
51
+
52
+ def activity_task_failed(task, event)
53
+ if (event.attributes.reason == RETRY)
54
+ schedule(task, task.events.first)
55
+ else
56
+ start_timer(task) or task.fail_workflow_execution(
57
+ event.attributes.to_h.keep_if {|k| [:details, :reason].include? k})
58
+ end
59
+ end
60
+
61
+ def activity_task_timed_out(task, event)
62
+ notify("Timeout in Simple Workflow. Possible cause: all workers busy",
63
+ workflow_execution: task.workflow_execution.inspect)
64
+ start_timer(task) or task.cancel_workflow_execution(details: 'activity task timeout')
65
+ end
66
+
61
67
  def start_timer(task, interval = nil)
62
68
  unless interval
63
69
  options = parse_input(task.events.first.attributes.input)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ntswf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-07 00:00:00.000000000 Z
12
+ date: 2014-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk