temporalio 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/Cargo.lock +679 -437
- data/Cargo.toml +5 -5
- data/README.md +98 -34
- data/ext/Cargo.toml +3 -3
- data/lib/temporalio/activity/cancellation_details.rb +58 -0
- data/lib/temporalio/activity/context.rb +10 -1
- data/lib/temporalio/activity/definition.rb +41 -3
- data/lib/temporalio/activity/info.rb +25 -4
- data/lib/temporalio/activity.rb +2 -0
- data/lib/temporalio/api/activity/v1/message.rb +1 -1
- data/lib/temporalio/api/batch/v1/message.rb +4 -2
- data/lib/temporalio/api/cloud/account/v1/message.rb +1 -1
- data/lib/temporalio/api/cloud/cloudservice/v1/request_response.rb +11 -2
- data/lib/temporalio/api/cloud/cloudservice/v1/service.rb +2 -2
- data/lib/temporalio/api/cloud/identity/v1/message.rb +7 -2
- data/lib/temporalio/api/cloud/namespace/v1/message.rb +6 -2
- data/lib/temporalio/api/cloud/nexus/v1/message.rb +3 -2
- data/lib/temporalio/api/cloud/operation/v1/message.rb +1 -1
- data/lib/temporalio/api/cloud/region/v1/message.rb +1 -1
- data/lib/temporalio/api/cloud/resource/v1/message.rb +1 -1
- data/lib/temporalio/api/cloud/sink/v1/message.rb +1 -1
- data/lib/temporalio/api/cloud/usage/v1/message.rb +1 -1
- data/lib/temporalio/api/command/v1/message.rb +2 -2
- data/lib/temporalio/api/common/v1/grpc_status.rb +1 -1
- data/lib/temporalio/api/common/v1/message.rb +3 -2
- data/lib/temporalio/api/deployment/v1/message.rb +3 -2
- data/lib/temporalio/api/enums/v1/batch_operation.rb +1 -1
- data/lib/temporalio/api/enums/v1/command_type.rb +1 -1
- data/lib/temporalio/api/enums/v1/common.rb +5 -2
- data/lib/temporalio/api/enums/v1/deployment.rb +3 -2
- data/lib/temporalio/api/enums/v1/event_type.rb +2 -2
- data/lib/temporalio/api/enums/v1/failed_cause.rb +2 -2
- data/lib/temporalio/api/enums/v1/namespace.rb +1 -1
- data/lib/temporalio/api/enums/v1/nexus.rb +1 -1
- data/lib/temporalio/api/enums/v1/query.rb +1 -1
- data/lib/temporalio/api/enums/v1/reset.rb +1 -1
- data/lib/temporalio/api/enums/v1/schedule.rb +1 -1
- data/lib/temporalio/api/enums/v1/task_queue.rb +1 -1
- data/lib/temporalio/api/enums/v1/update.rb +1 -1
- data/lib/temporalio/api/enums/v1/workflow.rb +2 -2
- data/lib/temporalio/api/errordetails/v1/message.rb +1 -1
- data/lib/temporalio/api/export/v1/message.rb +1 -1
- data/lib/temporalio/api/failure/v1/message.rb +3 -2
- data/lib/temporalio/api/filter/v1/message.rb +1 -1
- data/lib/temporalio/api/history/v1/message.rb +4 -2
- data/lib/temporalio/api/namespace/v1/message.rb +1 -1
- data/lib/temporalio/api/nexus/v1/message.rb +2 -2
- data/lib/temporalio/api/operatorservice/v1/request_response.rb +1 -1
- data/lib/temporalio/api/operatorservice/v1/service.rb +1 -1
- data/lib/temporalio/api/payload_visitor.rb +87 -0
- data/lib/temporalio/api/protocol/v1/message.rb +1 -1
- data/lib/temporalio/api/query/v1/message.rb +1 -1
- data/lib/temporalio/api/replication/v1/message.rb +1 -1
- data/lib/temporalio/api/rules/v1/message.rb +27 -0
- data/lib/temporalio/api/schedule/v1/message.rb +2 -2
- data/lib/temporalio/api/sdk/v1/enhanced_stack_trace.rb +1 -1
- data/lib/temporalio/api/sdk/v1/task_complete_metadata.rb +1 -1
- data/lib/temporalio/api/sdk/v1/user_metadata.rb +1 -1
- data/lib/temporalio/api/sdk/v1/workflow_metadata.rb +1 -1
- data/lib/temporalio/api/taskqueue/v1/message.rb +2 -2
- data/lib/temporalio/api/testservice/v1/request_response.rb +1 -1
- data/lib/temporalio/api/testservice/v1/service.rb +1 -1
- data/lib/temporalio/api/update/v1/message.rb +1 -1
- data/lib/temporalio/api/version/v1/message.rb +1 -1
- data/lib/temporalio/api/worker/v1/message.rb +30 -0
- data/lib/temporalio/api/workflow/v1/message.rb +14 -2
- data/lib/temporalio/api/workflowservice/v1/request_response.rb +19 -2
- data/lib/temporalio/api/workflowservice/v1/service.rb +2 -2
- data/lib/temporalio/client/async_activity_handle.rb +12 -4
- data/lib/temporalio/client/connection/cloud_service.rb +60 -0
- data/lib/temporalio/client/connection/workflow_service.rb +105 -0
- data/lib/temporalio/client/interceptor.rb +25 -7
- data/lib/temporalio/client/schedule.rb +10 -2
- data/lib/temporalio/client/with_start_workflow_operation.rb +9 -1
- data/lib/temporalio/client/workflow_handle.rb +50 -10
- data/lib/temporalio/client/workflow_update_handle.rb +9 -3
- data/lib/temporalio/client.rb +110 -6
- data/lib/temporalio/common_enums.rb +14 -0
- data/lib/temporalio/contrib/open_telemetry.rb +13 -9
- data/lib/temporalio/converters/data_converter.rb +18 -8
- data/lib/temporalio/converters/failure_converter.rb +6 -3
- data/lib/temporalio/converters/payload_converter/binary_null.rb +2 -2
- data/lib/temporalio/converters/payload_converter/binary_plain.rb +2 -2
- data/lib/temporalio/converters/payload_converter/binary_protobuf.rb +2 -2
- data/lib/temporalio/converters/payload_converter/composite.rb +6 -4
- data/lib/temporalio/converters/payload_converter/encoding.rb +4 -2
- data/lib/temporalio/converters/payload_converter/json_plain.rb +2 -2
- data/lib/temporalio/converters/payload_converter/json_protobuf.rb +2 -2
- data/lib/temporalio/converters/payload_converter.rb +16 -6
- data/lib/temporalio/error/failure.rb +19 -1
- data/lib/temporalio/error.rb +1 -1
- data/lib/temporalio/internal/bridge/api/activity_result/activity_result.rb +1 -1
- data/lib/temporalio/internal/bridge/api/activity_task/activity_task.rb +3 -2
- data/lib/temporalio/internal/bridge/api/child_workflow/child_workflow.rb +1 -1
- data/lib/temporalio/internal/bridge/api/common/common.rb +1 -1
- data/lib/temporalio/internal/bridge/api/core_interface.rb +1 -1
- data/lib/temporalio/internal/bridge/api/external_data/external_data.rb +1 -1
- data/lib/temporalio/internal/bridge/api/nexus/nexus.rb +3 -2
- data/lib/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rb +2 -2
- data/lib/temporalio/internal/bridge/api/workflow_commands/workflow_commands.rb +3 -2
- data/lib/temporalio/internal/bridge/api/workflow_completion/workflow_completion.rb +1 -1
- data/lib/temporalio/internal/bridge/worker.rb +28 -4
- data/lib/temporalio/internal/bridge.rb +1 -1
- data/lib/temporalio/internal/client/implementation.rb +60 -52
- data/lib/temporalio/internal/proto_utils.rb +4 -4
- data/lib/temporalio/internal/worker/activity_worker.rb +93 -20
- data/lib/temporalio/internal/worker/workflow_instance/child_workflow_handle.rb +8 -6
- data/lib/temporalio/internal/worker/workflow_instance/context.rb +65 -24
- data/lib/temporalio/internal/worker/workflow_instance/details.rb +5 -2
- data/lib/temporalio/internal/worker/workflow_instance/external_workflow_handle.rb +2 -2
- data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +64 -18
- data/lib/temporalio/internal/worker/workflow_instance/outbound_implementation.rb +28 -14
- data/lib/temporalio/internal/worker/workflow_instance.rb +58 -23
- data/lib/temporalio/internal/worker/workflow_worker.rb +16 -6
- data/lib/temporalio/priority.rb +59 -0
- data/lib/temporalio/testing/activity_environment.rb +17 -2
- data/lib/temporalio/testing/workflow_environment.rb +3 -3
- data/lib/temporalio/version.rb +1 -1
- data/lib/temporalio/versioning_override.rb +56 -0
- data/lib/temporalio/worker/deployment_options.rb +45 -0
- data/lib/temporalio/worker/illegal_workflow_call_validator.rb +64 -0
- data/lib/temporalio/worker/interceptor.rb +13 -1
- data/lib/temporalio/worker/poller_behavior.rb +61 -0
- data/lib/temporalio/worker/thread_pool.rb +1 -1
- data/lib/temporalio/worker/workflow_executor/thread_pool.rb +2 -1
- data/lib/temporalio/worker/workflow_replayer.rb +12 -13
- data/lib/temporalio/worker.rb +63 -27
- data/lib/temporalio/worker_deployment_version.rb +67 -0
- data/lib/temporalio/workflow/child_workflow_handle.rb +10 -2
- data/lib/temporalio/workflow/definition.rb +183 -33
- data/lib/temporalio/workflow/external_workflow_handle.rb +3 -1
- data/lib/temporalio/workflow/info.rb +4 -1
- data/lib/temporalio/workflow.rb +61 -9
- data/lib/temporalio.rb +1 -0
- data/temporalio.gemspec +1 -0
- metadata +12 -3
@@ -241,6 +241,21 @@ module Temporalio
|
|
241
241
|
)
|
242
242
|
end
|
243
243
|
|
244
|
+
# Calls CloudService.DeleteNamespaceRegion API call.
|
245
|
+
#
|
246
|
+
# @param request [Temporalio::Api::Cloud::CloudService::V1::DeleteNamespaceRegionRequest] API request.
|
247
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
248
|
+
# @return [Temporalio::Api::Cloud::CloudService::V1::DeleteNamespaceRegionResponse] API response.
|
249
|
+
def delete_namespace_region(request, rpc_options: nil)
|
250
|
+
invoke_rpc(
|
251
|
+
rpc: 'delete_namespace_region',
|
252
|
+
request_class: Temporalio::Api::Cloud::CloudService::V1::DeleteNamespaceRegionRequest,
|
253
|
+
response_class: Temporalio::Api::Cloud::CloudService::V1::DeleteNamespaceRegionResponse,
|
254
|
+
request:,
|
255
|
+
rpc_options:
|
256
|
+
)
|
257
|
+
end
|
258
|
+
|
244
259
|
# Calls CloudService.GetRegions API call.
|
245
260
|
#
|
246
261
|
# @param request [Temporalio::Api::Cloud::CloudService::V1::GetRegionsRequest] API request.
|
@@ -511,6 +526,51 @@ module Temporalio
|
|
511
526
|
)
|
512
527
|
end
|
513
528
|
|
529
|
+
# Calls CloudService.AddUserGroupMember API call.
|
530
|
+
#
|
531
|
+
# @param request [Temporalio::Api::Cloud::CloudService::V1::AddUserGroupMemberRequest] API request.
|
532
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
533
|
+
# @return [Temporalio::Api::Cloud::CloudService::V1::AddUserGroupMemberResponse] API response.
|
534
|
+
def add_user_group_member(request, rpc_options: nil)
|
535
|
+
invoke_rpc(
|
536
|
+
rpc: 'add_user_group_member',
|
537
|
+
request_class: Temporalio::Api::Cloud::CloudService::V1::AddUserGroupMemberRequest,
|
538
|
+
response_class: Temporalio::Api::Cloud::CloudService::V1::AddUserGroupMemberResponse,
|
539
|
+
request:,
|
540
|
+
rpc_options:
|
541
|
+
)
|
542
|
+
end
|
543
|
+
|
544
|
+
# Calls CloudService.RemoveUserGroupMember API call.
|
545
|
+
#
|
546
|
+
# @param request [Temporalio::Api::Cloud::CloudService::V1::RemoveUserGroupMemberRequest] API request.
|
547
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
548
|
+
# @return [Temporalio::Api::Cloud::CloudService::V1::RemoveUserGroupMemberResponse] API response.
|
549
|
+
def remove_user_group_member(request, rpc_options: nil)
|
550
|
+
invoke_rpc(
|
551
|
+
rpc: 'remove_user_group_member',
|
552
|
+
request_class: Temporalio::Api::Cloud::CloudService::V1::RemoveUserGroupMemberRequest,
|
553
|
+
response_class: Temporalio::Api::Cloud::CloudService::V1::RemoveUserGroupMemberResponse,
|
554
|
+
request:,
|
555
|
+
rpc_options:
|
556
|
+
)
|
557
|
+
end
|
558
|
+
|
559
|
+
# Calls CloudService.GetUserGroupMembers API call.
|
560
|
+
#
|
561
|
+
# @param request [Temporalio::Api::Cloud::CloudService::V1::GetUserGroupMembersRequest] API request.
|
562
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
563
|
+
# @return [Temporalio::Api::Cloud::CloudService::V1::GetUserGroupMembersResponse] API response.
|
564
|
+
def get_user_group_members(request, rpc_options: nil)
|
565
|
+
invoke_rpc(
|
566
|
+
rpc: 'get_user_group_members',
|
567
|
+
request_class: Temporalio::Api::Cloud::CloudService::V1::GetUserGroupMembersRequest,
|
568
|
+
response_class: Temporalio::Api::Cloud::CloudService::V1::GetUserGroupMembersResponse,
|
569
|
+
request:,
|
570
|
+
rpc_options:
|
571
|
+
)
|
572
|
+
end
|
573
|
+
|
514
574
|
# Calls CloudService.CreateServiceAccount API call.
|
515
575
|
#
|
516
576
|
# @param request [Temporalio::Api::Cloud::CloudService::V1::CreateServiceAccountRequest] API request.
|
@@ -1245,6 +1245,111 @@ module Temporalio
|
|
1245
1245
|
rpc_options:
|
1246
1246
|
)
|
1247
1247
|
end
|
1248
|
+
|
1249
|
+
# Calls WorkflowService.CreateWorkflowRule API call.
|
1250
|
+
#
|
1251
|
+
# @param request [Temporalio::Api::WorkflowService::V1::CreateWorkflowRuleRequest] API request.
|
1252
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
1253
|
+
# @return [Temporalio::Api::WorkflowService::V1::CreateWorkflowRuleResponse] API response.
|
1254
|
+
def create_workflow_rule(request, rpc_options: nil)
|
1255
|
+
invoke_rpc(
|
1256
|
+
rpc: 'create_workflow_rule',
|
1257
|
+
request_class: Temporalio::Api::WorkflowService::V1::CreateWorkflowRuleRequest,
|
1258
|
+
response_class: Temporalio::Api::WorkflowService::V1::CreateWorkflowRuleResponse,
|
1259
|
+
request:,
|
1260
|
+
rpc_options:
|
1261
|
+
)
|
1262
|
+
end
|
1263
|
+
|
1264
|
+
# Calls WorkflowService.DescribeWorkflowRule API call.
|
1265
|
+
#
|
1266
|
+
# @param request [Temporalio::Api::WorkflowService::V1::DescribeWorkflowRuleRequest] API request.
|
1267
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
1268
|
+
# @return [Temporalio::Api::WorkflowService::V1::DescribeWorkflowRuleResponse] API response.
|
1269
|
+
def describe_workflow_rule(request, rpc_options: nil)
|
1270
|
+
invoke_rpc(
|
1271
|
+
rpc: 'describe_workflow_rule',
|
1272
|
+
request_class: Temporalio::Api::WorkflowService::V1::DescribeWorkflowRuleRequest,
|
1273
|
+
response_class: Temporalio::Api::WorkflowService::V1::DescribeWorkflowRuleResponse,
|
1274
|
+
request:,
|
1275
|
+
rpc_options:
|
1276
|
+
)
|
1277
|
+
end
|
1278
|
+
|
1279
|
+
# Calls WorkflowService.DeleteWorkflowRule API call.
|
1280
|
+
#
|
1281
|
+
# @param request [Temporalio::Api::WorkflowService::V1::DeleteWorkflowRuleRequest] API request.
|
1282
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
1283
|
+
# @return [Temporalio::Api::WorkflowService::V1::DeleteWorkflowRuleResponse] API response.
|
1284
|
+
def delete_workflow_rule(request, rpc_options: nil)
|
1285
|
+
invoke_rpc(
|
1286
|
+
rpc: 'delete_workflow_rule',
|
1287
|
+
request_class: Temporalio::Api::WorkflowService::V1::DeleteWorkflowRuleRequest,
|
1288
|
+
response_class: Temporalio::Api::WorkflowService::V1::DeleteWorkflowRuleResponse,
|
1289
|
+
request:,
|
1290
|
+
rpc_options:
|
1291
|
+
)
|
1292
|
+
end
|
1293
|
+
|
1294
|
+
# Calls WorkflowService.ListWorkflowRules API call.
|
1295
|
+
#
|
1296
|
+
# @param request [Temporalio::Api::WorkflowService::V1::ListWorkflowRulesRequest] API request.
|
1297
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
1298
|
+
# @return [Temporalio::Api::WorkflowService::V1::ListWorkflowRulesResponse] API response.
|
1299
|
+
def list_workflow_rules(request, rpc_options: nil)
|
1300
|
+
invoke_rpc(
|
1301
|
+
rpc: 'list_workflow_rules',
|
1302
|
+
request_class: Temporalio::Api::WorkflowService::V1::ListWorkflowRulesRequest,
|
1303
|
+
response_class: Temporalio::Api::WorkflowService::V1::ListWorkflowRulesResponse,
|
1304
|
+
request:,
|
1305
|
+
rpc_options:
|
1306
|
+
)
|
1307
|
+
end
|
1308
|
+
|
1309
|
+
# Calls WorkflowService.TriggerWorkflowRule API call.
|
1310
|
+
#
|
1311
|
+
# @param request [Temporalio::Api::WorkflowService::V1::TriggerWorkflowRuleRequest] API request.
|
1312
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
1313
|
+
# @return [Temporalio::Api::WorkflowService::V1::TriggerWorkflowRuleResponse] API response.
|
1314
|
+
def trigger_workflow_rule(request, rpc_options: nil)
|
1315
|
+
invoke_rpc(
|
1316
|
+
rpc: 'trigger_workflow_rule',
|
1317
|
+
request_class: Temporalio::Api::WorkflowService::V1::TriggerWorkflowRuleRequest,
|
1318
|
+
response_class: Temporalio::Api::WorkflowService::V1::TriggerWorkflowRuleResponse,
|
1319
|
+
request:,
|
1320
|
+
rpc_options:
|
1321
|
+
)
|
1322
|
+
end
|
1323
|
+
|
1324
|
+
# Calls WorkflowService.RecordWorkerHeartbeat API call.
|
1325
|
+
#
|
1326
|
+
# @param request [Temporalio::Api::WorkflowService::V1::RecordWorkerHeartbeatRequest] API request.
|
1327
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
1328
|
+
# @return [Temporalio::Api::WorkflowService::V1::RecordWorkerHeartbeatResponse] API response.
|
1329
|
+
def record_worker_heartbeat(request, rpc_options: nil)
|
1330
|
+
invoke_rpc(
|
1331
|
+
rpc: 'record_worker_heartbeat',
|
1332
|
+
request_class: Temporalio::Api::WorkflowService::V1::RecordWorkerHeartbeatRequest,
|
1333
|
+
response_class: Temporalio::Api::WorkflowService::V1::RecordWorkerHeartbeatResponse,
|
1334
|
+
request:,
|
1335
|
+
rpc_options:
|
1336
|
+
)
|
1337
|
+
end
|
1338
|
+
|
1339
|
+
# Calls WorkflowService.ListWorkers API call.
|
1340
|
+
#
|
1341
|
+
# @param request [Temporalio::Api::WorkflowService::V1::ListWorkersRequest] API request.
|
1342
|
+
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
1343
|
+
# @return [Temporalio::Api::WorkflowService::V1::ListWorkersResponse] API response.
|
1344
|
+
def list_workers(request, rpc_options: nil)
|
1345
|
+
invoke_rpc(
|
1346
|
+
rpc: 'list_workers',
|
1347
|
+
request_class: Temporalio::Api::WorkflowService::V1::ListWorkersRequest,
|
1348
|
+
response_class: Temporalio::Api::WorkflowService::V1::ListWorkersResponse,
|
1349
|
+
request:,
|
1350
|
+
rpc_options:
|
1351
|
+
)
|
1352
|
+
end
|
1248
1353
|
end
|
1249
1354
|
end
|
1250
1355
|
end
|
@@ -36,6 +36,10 @@ module Temporalio
|
|
36
36
|
:search_attributes,
|
37
37
|
:start_delay,
|
38
38
|
:request_eager_start,
|
39
|
+
:versioning_override,
|
40
|
+
:priority,
|
41
|
+
:arg_hints,
|
42
|
+
:result_hint,
|
39
43
|
:headers,
|
40
44
|
:rpc_options
|
41
45
|
)
|
@@ -47,6 +51,8 @@ module Temporalio
|
|
47
51
|
:args,
|
48
52
|
:wait_for_stage,
|
49
53
|
:start_workflow_operation,
|
54
|
+
:arg_hints,
|
55
|
+
:result_hint,
|
50
56
|
:headers,
|
51
57
|
:rpc_options
|
52
58
|
)
|
@@ -56,13 +62,16 @@ module Temporalio
|
|
56
62
|
:signal,
|
57
63
|
:args,
|
58
64
|
:start_workflow_operation,
|
65
|
+
:arg_hints,
|
59
66
|
# Headers intentionally not defined here, because they are not separate from start_workflow_operation
|
60
67
|
:rpc_options
|
61
68
|
)
|
62
69
|
|
63
|
-
# Input for {Outbound.
|
64
|
-
|
70
|
+
# Input for {Outbound.list_workflow_page}.
|
71
|
+
ListWorkflowPageInput = Data.define(
|
65
72
|
:query,
|
73
|
+
:next_page_token,
|
74
|
+
:page_size,
|
66
75
|
:rpc_options
|
67
76
|
)
|
68
77
|
|
@@ -95,6 +104,7 @@ module Temporalio
|
|
95
104
|
:run_id,
|
96
105
|
:signal,
|
97
106
|
:args,
|
107
|
+
:arg_hints,
|
98
108
|
:headers,
|
99
109
|
:rpc_options
|
100
110
|
)
|
@@ -106,6 +116,8 @@ module Temporalio
|
|
106
116
|
:query,
|
107
117
|
:args,
|
108
118
|
:reject_condition,
|
119
|
+
:arg_hints,
|
120
|
+
:result_hint,
|
109
121
|
:headers,
|
110
122
|
:rpc_options
|
111
123
|
)
|
@@ -118,6 +130,8 @@ module Temporalio
|
|
118
130
|
:update,
|
119
131
|
:args,
|
120
132
|
:wait_for_stage,
|
133
|
+
:arg_hints,
|
134
|
+
:result_hint,
|
121
135
|
:headers,
|
122
136
|
:rpc_options
|
123
137
|
)
|
@@ -216,6 +230,7 @@ module Temporalio
|
|
216
230
|
HeartbeatAsyncActivityInput = Data.define(
|
217
231
|
:task_token_or_id_reference,
|
218
232
|
:details,
|
233
|
+
:detail_hints,
|
219
234
|
:rpc_options
|
220
235
|
)
|
221
236
|
|
@@ -223,6 +238,7 @@ module Temporalio
|
|
223
238
|
CompleteAsyncActivityInput = Data.define(
|
224
239
|
:task_token_or_id_reference,
|
225
240
|
:result,
|
241
|
+
:result_hint,
|
226
242
|
:rpc_options
|
227
243
|
)
|
228
244
|
|
@@ -231,6 +247,7 @@ module Temporalio
|
|
231
247
|
:task_token_or_id_reference,
|
232
248
|
:error,
|
233
249
|
:last_heartbeat_details,
|
250
|
+
:last_heartbeat_detail_hints,
|
234
251
|
:rpc_options
|
235
252
|
)
|
236
253
|
|
@@ -238,6 +255,7 @@ module Temporalio
|
|
238
255
|
ReportCancellationAsyncActivityInput = Data.define(
|
239
256
|
:task_token_or_id_reference,
|
240
257
|
:details,
|
258
|
+
:detail_hints,
|
241
259
|
:rpc_options
|
242
260
|
)
|
243
261
|
|
@@ -279,12 +297,12 @@ module Temporalio
|
|
279
297
|
next_interceptor.signal_with_start_workflow(input)
|
280
298
|
end
|
281
299
|
|
282
|
-
# Called for every {Client.
|
300
|
+
# Called for every {Client.list_workflow_page} call.
|
283
301
|
#
|
284
|
-
# @param input [
|
285
|
-
# @return [
|
286
|
-
def
|
287
|
-
next_interceptor.
|
302
|
+
# @param input [ListWorkflowPageInput] Input.
|
303
|
+
# @return [Client::ListWorkflowPage] Enumerable workflow executions, with a #next_page_token method.
|
304
|
+
def list_workflow_page(input)
|
305
|
+
next_interceptor.list_workflow_page(input)
|
288
306
|
end
|
289
307
|
|
290
308
|
# Called for every {Client.count_workflows} call.
|
@@ -175,6 +175,7 @@ module Temporalio
|
|
175
175
|
:retry_policy,
|
176
176
|
:memo,
|
177
177
|
:search_attributes,
|
178
|
+
:arg_hints,
|
178
179
|
:headers
|
179
180
|
)
|
180
181
|
|
@@ -208,6 +209,9 @@ module Temporalio
|
|
208
209
|
# @return [Hash<String, Object>, nil] Memo for the workflow.
|
209
210
|
# @!attribute search_attributes
|
210
211
|
# @return [SearchAttributes, nil] Search attributes for the workflow.
|
212
|
+
# @!attribute arg_hints
|
213
|
+
# @return [Array<Object>, nil] Converter hints for workflow arguments. This is only user-set (e.g. on create)
|
214
|
+
# and is not persisted and therefore will not be set when describing a workflow.
|
211
215
|
# @!attribute headers
|
212
216
|
# @return [Hash<String, Object>, nil] Headers for the workflow.
|
213
217
|
class StartWorkflow
|
@@ -249,10 +253,13 @@ module Temporalio
|
|
249
253
|
retry_policy: nil,
|
250
254
|
memo: nil,
|
251
255
|
search_attributes: nil,
|
256
|
+
arg_hints: nil,
|
252
257
|
headers: nil
|
253
258
|
)
|
259
|
+
workflow, defn_arg_hints, =
|
260
|
+
Workflow::Definition._workflow_type_and_hints_from_workflow_parameter(workflow)
|
254
261
|
_original_new( # steep:ignore
|
255
|
-
workflow
|
262
|
+
workflow:,
|
256
263
|
args:,
|
257
264
|
id:,
|
258
265
|
task_queue:,
|
@@ -264,6 +271,7 @@ module Temporalio
|
|
264
271
|
retry_policy:,
|
265
272
|
memo:,
|
266
273
|
search_attributes:,
|
274
|
+
arg_hints: arg_hints || defn_arg_hints,
|
267
275
|
headers:
|
268
276
|
)
|
269
277
|
end
|
@@ -296,7 +304,7 @@ module Temporalio
|
|
296
304
|
workflow_id: id,
|
297
305
|
workflow_type: Api::Common::V1::WorkflowType.new(name: workflow),
|
298
306
|
task_queue: Api::TaskQueue::V1::TaskQueue.new(name: task_queue),
|
299
|
-
input: data_converter.to_payloads(args),
|
307
|
+
input: data_converter.to_payloads(args, hints: arg_hints),
|
300
308
|
workflow_execution_timeout: Internal::ProtoUtils.seconds_to_duration(execution_timeout),
|
301
309
|
workflow_run_timeout: Internal::ProtoUtils.seconds_to_duration(run_timeout),
|
302
310
|
workflow_task_timeout: Internal::ProtoUtils.seconds_to_duration(task_timeout),
|
@@ -24,6 +24,8 @@ module Temporalio
|
|
24
24
|
:memo,
|
25
25
|
:search_attributes,
|
26
26
|
:start_delay,
|
27
|
+
:arg_hints,
|
28
|
+
:result_hint,
|
27
29
|
:headers
|
28
30
|
)
|
29
31
|
|
@@ -55,10 +57,14 @@ module Temporalio
|
|
55
57
|
memo: nil,
|
56
58
|
search_attributes: nil,
|
57
59
|
start_delay: nil,
|
60
|
+
arg_hints: nil,
|
61
|
+
result_hint: nil,
|
58
62
|
headers: {}
|
59
63
|
)
|
64
|
+
workflow, defn_arg_hints, defn_result_hint =
|
65
|
+
Workflow::Definition._workflow_type_and_hints_from_workflow_parameter(workflow)
|
60
66
|
@options = Options.new(
|
61
|
-
workflow
|
67
|
+
workflow:,
|
62
68
|
args:,
|
63
69
|
id:,
|
64
70
|
task_queue:,
|
@@ -74,6 +80,8 @@ module Temporalio
|
|
74
80
|
memo:,
|
75
81
|
search_attributes:,
|
76
82
|
start_delay:,
|
83
|
+
arg_hints: arg_hints || defn_arg_hints,
|
84
|
+
result_hint: result_hint || defn_result_hint,
|
77
85
|
headers:
|
78
86
|
)
|
79
87
|
@workflow_handle_mutex = Mutex.new
|
@@ -48,13 +48,21 @@ module Temporalio
|
|
48
48
|
# @return [String, nil] First execution run ID.
|
49
49
|
attr_reader :first_execution_run_id
|
50
50
|
|
51
|
+
# Result hint for the result of this workflow. If this handle was created via {Client.start_workflow}, this is set
|
52
|
+
# from there (either via result hint on that call or workflow definition's result hint). Otherwise, the result
|
53
|
+
# hint is set by the creator of the handle.
|
54
|
+
#
|
55
|
+
# @return [Object, nil] Result hint.
|
56
|
+
attr_reader :result_hint
|
57
|
+
|
51
58
|
# @!visibility private
|
52
|
-
def initialize(client:, id:, run_id:, result_run_id:, first_execution_run_id:)
|
59
|
+
def initialize(client:, id:, run_id:, result_run_id:, first_execution_run_id:, result_hint:)
|
53
60
|
@client = client
|
54
61
|
@id = id
|
55
62
|
@run_id = run_id
|
56
63
|
@result_run_id = result_run_id
|
57
64
|
@first_execution_run_id = first_execution_run_id
|
65
|
+
@result_hint = result_hint
|
58
66
|
end
|
59
67
|
|
60
68
|
# Wait for the result of the workflow.
|
@@ -64,6 +72,8 @@ module Temporalio
|
|
64
72
|
#
|
65
73
|
# @param follow_runs [Boolean] If +true+, workflow runs will be continually fetched across retries and continue as
|
66
74
|
# new until the latest one is found. If +false+, the first result is used.
|
75
|
+
# @param result_hint [Object, nil] Override the result hint for the result. If unset/nil, uses one on the handle
|
76
|
+
# itself.
|
67
77
|
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
68
78
|
#
|
69
79
|
# @return [Object] Result of the workflow after being converted by the data converter.
|
@@ -71,7 +81,7 @@ module Temporalio
|
|
71
81
|
# @raise [Error::WorkflowFailedError] Workflow failed with +cause+ as the cause.
|
72
82
|
# @raise [Error::WorkflowContinuedAsNewError] Workflow continued as new and +follow_runs+ is +false+.
|
73
83
|
# @raise [Error::RPCError] RPC error from call.
|
74
|
-
def result(follow_runs: true, rpc_options: nil)
|
84
|
+
def result(follow_runs: true, result_hint: nil, rpc_options: nil)
|
75
85
|
# Wait on the close event, following as needed
|
76
86
|
hist_run_id = result_run_id
|
77
87
|
loop do
|
@@ -91,7 +101,7 @@ module Temporalio
|
|
91
101
|
hist_run_id = attrs.new_execution_run_id
|
92
102
|
next if follow_runs && hist_run_id && !hist_run_id.empty?
|
93
103
|
|
94
|
-
return @client.data_converter.from_payloads(attrs.result).first
|
104
|
+
return @client.data_converter.from_payloads(attrs.result, hints: Array(@result_hint || result_hint)).first
|
95
105
|
when :EVENT_TYPE_WORKFLOW_EXECUTION_FAILED
|
96
106
|
attrs = event.workflow_execution_failed_event_attributes
|
97
107
|
hist_run_id = attrs.new_execution_run_id
|
@@ -212,18 +222,22 @@ module Temporalio
|
|
212
222
|
#
|
213
223
|
# @param signal [Workflow::Definition::Signal, Symbol, String] Signal definition or name.
|
214
224
|
# @param args [Array<Object>] Signal arguments.
|
225
|
+
# @param arg_hints [Array<Object>, nil] Signal argument hints. If unset/nil and a signal definition is passed,
|
226
|
+
# uses the ones on the signal definition if present.
|
215
227
|
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
216
228
|
#
|
217
229
|
# @raise [Error::RPCError] RPC error from call.
|
218
230
|
#
|
219
231
|
# @note Handles created as a result of {Client.start_workflow} will signal the latest workflow with the same
|
220
232
|
# workflow ID even if it is unrelated to the started workflow.
|
221
|
-
def signal(signal, *args, rpc_options: nil)
|
233
|
+
def signal(signal, *args, arg_hints: nil, rpc_options: nil)
|
234
|
+
signal, defn_arg_hints = Workflow::Definition::Signal._name_and_hints_from_parameter(signal)
|
222
235
|
@client._impl.signal_workflow(Interceptor::SignalWorkflowInput.new(
|
223
236
|
workflow_id: id,
|
224
237
|
run_id:,
|
225
|
-
signal
|
238
|
+
signal:,
|
226
239
|
args:,
|
240
|
+
arg_hints: arg_hints || defn_arg_hints,
|
227
241
|
headers: {},
|
228
242
|
rpc_options:
|
229
243
|
))
|
@@ -235,6 +249,10 @@ module Temporalio
|
|
235
249
|
# @param query [Workflow::Definition::Query, Symbol, String] Query definition or name.
|
236
250
|
# @param args [Array<Object>] Query arguments.
|
237
251
|
# @param reject_condition [WorkflowQueryRejectCondition, nil] Condition for rejecting the query.
|
252
|
+
# @param arg_hints [Array<Object>, nil] Query argument hints. If unset/nil and a query definition is passed,
|
253
|
+
# uses the ones on the query definition if present.
|
254
|
+
# @param result_hint [Object, nil] Query result hints. If unset/nil and a query definition is passed, uses the
|
255
|
+
# one on the query definition if present.
|
238
256
|
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
239
257
|
#
|
240
258
|
# @return [Object, nil] Query result.
|
@@ -249,14 +267,19 @@ module Temporalio
|
|
249
267
|
query,
|
250
268
|
*args,
|
251
269
|
reject_condition: @client.options.default_workflow_query_reject_condition,
|
270
|
+
arg_hints: nil,
|
271
|
+
result_hint: nil,
|
252
272
|
rpc_options: nil
|
253
273
|
)
|
274
|
+
query, defn_arg_hints, defn_result_hint = Workflow::Definition::Query._name_and_hints_from_parameter(query)
|
254
275
|
@client._impl.query_workflow(Interceptor::QueryWorkflowInput.new(
|
255
276
|
workflow_id: id,
|
256
277
|
run_id:,
|
257
|
-
query
|
278
|
+
query:,
|
258
279
|
args:,
|
259
280
|
reject_condition:,
|
281
|
+
arg_hints: arg_hints || defn_arg_hints,
|
282
|
+
result_hint: result_hint || defn_result_hint,
|
260
283
|
headers: {},
|
261
284
|
rpc_options:
|
262
285
|
))
|
@@ -270,6 +293,10 @@ module Temporalio
|
|
270
293
|
# @param wait_for_stage [WorkflowUpdateWaitStage] Required stage to wait until returning. ADMITTED is not
|
271
294
|
# currently supported. See https://docs.temporal.io/workflows#update for more details.
|
272
295
|
# @param id [String] ID of the update.
|
296
|
+
# @param arg_hints [Array<Object>, nil] Update argument hints. If unset/nil and am update definition is passed,
|
297
|
+
# uses the ones on the update definition if present.
|
298
|
+
# @param result_hint [Object, nil] Update result hints. If unset/nil and an update definition is passed, uses the
|
299
|
+
# one on the update definition if present.
|
273
300
|
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
274
301
|
#
|
275
302
|
# @return [WorkflowUpdateHandle] The update handle.
|
@@ -285,15 +312,20 @@ module Temporalio
|
|
285
312
|
*args,
|
286
313
|
wait_for_stage:,
|
287
314
|
id: SecureRandom.uuid,
|
315
|
+
arg_hints: nil,
|
316
|
+
result_hint: nil,
|
288
317
|
rpc_options: nil
|
289
318
|
)
|
319
|
+
update, defn_arg_hints, defn_result_hint = Workflow::Definition::Update._name_and_hints_from_parameter(update)
|
290
320
|
@client._impl.start_workflow_update(Interceptor::StartWorkflowUpdateInput.new(
|
291
321
|
workflow_id: self.id,
|
292
322
|
run_id:,
|
293
323
|
update_id: id,
|
294
|
-
update
|
324
|
+
update:,
|
295
325
|
args:,
|
296
326
|
wait_for_stage:,
|
327
|
+
arg_hints: arg_hints || defn_arg_hints,
|
328
|
+
result_hint: result_hint || defn_result_hint,
|
297
329
|
headers: {},
|
298
330
|
rpc_options:
|
299
331
|
))
|
@@ -305,6 +337,10 @@ module Temporalio
|
|
305
337
|
# @param update [Workflow::Definition::Update, Symbol, String] Update definition or name.
|
306
338
|
# @param args [Array<Object>] Update arguments.
|
307
339
|
# @param id [String] ID of the update.
|
340
|
+
# @param arg_hints [Array<Object>, nil] Update argument hints. If unset/nil and am update definition is passed,
|
341
|
+
# uses the ones on the update definition if present.
|
342
|
+
# @param result_hint [Object, nil] Update result hints. If unset/nil and an update definition is passed, uses the
|
343
|
+
# one on the update definition if present.
|
308
344
|
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
309
345
|
#
|
310
346
|
# @return [Object, nil] Update result.
|
@@ -316,12 +352,14 @@ module Temporalio
|
|
316
352
|
#
|
317
353
|
# @note Handles created as a result of {Client.start_workflow} will send updates the latest workflow with the same
|
318
354
|
# workflow ID even if it is unrelated to the started workflow.
|
319
|
-
def execute_update(update, *args, id: SecureRandom.uuid, rpc_options: nil)
|
355
|
+
def execute_update(update, *args, id: SecureRandom.uuid, arg_hints: nil, result_hint: nil, rpc_options: nil)
|
320
356
|
start_update(
|
321
357
|
update,
|
322
358
|
*args,
|
323
359
|
wait_for_stage: WorkflowUpdateWaitStage::COMPLETED,
|
324
360
|
id:,
|
361
|
+
arg_hints:,
|
362
|
+
result_hint:,
|
325
363
|
rpc_options:
|
326
364
|
).result
|
327
365
|
end
|
@@ -331,15 +369,17 @@ module Temporalio
|
|
331
369
|
# @param id [String] ID of the update.
|
332
370
|
# @param specific_run_id [String, nil] Workflow run ID to get update handle for. Default is the {run_id}. Most
|
333
371
|
# users will not need to set this and instead use the one on the class.
|
372
|
+
# @param result_hint [Object, nil] Result hint for the update result to set on the handle.
|
334
373
|
#
|
335
374
|
# @return [WorkflowUpdateHandle] The update handle.
|
336
|
-
def update_handle(id, specific_run_id: run_id)
|
375
|
+
def update_handle(id, specific_run_id: run_id, result_hint: nil)
|
337
376
|
WorkflowUpdateHandle.new(
|
338
377
|
client: @client,
|
339
378
|
id:,
|
340
379
|
workflow_id: self.id,
|
341
380
|
workflow_run_id: specific_run_id,
|
342
|
-
known_outcome: nil
|
381
|
+
known_outcome: nil,
|
382
|
+
result_hint:
|
343
383
|
)
|
344
384
|
end
|
345
385
|
|
@@ -18,13 +18,17 @@ module Temporalio
|
|
18
18
|
# @return [String, nil] Run ID for the workflow.
|
19
19
|
attr_reader :workflow_run_id
|
20
20
|
|
21
|
+
# @return [Object, nil] Result hint if one set when the handle was created.
|
22
|
+
attr_reader :result_hint
|
23
|
+
|
21
24
|
# @!visibility private
|
22
|
-
def initialize(client:, id:, workflow_id:, workflow_run_id:, known_outcome:)
|
25
|
+
def initialize(client:, id:, workflow_id:, workflow_run_id:, known_outcome:, result_hint:)
|
23
26
|
@client = client
|
24
27
|
@id = id
|
25
28
|
@workflow_id = workflow_id
|
26
29
|
@workflow_run_id = workflow_run_id
|
27
30
|
@known_outcome = known_outcome
|
31
|
+
@result_hint = result_hint
|
28
32
|
end
|
29
33
|
|
30
34
|
# @return [Boolean] True if the result is already known and {result} will not make a blocking call, false if
|
@@ -36,6 +40,7 @@ module Temporalio
|
|
36
40
|
# Wait for and return the result of the update. The result may already be known in which case no network call is
|
37
41
|
# made. Otherwise the result will be polled for until it is returned.
|
38
42
|
#
|
43
|
+
# @param result_hint [Object, nil] If not nil, overrides handle-level result hint for getting the result.
|
39
44
|
# @param rpc_options [RPCOptions, nil] Advanced RPC options.
|
40
45
|
#
|
41
46
|
# @return [Object, nil] Update result.
|
@@ -44,7 +49,7 @@ module Temporalio
|
|
44
49
|
# @raise [Error::WorkflowUpdateRPCTimeoutOrCanceledError] This update call timed out or was canceled. This doesn't
|
45
50
|
# mean the update itself was timed out or canceled.
|
46
51
|
# @raise [Error::RPCError] RPC error from call.
|
47
|
-
def result(rpc_options: nil)
|
52
|
+
def result(result_hint: nil, rpc_options: nil)
|
48
53
|
@known_outcome ||= @client._impl.poll_workflow_update(Interceptor::PollWorkflowUpdateInput.new(
|
49
54
|
workflow_id:,
|
50
55
|
run_id: workflow_run_id,
|
@@ -56,7 +61,8 @@ module Temporalio
|
|
56
61
|
raise Error::WorkflowUpdateFailedError.new, cause: @client.data_converter.from_failure(@known_outcome.failure)
|
57
62
|
end
|
58
63
|
|
59
|
-
results = @client.data_converter.from_payloads(@known_outcome.success
|
64
|
+
results = @client.data_converter.from_payloads(@known_outcome.success,
|
65
|
+
hints: Array(result_hint || @result_hint))
|
60
66
|
warn("Expected 0 or 1 update result, got #{results.size}") if results.size > 1
|
61
67
|
results.first
|
62
68
|
end
|