Class: ProcessEngine::ProcessTask
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- ProcessEngine::ProcessTask
- Defined in:
- app/models/process_engine/process_task.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#complete(options) ⇒ Object
available options :finisher, :data.
- #consumer_task ⇒ Object
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() injected_data = ProcessEngine::NodeDataInjection.(process_instance.process_definition.slug, state, self) process_instance.move_to_next_state(state, injected_data) opt = { finisher: [:finisher], status: :finished } opt[:data] = [:data] if [: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_task ⇒ Object
65 66 67 |
# File 'app/models/process_engine/process_task.rb', line 65 def consumer_task ProcessEngine::Consumer::ConsumerTask.new(self) end |