Class: AWS::SimpleWorkflow::WorkflowExecution

Inherits:
Resource show all
Defined in:
lib/aws/simple_workflow/workflow_execution.rb

Instance Attribute Summary collapse

Attributes included from Core::Model

#config

Instance Method Summary collapse

Methods inherited from Resource

attribute, #exists?

Methods inherited from Core::Resource

attribute_providers, attribute_providers_for, attributes, #attributes_from_response, define_attribute_type, #eql?, #inspect, new_from

Methods included from Core::Cacheable

included, #retrieve_attribute

Methods included from Core::Model

#client, #config_prefix, #inspect

Constructor Details

#initialize(domain, workflow_id, run_id, options = {}) ⇒ WorkflowExecution

Returns a new instance of WorkflowExecution.



68
69
70
71
72
73
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 68

def initialize domain, workflow_id, run_id, options = {}
  @domain = domain
  @workflow_id = workflow_id
  @run_id = run_id
  super
end

Instance Attribute Details

#child_policySymbol (readonly)

The policy to use for the child workflow executions if this workflow execution is terminated. The return value will be one of the following values:

  • :terminate - the child executions will be terminated.

  • :request_cancel - a request to cancel will be attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.

  • :abandon - no action will be taken. The child executions will continue to run.

Returns:

  • (Symbol)

    the current value of child_policy



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def child_policy
  @child_policy
end

#closed_atTime? (readonly)

The time when the workflow execution was closed. Returns nil if this execution is not closed.

Returns:

  • (Time, nil)

    the current value of closed_at



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def closed_at
  @closed_at
end

#domainDomain (readonly)

Returns The domain this workflow execution was started in.

Returns:

  • (Domain)

    The domain this workflow execution was started in.



76
77
78
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 76

def domain
  @domain
end

#latest_activity_task_scheduled_atTime? (readonly)

The time when the last activity task was scheduled for this workflow execution. You can use this information to determine if the workflow has not made progress for an unusually long period of time and might require a corrective action.

Returns:

  • (Time, nil)

    the current value of latest_activity_task_scheduled_at



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def latest_activity_task_scheduled_at
  @latest_activity_task_scheduled_at
end

#latest_execution_contextString? (readonly)

The latest execution context provided by the decider for this workflow execution. A decider can provide an execution context, which is a free form string, when closing a decision task.

Returns:

  • (String, nil)

    the current value of latest_execution_context



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def latest_execution_context
  @latest_execution_context
end

#open_countsHash (readonly)

Returns a hash of counts, including: :open_timers, :open_child_workflow_executions, :open_decision_tasks, and :open_activity_tasks.

Returns:

  • (Hash)

    the current value of open_counts



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def open_counts
  @open_counts
end

#run_idString (readonly)

Returns The run id of this execution.

Returns:

  • (String)

    The run id of this execution.



82
83
84
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 82

def run_id
  @run_id
end

#start_to_close_timeoutString (readonly)

The total allowed duration for this workflow execution.

The return value will be formatted as an ISO 8601 duration (e.g. ‘PnYnMnDTnHnMnS’).

Returns:

  • (String)

    the current value of start_to_close_timeout



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def start_to_close_timeout
  @start_to_close_timeout
end

#started_atTime (readonly)

The time when the execution was started.

Returns:

  • (Time)

    the current value of started_at



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def started_at
  @started_at
end

#task_listString (readonly)

The task list used for the decision tasks generated for this workflow execution.

Returns:

  • (String)

    the current value of task_list



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def task_list
  @task_list
end

#task_start_to_close_timeoutString (readonly)

The maximum duration allowed for decision tasks for this workflow execution.

The return value will be formatted as an ISO 8601 duration (e.g. ‘PnYnMnDTnHnMnS’).

Returns:

  • (String)

    the current value of task_start_to_close_timeout



66
67
68
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 66

def task_start_to_close_timeout
  @task_start_to_close_timeout
