mirror of
https://github.com/ditkrg/workflower.git
synced 2026-01-22 14:17:11 +00:00
Upgrades
This commit is contained in:
parent
75f4bbb3f4
commit
200e16ff08
@ -1,7 +1,7 @@
|
||||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
workflower (0.1.3)
|
||||
workflower (0.2.1)
|
||||
activesupport (>= 6.0.0)
|
||||
|
||||
GEM
|
||||
|
||||
@ -4,11 +4,11 @@ module Workflower
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
module InstanceMethods
|
||||
#mattr_accessor :workflower_base
|
||||
attr_accessor :possible_events, :allowed_events, :allowed_transitions
|
||||
# mattr_accessor :workflower_base
|
||||
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
|
||||
@ -65,27 +66,26 @@ module Workflower
|
||||
self.source = source
|
||||
self.default_workflow_id = default_workflow_id
|
||||
|
||||
#self.validates "#{workflow_model.tableize.singularize}_id", presence: true
|
||||
self.before_create :set_intial_state
|
||||
|
||||
# self.validates "#{workflow_model.tableize.singularize}_id", presence: true
|
||||
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")
|
||||
transitions = load.select { |item| item.try(:[], :metadata).try(:key?, :roles)}
|
||||
# transitions = load.transitions.where("(metadata->>'roles') IS NOT NULL")
|
||||
transitions = load.select { |item| item.try(:[], :metadata).try(:key?, :roles) }
|
||||
|
||||
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_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
|
||||
|
||||
return roles_hash
|
||||
roles_hash
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Workflower
|
||||
VERSION = "0.2.0"
|
||||
VERSION = "0.2.1"
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user