Sha256: 9a35aa22b5028bde59753a270dee26dbd41cc9940cedbb0f12d8217578f4fe68

Contents?: true

Size: 1.56 KB

Versions: 9

Compression:

Stored size: 1.56 KB

Contents

module RailsWorkflow
  module OperationTemplates
    module DefaultBuilder
      extend ActiveSupport::Concern

      def build_operation operation
        #for customization
      end

      def build_operation! process, completed_dependencies = []

        attrs = attributes.
            with_indifferent_access.
            slice(:title, :async, :is_background).
            merge({
                      template: self,
                      process: process,
                      status: Operation::NOT_STARTED,
                      manager: process.manager
                  })


        attrs[:dependencies] = completed_dependencies.map { |dep|
          {
              operation_id: dep.id,
              status: dep.status
          }
        }


        operation = operation_class.create(attrs) do |op|
          op.context = RailsWorkflow::OperationTemplate.build_context! op, completed_dependencies

          build_operation op
        end

        if child_process.present?
          operation.child_process = RailsWorkflow::ProcessManager.
              build_process(
                  child_process.id,
                  operation.context.data
              )
        end
        operation

      end

      module ClassMethods

        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

    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rails_workflow-0.3.7 app/concerns/rails_workflow/operation_templates/default_builder.rb
rails_workflow-0.3.6 app/concerns/rails_workflow/operation_templates/default_builder.rb
rails_workflow-0.3.5 app/concerns/rails_workflow/operation_templates/default_builder.rb
rails_workflow-0.3.4 app/concerns/rails_workflow/operation_templates/default_builder.rb
rails_workflow-0.3.3 app/concerns/rails_workflow/operation_templates/default_builder.rb
rails_workflow-0.3.2 app/concerns/rails_workflow/operation_templates/default_builder.rb
rails_workflow-0.3.1 app/concerns/rails_workflow/operation_templates/default_builder.rb
rails_workflow-0.3.0 app/concerns/rails_workflow/operation_templates/default_builder.rb
rails_workflow-0.2.2 app/concerns/rails_workflow/operation_templates/default_builder.rb