end

#workflow_idString (readonly)

Returns The workflow id of this execution.

Returns:

  • (String)

    The workflow id of this execution.



79
80
81
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 79

def workflow_id
  @workflow_id
end

Instance Method Details

#cancel_requested?Boolean

Returns true if a request was made to cancel this workflow execution.

Returns:

  • (Boolean)

    Returns true if a request was made to cancel this workflow execution.



185
186
187
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 185

def cancel_requested?
  cancel_requested
end

#closed?Boolean

Returns true if the workflow execution is closed.

Returns:

  • (Boolean)

    Returns true if the workflow execution is closed.



195
196
197
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 195

def closed?
  !open?
end

#count_executions(options = {}) ⇒ Integer

Note:

This operation is eventually consistent. The results are best effort and may not exactly reflect recent updates and changes.

Counts the number of executions that share the same workflow id.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :status (Symbol) — default: :open

    Specifies that status of the workflow executions to count. Defaults to open workflows.

    • :open

    • :closed

  • :started_between (Array<Time>)

    A start and end time to filter workflow execution start times by. You may pass an array with two time values or a range. Times should be timestamps (integers), Time, Date, DateTime or parseable time strings.

    You may not pass both :started_between and :closed_between.

  • :closed_between (Array<Time>)

    A start and end time to filter workflow execution closed times by. You may pass an array with two time values or a range. Times should be timestamps (integers), Time, Date, DateTime or parseable time strings.

    You may not pass both :started_between and :closed_between. You may also not pass :closed_between if the :status is :open.

Returns:

  • (Integer)

    Returns the count of executions that share workflow id with the curren execution.



366
367
368
369
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 366

def count_executions options = {}
  options[:workflow_id] = workflow_id
  domain.workflow_executions.count(options)
end

#history_eventsHistoryEventCollection Also known as: events

Returns a collection that enumerates history events for this workflow execution.

Returns:

  • (HistoryEventCollection)

    Returns a collection that enumerates history events for this workflow execution.



228
229
230
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 228

def history_events
  HistoryEventCollection.new(self)
end

#open?Boolean

Returns true if the workflow execution is still open.

Returns:

  • (Boolean)

    Returns true if the workflow execution is still open.



190
191
192
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 190

def open?
  status == :open
end

#open_activity_task_countInteger

Returns the number of open activity tasks.

Returns:

  • (Integer)

    Returns the number of open activity tasks.



206
207
208
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 206

def open_activity_task_count
  open_counts[:open_activity_tasks]
end

#open_child_workflow_execution_countBoolean

Returns true if this workflow execution has an open decision task.

Returns:

  • (Boolean)

    Returns true if this workflow execution has an open decision task.



201
202
203
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 201

def open_child_workflow_execution_count
  open_counts[:open_child_workflow_executions]
end

#open_decision_task_countInteger

Returns the number of closed activity tasks.

Returns:

  • (Integer)

    Returns the number of closed activity tasks.



216
217
218
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 216

def open_decision_task_count
  open_counts[:open_decision_tasks]
end

#open_timer_countInteger

Returns the number of open timers.

Returns:

  • (Integer)

    Returns the number of open timers.



211
212
213
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 211

def open_timer_count
  open_counts[:open_timers]
end

#parentWorkflowExecution?

Returns the parent workflow execution (if there is one).

Returns:

  • (WorkflowExecution, nil)

    Returns the parent workflow execution (if there is one).



241
242
243
244
245
246
247
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 241

def parent
  if parent = self.parent_details
    domain.workflow_executions[parent['workflowId'],parent['runId']]
  else
    nil
  end
end

#request_cancelnil

Note:

Because this action allows the workflow to properly clean up and gracefully close, it should be used instead of #terminate when possible.

Records a WorkflowExecutionCancelRequested event in the currently running workflow execution. This logically requests the cancellation of the workflow execution as a whole. It is up to the decider to take appropriate actions when it receives an execution history with this event.

