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
remote: .
specs:
workflower (0.1.3)
workflower (0.2.1)
activesupport (>= 6.0.0)
GEM

View File

@ -5,10 +5,10 @@ module Workflower
module InstanceMethods
# 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
write_attribute self.class.workflower_state_column_name, self.workflower_initial_state
write_attribute self.class.workflower_state_column_name, workflower_initial_state
end
def workflower_initial_state
@ -16,25 +16,27 @@ module Workflower
end
def workflower_base
return @workflower_base
@workflower_base
end
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)
end
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.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)
end
define_singleton_method "#{flow.boolean_action_name}" do
define_singleton_method flow.boolean_action_name.to_s do
@workflower_base.transition_possible?(flow)
end
end
@ -46,17 +48,16 @@ module Workflower
def initialize(*)
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
end
end
module ClassMethods
def workflower(workflower_state_column_name: "workflow_state", default_workflow_id:, source:)
raise Workflower::WorkflowerError.new("Options can't be blank") if source.blank? || default_workflow_id.blank?
def workflower(default_workflow_id:, source:, workflower_state_column_name: "workflow_state")
raise Workflower::WorkflowerError, "Options can't be blank" if source.blank? || default_workflow_id.blank?
cattr_accessor :source, default: source
cattr_accessor :workflower_state_column_name, default: workflower_state_column_name
cattr_accessor :default_workflow_id, default: default_workflow_id
@ -66,12 +67,11 @@ module Workflower
self.default_workflow_id = default_workflow_id
# self.validates "#{workflow_model.tableize.singularize}_id", presence: true
self.before_create :set_intial_state
before_create :set_intial_state
end
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?
# 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_hash = Hash.new
roles_hash = {}
roles.each do |role|
roles_hash[role] = transitions.select { |trans| trans[:metadata][:roles].to_a.include?(role) }.map { |item| item[:event] }.uniq
end
return roles_hash
roles_hash
end
end
end

View File

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