From edeeab4fdc3290f892ab209c1a661cb07aba216b Mon Sep 17 00:00:00 2001 From: Santiago Doldan Date: Fri, 29 Mar 2024 15:50:43 -0300 Subject: [PATCH] Add workflow start delay option --- lib/temporal/connection/grpc.rb | 8 ++++++-- spec/unit/lib/temporal/grpc_spec.rb | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/temporal/connection/grpc.rb b/lib/temporal/connection/grpc.rb index 1bec78f2..c8642f23 100644 --- a/lib/temporal/connection/grpc.rb +++ b/lib/temporal/connection/grpc.rb @@ -122,7 +122,8 @@ def start_workflow_execution( headers: nil, cron_schedule: nil, memo: nil, - search_attributes: nil + search_attributes: nil, + start_delay: nil ) request = Temporalio::Api::WorkflowService::V1::StartWorkflowExecutionRequest.new( identity: identity, @@ -139,6 +140,7 @@ def start_workflow_execution( workflow_execution_timeout: execution_timeout, workflow_run_timeout: run_timeout, workflow_task_timeout: task_timeout, + workflow_start_delay: start_delay, request_id: SecureRandom.uuid, header: Temporalio::Api::Common::V1::Header.new( fields: to_payload_map(headers || {}) @@ -375,7 +377,8 @@ def signal_with_start_workflow_execution( headers: nil, cron_schedule: nil, memo: nil, - search_attributes: nil + search_attributes: nil, + start_delay: nil ) proto_header_fields = if headers.nil? to_payload_map({}) @@ -402,6 +405,7 @@ def signal_with_start_workflow_execution( workflow_execution_timeout: execution_timeout, workflow_run_timeout: run_timeout, workflow_task_timeout: task_timeout, + workflow_start_delay: start_delay, request_id: SecureRandom.uuid, header: Temporalio::Api::Common::V1::Header.new( fields: proto_header_fields diff --git a/spec/unit/lib/temporal/grpc_spec.rb b/spec/unit/lib/temporal/grpc_spec.rb index 0799c5d0..3e4059c0 100644 --- a/spec/unit/lib/temporal/grpc_spec.rb +++ b/spec/unit/lib/temporal/grpc_spec.rb @@ -62,6 +62,7 @@ class TestDeserializer execution_timeout: 1, run_timeout: 2, task_timeout: 3, + start_delay: 10, memo: {}, search_attributes: { 'foo-int-attribute' => 256, @@ -86,6 +87,7 @@ class TestDeserializer expect(request.workflow_execution_timeout.seconds).to eq(1) expect(request.workflow_run_timeout.seconds).to eq(2) expect(request.workflow_task_timeout.seconds).to eq(3) + expect(request.workflow_start_delay.seconds).to eq(10) expect(request.workflow_id_reuse_policy).to eq(:WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE) expect(request.search_attributes.indexed_fields).to eq({ 'foo-int-attribute' => Temporalio::Api::Common::V1::Payload.new(data: '256', metadata: { 'encoding' => 'json/plain' }), @@ -134,6 +136,7 @@ class TestDeserializer execution_timeout: 1, run_timeout: 2, task_timeout: 3, + start_delay: 10, workflow_id_reuse_policy: :allow, signal_name: 'the question', signal_input: 'what do you get if you multiply six by nine?' @@ -149,6 +152,7 @@ class TestDeserializer expect(request.workflow_execution_timeout.seconds).to eq(1) expect(request.workflow_run_timeout.seconds).to eq(2) expect(request.workflow_task_timeout.seconds).to eq(3) + expect(request.workflow_start_delay.seconds).to eq(10) expect(request.signal_name).to eq('the question') expect(request.signal_input.payloads[0].data).to eq('"what do you get if you multiply six by nine?"') expect(request.workflow_id_reuse_policy).to eq(:WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE)