This commit is contained in:
Brusk Hamarash 2022-01-17 11:49:04 +03:00
parent 75f4bbb3f4
commit 200e16ff08
Signed by: broosk1993
GPG Key ID: 5D20F7E02649F74E
3 changed files with 88 additions and 88 deletions

View File

@ -1,7 +1,7 @@
PATH PATH
remote: . remote: .
specs: specs:
workflower (0.1.3) workflower (0.2.1)
activesupport (>= 6.0.0) activesupport (>= 6.0.0)
GEM GEM

View File

@ -5,10 +5,10 @@ module Workflower
module InstanceMethods module InstanceMethods
# mattr_accessor :workflower_base # mattr_accessor :workflower_base
attr_accessor :possible_events, :allowed_events, :allowed_transitions attr_accessor :possible_events, :allowed_events, :allowed_transitions, :workflow_transition_event_name, :workflow_transition_flow
def set_intial_state def set_intial_state
write_attribute self.class.workflower_state_column_name, self.workflower_initial_state write_attribute self.class.workflower_state_column_name, workflower_initial_state
end end
def workflower_initial_state def workflower_initial_state
@ -16,25 +16,27 @@ module Workflower
end end
def workflower_base def workflower_base
return @workflower_base @workflower_base
end end
def source_workflow def source_workflow
@source_workflow_instance ||= self.source.new(self) @source_workflow_instance ||= source.new(self)
@source_workflow_instance.get_workflows_for_workflow_id(workflow_id) @source_workflow_instance.get_workflows_for_workflow_id(workflow_id)
end end
def workflower_initializer def workflower_initializer
@source_workflow_instance ||= self.source.new(self) @source_workflow_instance ||= source.new(self)
@workflower_base ||= Workflower::Manager.new(self, @source_workflow_instance) @workflower_base ||= Workflower::Manager.new(self, @source_workflow_instance)
@workflower_base.allowed_transitions.each do |flow| @workflower_base.allowed_transitions.each do |flow|
define_singleton_method "#{flow.trigger_action_name}" do define_singleton_method flow.trigger_action_name.to_s do
@workflow_transition_event_name = flow.event
@workflow_transition_flow = flow
@workflower_base.process_transition!(flow) @workflower_base.process_transition!(flow)
end end
define_singleton_method "#{flow.boolean_action_name}" do define_singleton_method flow.boolean_action_name.to_s do
@workflower_base.transition_possible?(flow) @workflower_base.transition_possible?(flow)
end end
end end
@ -46,17 +48,16 @@ module Workflower
def initialize(*) def initialize(*)
super super
write_attribute :workflow_id, self.default_workflow_id if workflow_id.blank? write_attribute :workflow_id, default_workflow_id if workflow_id.blank?
workflower_initializer workflower_initializer
end end
end end
module ClassMethods module ClassMethods
def workflower(workflower_state_column_name: "workflow_state", default_workflow_id:, source:) def workflower(default_workflow_id:, source:, workflower_state_column_name: "workflow_state")
raise Workflower::WorkflowerError.new("Options can't be blank") if source.blank? || default_workflow_id.blank? raise Workflower::WorkflowerError, "Options can't be blank" if source.blank? || default_workflow_id.blank?
cattr_accessor :source, default: source cattr_accessor :source, default: source
cattr_accessor :workflower_state_column_name, default: workflower_state_column_name cattr_accessor :workflower_state_column_name, default: workflower_state_column_name
cattr_accessor :default_workflow_id, default: default_workflow_id cattr_accessor :default_workflow_id, default: default_workflow_id
@ -66,12 +67,11 @@ module Workflower
self.default_workflow_id = default_workflow_id self.default_workflow_id = default_workflow_id
# self.validates "#{workflow_model.tableize.singularize}_id", presence: true # self.validates "#{workflow_model.tableize.singularize}_id", presence: true
self.before_create :set_intial_state before_create :set_intial_state
end end
def workflower_abilities def workflower_abilities
load = source.new(self.new).get_workflows.values.flatten.uniq load = source.new(new).get_workflows.values.flatten.uniq
unless load.blank? unless load.blank?
# transitions = load.transitions.where("(metadata->>'roles') IS NOT NULL") # transitions = load.transitions.where("(metadata->>'roles') IS NOT NULL")
@ -79,13 +79,13 @@ module Workflower
roles = transitions.map { |item| item[:metadata][:roles] }.flatten.uniq roles = transitions.map { |item| item[:metadata][:roles] }.flatten.uniq
roles_hash = Hash.new roles_hash = {}
roles.each do |role| roles.each do |role|
roles_hash[role] = transitions.select { |trans| trans[:metadata][:roles].to_a.include?(role) }.map { |item| item[:event] }.uniq roles_hash[role] = transitions.select { |trans| trans[:metadata][:roles].to_a.include?(role) }.map { |item| item[:event] }.uniq
end end
return roles_hash roles_hash
end end
end end
end end

View File

@ -1,5 +1,5 @@
# frozen_string_literal: true # frozen_string_literal: true
module Workflower module Workflower
VERSION = "0.2.0" VERSION = "0.2.1"
end end