Module: Simple::Workflow::ModuleMethods

Included in:
Simple::Workflow
Defined in:
lib/simple/workflow.rb

Instance Method Summary collapse

Instance Method Details

#invoke(workflow, *args, **kwargs) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/simple/workflow.rb', line 50

def invoke(workflow, *args, **kwargs)
  # This call to Simple::Workflow.current_context raises a ContextMissingError
  # if the context is not set.
  _ = ::Simple::Workflow.current_context

  expect! workflow => [Module, String]

  workflow_module = lookup_workflow!(workflow)

  # We will reload workflow modules only once per invocation.
  if Simple::Workflow.reload_on_invocation?
    Simple::Workflow.current_context.reload!(workflow_module)
  end

  Simple::Service.invoke(workflow_module, :call, args: args, flags: kwargs.transform_keys(&:to_s))
end

#register_workflow(mod) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/simple/workflow.rb', line 33

def register_workflow(mod)
  expect! mod => Module

  mod.extend ::Simple::Workflow::HelperMethods
  mod.include ::Simple::Workflow::InstanceHelperMethods
  mod.extend mod
  mod.include Simple::Service
end

#reload_on_invocation!Object



46
47
48
# File 'lib/simple/workflow.rb', line 46

def reload_on_invocation!
  @reload_on_invocation = true
end

#reload_on_invocation?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/simple/workflow.rb', line 42

def reload_on_invocation?
  !!@reload_on_invocation
end