Class: ProcessEngine::ProcessTask

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/process_engine/process_task.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.spawn_new_task(pi, state, injected_data) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'app/models/process_engine/process_task.rb', line 44

def self.spawn_new_task(pi, state, injected_data)
  injected_data ||= {}
  injected_data = ActiveSupport::HashWithIndifferentAccess.new(injected_data)

  node_ext = pi.process_definition.schema.node(state).node_extension
  assignee = injected_data[:assignee] || node_ext.user_task_assignee
  candidate_users = Array.wrap(injected_data[:candidate_users] || node_ext.user_task_candidate_users)
  candidate_groups = Array.wrap(injected_data[:candidate_groups] || node_ext.user_task_candidate_groups)

  create! assignee: assignee,
          candidate_users: candidate_users,
          candidate_groups: candidate_groups,
          state: state,
          process_instance_id: pi.id

  # enable service hooks for "start" & "create" event of execution_listeners & task_listeners
  ProcessEngine::Listener::Base.execute(pi, node_ext.common_execution_listeners, 'start')
  ProcessEngine::Listener::Base.execute(pi, node_ext.common_task_listeners, 'create')
end

Instance Method Details

#complete(options) ⇒ Object

available options :finisher, :data



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/models/process_engine/process_task.rb', line 29

def complete(options)
  injected_data = ProcessEngine::NodeDataInjection.node_options_data(process_instance.process_definition.slug, state, self)
  process_instance.move_to_next_state(state, injected_data)

  opt = { finisher: options[:finisher], status: :finished }
  opt[:data] = options[:data] if options[:data].present?

  update!(opt)

  # enable service hooks
  node_ext = process_instance.process_definition.schema.node(state).node_extension
  ProcessEngine::Listener::Base.execute(process_instance, node_ext.common_execution_listeners, 'end')
  ProcessEngine::Listener::Base.execute(process_instance, node_ext.common_task_listeners, 'complete')
end

#consumer_taskObject



65
66
67
# File 'app/models/process_engine/process_task.rb', line 65

def consumer_task
  ProcessEngine::Consumer::ConsumerTask.new(self)
end