Module: BetterService::Concerns::Workflowable::Callbacks

Extended by:
ActiveSupport::Concern
Included in:
Workflows::Base
Defined in:
lib/better_service/concerns/workflowable/callbacks.rb

Overview

Callbacks - Adds lifecycle callbacks to workflows

Provides before_workflow, after_workflow, and around_step hooks that allow executing custom logic at different stages of the workflow.

Example:

class OrderWorkflow < BetterService::Workflow
  before_workflow :validate_prerequisites
  after_workflow :cleanup_resources
  around_step :log_step_execution

  private

  def validate_prerequisites(context)
    context.fail!("Cart is empty") if context.cart_items.empty?
  end

  def cleanup_resources(context)
    context.user.clear_cart! if context.success?
  end

  def log_step_execution(step, context)
    start_time = Time.current
    yield # Execute the step
    duration = Time.current - start_time
    Rails.logger.info "Step #{step.name} completed in #{duration}s"
  end
end