Class: ActiveJob::Temporal::JobPayloadBuilder

Inherits:
Object
  • Object
show all
Includes:
JobPayloadChainBuilder, JobPayloadChildWorkflows, JobPayloadDependencies, JobPayloadRateLimits, JobPayloadWorkflowInteractions
Defined in:
lib/activejob/temporal/job_payload_builder.rb

Overview

rubocop:disable Metrics/ClassLength

Constant Summary collapse

TIMEOUT_CONFIG_ATTRIBUTES =
{
  default_activity_timeout: :start_to_close_timeout,
  default_schedule_to_close_timeout: :schedule_to_close_timeout,
  default_schedule_to_start_timeout: :schedule_to_start_timeout,
  default_heartbeat_timeout: :heartbeat_timeout
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ JobPayloadBuilder

Returns a new instance of JobPayloadBuilder.



29
30
31
# File 'lib/activejob/temporal/job_payload_builder.rb', line 29

def initialize(config)
  @config = config
end

Instance Method Details

#build(job, scheduled_at: nil, encryption_context: nil) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/activejob/temporal/job_payload_builder.rb', line 33

def build(job, scheduled_at: nil, encryption_context: nil)
  payload = base_payload_for(job, scheduled_at)
  payload[:default_activity_options] = default_activity_options
  Observability.inject_trace_context(payload, observability_attributes_for(job, encryption_context))

  apply_retry_policy(payload, job)
  apply_temporal_options(payload, job.class)
  apply_workflow_identity(payload, job.class)
  apply_rate_limits(payload, job)
  apply_workflow_interactions(payload, job.class)
  apply_child_workflows(payload, job)
  apply_chain(payload, job)
  apply_dependencies(payload, job)
  apply_continue_as_new(payload)
  apply_local_activity_helpers(payload)

  payload = transport_payload(payload, job, scheduled_at, encryption_context)
  Payload.enforce_size!(payload, metrics_payload: metrics_payload_for(job), config: @config)
  payload
end