Sha256: a5a11dfb2bd136531f5d97a5f6832e791dd1ce51da24ba129a5b7bc5f61605da

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 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

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_workflow-0.2.1 app/concerns/rails_workflow/operation_templates/default_builder.rb