Sha256: 2c0c73e5debf6194ebf74503f0ab7312c7a79054b6ff816cbba82df4c07e8965

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

module Camunda::ExternalTaskJob
  def perform(id, input_variables)
    output_variables = bpmn_perform(input_variables)
    output_variables = {} if output_variables.nil?
    raise ArgumentError, "Expected a hash, got #{output_variables}" unless output_variables.is_a?(Hash)

    report_completion id, output_variables
  rescue Camunda::BpmnError => e
    report_bpmn_error id, e
  rescue Camunda::ExternalTask::SubmissionError => e
    # We re-raise this so it is not rescued below
    raise e
  rescue StandardError => e
    report_failure id, e, input_variables
  end

  def report_completion(id, variables)
    # Submit to Camunda using
    # POST /external-task/{id}/complete
    Camunda::ExternalTask.new(id: id).complete(variables)
  end

  def report_failure(id, exception, input_variables)
    # Submit error state to Camunda using
    # POST /external-task/{id}/failure
    Camunda::ExternalTask.new(id: id).failure(exception, input_variables)
  end

  def report_bpmn_error(id, exception)
    # Submit bpmn error state to Camunda using
    # POST /external-task/{id}/bpmnError
    Camunda::ExternalTask.new(id: id).bpmn_error(exception)
  end

  def bpmn_perform(_variables)
    raise StandardError, "Please define this method which takes a hash of variables and returns a hash of variables"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
camunda-workflow-0.1.3 lib/camunda/external_task_job.rb