mirror of
https://github.com/anteo/redmine_custom_workflows.git
synced 2026-01-26 00:04:20 +00:00
execute workflows in order of their positioning
This commit is contained in:
parent
d6b55cf0e5
commit
ce46863e76
@ -36,6 +36,7 @@ class CustomWorkflow < ActiveRecord::Base
|
|||||||
validate :validate_syntax, :validate_scripts_presence, if: Proc.new { |workflow| workflow.respond_to?(:observable) and workflow.active? }
|
validate :validate_syntax, :validate_scripts_presence, if: Proc.new { |workflow| workflow.respond_to?(:observable) and workflow.active? }
|
||||||
|
|
||||||
scope :active, lambda { where(active: true) }
|
scope :active, lambda { where(active: true) }
|
||||||
|
scope :sorted, lambda { order(:position) }
|
||||||
scope :for_project, (lambda do |project|
|
scope :for_project, (lambda do |project|
|
||||||
where("is_for_all=? OR EXISTS (SELECT * FROM #{reflect_on_association(:projects).join_table} WHERE project_id=? AND custom_workflow_id=id)",
|
where("is_for_all=? OR EXISTS (SELECT * FROM #{reflect_on_association(:projects).join_table} WHERE project_id=? AND custom_workflow_id=id)",
|
||||||
true, project.id)
|
true, project.id)
|
||||||
@ -57,7 +58,7 @@ class CustomWorkflow < ActiveRecord::Base
|
|||||||
def self.run_shared_code(object)
|
def self.run_shared_code(object)
|
||||||
log_message '= Running shared code', object
|
log_message '= Running shared code', object
|
||||||
if CustomWorkflow.table_exists? # Due to DB migration
|
if CustomWorkflow.table_exists? # Due to DB migration
|
||||||
CustomWorkflow.active.where(observable: :shared).find_each do |workflow|
|
CustomWorkflow.active.where(observable: :shared).sorted.each do |workflow|
|
||||||
unless workflow.run(object, :shared_code)
|
unless workflow.run(object, :shared_code)
|
||||||
log_message '= Abort running shared code', object
|
log_message '= Abort running shared code', object
|
||||||
return false
|
return false
|
||||||
@ -77,7 +78,7 @@ class CustomWorkflow < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
return true unless workflows.any?
|
return true unless workflows.any?
|
||||||
log_message "= Running #{event} custom workflows", object
|
log_message "= Running #{event} custom workflows", object
|
||||||
workflows.each do |workflow|
|
workflows.sorted.each do |workflow|
|
||||||
unless workflow.run(object, event)
|
unless workflow.run(object, event)
|
||||||
log_message "= Abort running #{event} custom workflows", object
|
log_message "= Abort running #{event} custom workflows", object
|
||||||
return false
|
return false
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user