Returns:

  • (nil)


282
283
284
285
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 282

def request_cancel
  options = { :run_id => run_id }
  domain.workflow_executions.request_cancel(workflow_id, options)
end

#signal(signal_name, options = {}) ⇒ nil

Records a WorkflowExecutionSignaled event in the workflow execution history and creates a decision task for the workflow execution.

workflow_execution.signal('signal_name', :input => '...')

Parameters:

  • signal_name (String)

    The name of the signal. This name must be meaningful to the target workflow.

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :input (String) — default: nil

    Data to attach to the WorkflowExecutionSignaled event in the target workflow execution’s history.

Returns:

  • (nil)


265
266
267
268
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 265

def signal signal_name, options = {}
  options[:run_id] = run_id
  domain.workflow_executions.signal(workflow_id, signal_name, options)
end

#statusSymbol

Returns the status of this exeuction. Possible return values are:

  • :open - The execution is still running.

  • :completed - The execution was successfully completed.

  • :canceled - The execution was canceled, cancellation allows

    the implementation to gracefully clean up before the execution 
    is closed.
    
  • :failed - The execution failed to complete. and was automatically timed out.

  • :continued_as_new - The execution is logically continued. This means the current execution was completed and a new execution was started to carry on the workflow.

  • :terminated - The execution was force terminated.

  • :timed_out - The execution did not complete in the alloted time and was automatically timed out.

Returns:

  • (Symbol)

    Returns the status of this exeuction. Possible return values are:

    • :open - The execution is still running.

    • :completed - The execution was successfully completed.

    • :canceled - The execution was canceled, cancellation allows

      the implementation to gracefully clean up before the execution 
      is closed.
      
    • :failed - The execution failed to complete. and was automatically timed out.

    • :continued_as_new - The execution is logically continued. This means the current execution was completed and a new execution was started to carry on the workflow.

    • :terminated - The execution was force terminated.

    • :timed_out - The execution did not complete in the alloted time and was automatically timed out.



177
178
179
180
181
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 177

def status
  AWS.memoize do
    execution_status == :open ? :open : (close_status || :closed)
  end
end

#tagsArray<String>

Returns an array of tags assigned to this execution.

Returns:

  • (Array<String>)

    Returns an array of tags assigned to this execution.



222
223
224
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 222

def tags
  tag_list || []
end

#terminate(options = {}) ⇒ nil

Note:

If the workflow execution was in progress, it is terminated immediately.

Note:

You should consider canceling the workflow execution instead because it allows the workflow to gracefully close while terminate does not.

Records a WorkflowExecutionTerminated event and forces closure of the workflow execution. The child policy, registered with the workflow type or specified when starting this execution, is applied to any open child workflow executions of this workflow execution.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :child_policy (Symbol) — default: nil

    If set, specifies the policy to use for the child workflow executions of the workflow execution being terminated. This policy overrides the default child policy. Valid policies include:

    • :terminate - the child executions will be terminated.

    • :request_cancel - a request to cancel will be attempted for each child execution by recording a WorkflowExecutionCancelRequested event in its history. It is up to the decider to take appropriate actions when it receives an execution history with this event.

    • :abandon - no action will be taken. The child executions will continue to run.

  • :details (String) — default: nil

    Optional details for terminating the workflow execution.

  • :reason (String) — default: nil

    An optional descriptive reason for terminating the workflow execution.

Returns:

  • (nil)


324
325
326
327
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 324

def terminate options = {}
  options[:run_id] = run_id
  domain.workflow_executions.terminate(workflow_id, options)
end

#workflow_typeWorkflowType

Returns the type of this workflow execution.

Returns:

  • (WorkflowType)

    Returns the type of this workflow execution.



234
235
236
237
# File 'lib/aws/simple_workflow/workflow_execution.rb', line 234

def workflow_type
  type = self.type_details
  WorkflowType.new(domain, type['name'], type['version'])
end