Sha256: 28852607ad992d53f64c627c5ad4d79bc41fc9d235c2dcef1ba817c52f1b5052

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

module RailsWorkflow
  class OperationTemplate < ActiveRecord::Base
    include OperationStatus
    include OperationTemplates::Dependencies
    include OperationTemplates::Assignments
    include OperationTemplates::DefaultBuilder

    belongs_to :process_template, class_name: "RailsWorkflow::ProcessTemplate"
    belongs_to :child_process, class_name: "RailsWorkflow::ProcessTemplate"

    class << self

      def types
        RailsWorkflow.config.operation_types
      end

      # by default system using context data of first dependnecy
      # the one that triggered current operation build
      def build_context dependencies
        dependencies.first.try(:context).try(:data)
      end

      def build_context! operation, dependencies
        RailsWorkflow::Context.new(
            parent: operation,
            data: build_context(dependencies) || operation.process.data)
      end

    end



    def operation_class
      get_class(:operation_class, default_class(kind.to_sym))
    end

    def default_type
      RailsWorkflow.config.default_operation_template_type
    end

    def resolve_dependency operation
      true
    end

    def resolve_dependency! operation
      resolve_dependency operation
    end

    private
    def default_class kind
      RailsWorkflow.config.operation_types[kind][:class]
    end

    def get_class symb, default
      begin
        (read_attribute(symb).presence || default).constantize
      rescue
        default.constantize
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_workflow-0.2.1 app/models/rails_workflow/operation_template.rb