From ae0adf061823e9fded91fe6974528de28ef2d414 Mon Sep 17 00:00:00 2001 From: Roey Berman Date: Tue, 9 Mar 2021 22:01:41 +0200 Subject: [PATCH 1/2] Extend protocol to support activities --- protos/local/core_interface.proto | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/protos/local/core_interface.proto b/protos/local/core_interface.proto index 862ecdadc..54111468c 100644 --- a/protos/local/core_interface.proto +++ b/protos/local/core_interface.proto @@ -115,9 +115,15 @@ message SignalWorkflow { temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes signal = 1; } +message CancelActivity { + string activity_id = 1; +} + message ActivityTask { - // Original task from temporal service - temporal.api.workflowservice.v1.PollActivityTaskQueueResponse original = 1; + oneof variant { + temporal.api.workflowservice.v1.PollActivityTaskQueueResponse start_activity = 1; + CancelActivity cancel_activity = 2; + } } @@ -175,12 +181,30 @@ message WFActivationFailure { // Other bits from RespondWorkflowTaskFailedRequest as needed } -message ActivityTaskSuccess { +message ActivityTaskCompleted { temporal.api.common.v1.Payloads result = 1; // Other bits from RespondActivityTaskCompletedRequest as needed } +message ActivityTaskCancelled { + temporal.api.common.v1.Payloads details = 1; +} + +message ActivityTaskSuccess { + oneof variant { + ActivityTaskCompleted completed = 1; + ActivityTaskCancelled cancelled = 2; + } +} + message ActivityTaskFailure { temporal.api.failure.v1.Failure failure = 1; // Other bits from RespondActivityTaskFailedRequest as needed } + +// A request as given to [crate::Core::send_activity_heartbeat] +message ActivityHeartbeat { + string activity_id = 1; + temporal.api.common.v1.Payloads details = 2; +} + From f661e8d6d37be641369ddd620123384c7775a359 Mon Sep 17 00:00:00 2001 From: Vitaly Date: Tue, 9 Mar 2021 19:49:02 -0800 Subject: [PATCH 2/2] Update activity completion interface --- protos/local/core_interface.proto | 37 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/protos/local/core_interface.proto b/protos/local/core_interface.proto index 54111468c..810e07648 100644 --- a/protos/local/core_interface.proto +++ b/protos/local/core_interface.proto @@ -115,14 +115,20 @@ message SignalWorkflow { temporal.api.history.v1.WorkflowExecutionSignaledEventAttributes signal = 1; } +message StartActivity { + // TODO: add attributes +} + message CancelActivity { - string activity_id = 1; + // TODO: add attributes } message ActivityTask { - oneof variant { - temporal.api.workflowservice.v1.PollActivityTaskQueueResponse start_activity = 1; - CancelActivity cancel_activity = 2; + oneof job { + // Start activity execution. + StartActivity start = 1; + // Attempt to cancel activity execution. + CancelActivity cancel = 2; } } @@ -135,7 +141,7 @@ message TaskCompletion { // Complete a workflow task WFActivationCompletion workflow = 2; // Complete an activity task - ActivityTaskCompletion activity = 3; + ActivityResult activity = 3; } } @@ -146,10 +152,11 @@ message WFActivationCompletion { } } -message ActivityTaskCompletion { +message ActivityResult { oneof status { - ActivityTaskSuccess successful = 1; - ActivityTaskFailure failed = 2; + ActivityTaskSuccess completed = 1; + ActivityTaskCancelation canceled = 2; + ActivityTaskFailure failed = 3; } } @@ -181,20 +188,13 @@ message WFActivationFailure { // Other bits from RespondWorkflowTaskFailedRequest as needed } -message ActivityTaskCompleted { - temporal.api.common.v1.Payloads result = 1; - // Other bits from RespondActivityTaskCompletedRequest as needed -} - -message ActivityTaskCancelled { +message ActivityTaskCancelation { temporal.api.common.v1.Payloads details = 1; } message ActivityTaskSuccess { - oneof variant { - ActivityTaskCompleted completed = 1; - ActivityTaskCancelled cancelled = 2; - } + temporal.api.common.v1.Payloads result = 1; + // Other bits from RespondActivityTaskCompletedRequest as needed } message ActivityTaskFailure { @@ -207,4 +207,3 @@ message ActivityHeartbeat { string activity_id = 1; temporal.api.common.v1.Payloads details = 2; } -