TemporalSdk.Workflow (temporal_sdk v0.2.11)
View SourceTemporal workflow task module.
WIP Temporal commands:
- start_activity WIP: session_execution, direct_execution, direct_result
TODO Temporal commands:
start_nexus/4
start_nexus/5
cancel_nexus
upsert_workflow_search_attributes
cancel_external_workflow
signal_external_workflow
Summary
SDK functions
Requests workflow eviction on next workflow task completion request.
Temporal marker commands
Retrieves the application configuration parameter via :application.get_env/1 and records its value
as a marker.
Retrieves the OS environment variable via :os.getenv/1 and records its value as a marker.
Awaitables functions
@spec await(await_pattern :: :temporal_sdk_workflow.await_pattern()) :: :temporal_sdk_workflow.await_ret()
@spec await( await_pattern :: :temporal_sdk_workflow.await_pattern(), opts :: :temporal_sdk_workflow.await_opts() ) :: :temporal_sdk_workflow.await_ret()
@spec await_all(await_pattern :: [:temporal_sdk_workflow.await_pattern()]) :: :temporal_sdk_workflow.await_ret_list()
@spec await_all( await_pattern :: [:temporal_sdk_workflow.await_pattern()], opts :: :temporal_sdk_workflow.await_opts() ) :: :temporal_sdk_workflow.await_ret_list()
@spec await_any(await_pattern :: [:temporal_sdk_workflow.await_pattern()]) :: :temporal_sdk_workflow.await_ret_list()
@spec await_any( await_pattern :: [:temporal_sdk_workflow.await_pattern()], opts :: :temporal_sdk_workflow.await_opts() ) :: :temporal_sdk_workflow.await_ret_list()
@spec await_info(info_or_info_id :: :temporal_sdk_workflow.info() | term()) :: :temporal_sdk_workflow.await_ret() | :noinfo
@spec await_info( info_or_info_id :: :temporal_sdk_workflow.info() | term(), info_timeout :: :temporal_sdk.time(), awaitable_timeout :: :temporal_sdk.time() ) :: :temporal_sdk_workflow.await_ret() | :noinfo
@spec is_awaited(await_pattern :: :temporal_sdk_workflow.await_pattern()) :: {true, :temporal_sdk_workflow.await_match()} | {false, :temporal_sdk_workflow.await_match()} | :no_return
@spec is_awaited_all(await_pattern :: [:temporal_sdk_workflow.await_pattern()]) :: {true, [:temporal_sdk_workflow.await_match()]} | {false, [:temporal_sdk_workflow.await_match()]} | :no_return
@spec is_awaited_any(await_pattern :: [:temporal_sdk_workflow.await_pattern()]) :: {true, [:temporal_sdk_workflow.await_match()]} | {false, [:temporal_sdk_workflow.await_match()]} | :no_return
@spec wait(await_pattern :: :temporal_sdk_workflow.await_pattern()) :: :temporal_sdk_workflow.await_match() | no_return()
@spec wait( await_pattern :: :temporal_sdk_workflow.await_pattern(), opts :: :temporal_sdk_workflow.await_opts() ) :: :temporal_sdk_workflow.await_match() | no_return()
@spec wait_all(await_pattern :: [:temporal_sdk_workflow.await_pattern()]) :: [:temporal_sdk_workflow.await_match()] | no_return()
@spec wait_all( await_pattern :: [:temporal_sdk_workflow.await_pattern()], opts :: :temporal_sdk_workflow.await_opts() ) :: [:temporal_sdk_workflow.await_match()] | no_return()
@spec wait_any(await_pattern :: [:temporal_sdk_workflow.await_pattern()]) :: [:temporal_sdk_workflow.await_match()] | no_return()
@spec wait_any( await_pattern :: [:temporal_sdk_workflow.await_pattern()], opts :: :temporal_sdk_workflow.await_opts() ) :: [:temporal_sdk_workflow.await_match()] | no_return()
@spec wait_info(info_or_info_id :: :temporal_sdk_workflow.info() | term()) :: :temporal_sdk_workflow.await_match() | no_return()
@spec wait_info( info_or_info_id :: :temporal_sdk_workflow.info() | term(), info_timeout :: :temporal_sdk.time(), awaitable_timeout :: :temporal_sdk.time() ) :: :temporal_sdk_workflow.await_match() | no_return()
SDK functions
@spec await_open_before_close(is_enabled :: boolean()) :: :ok
@spec evict_workflow() :: :ok | no_return()
Requests workflow eviction on next workflow task completion request.
SDK Architecture - Workflow Eviction section provides details about workflow eviction mechanism.
Duplicate eviction requests within the same workflow task cycle are ignored. Eviction requests are ignored during workflow replay.
SDK Samples Eviction Parallel Handler sample demonstrates function usage.
@spec get_workflow_result() :: :temporal_sdk.term_to_payloads() | no_return()
@spec select_history(event_id :: pos_integer()) :: :temporal_sdk_workflow.history_event() | :noevent
@spec select_history( history_event_pattern :: :temporal_sdk_workflow.history_event_table_pattern() ) :: [ :temporal_sdk_workflow.ets_match() ]
@spec select_history( history_pattern_spec :: :temporal_sdk_workflow.history_event_table_pattern_match_spec() ) :: [:temporal_sdk_workflow.ets_match()]
@spec select_history(continuation :: :temporal_sdk_workflow.ets_continuation()) :: {[:temporal_sdk_workflow.ets_match()], continuation :: :temporal_sdk_workflow.ets_continuation()} | :"$end_of_table"
@spec select_history( history_pattern_spec :: :temporal_sdk_workflow.history_event_table_pattern_match_spec(), limit :: pos_integer() ) :: {[:temporal_sdk_workflow.ets_match()], continuation :: :temporal_sdk_workflow.ets_continuation()} | :"$end_of_table"
@spec select_index( awaitable_index_pattern :: :temporal_sdk_workflow.awaitable_index_pattern() ) :: [ :temporal_sdk_workflow.ets_match() ]
@spec select_index( index_pattern_spec :: :temporal_sdk_workflow.awaitable_index_pattern_match_spec() ) :: [:temporal_sdk_workflow.ets_match()]
@spec select_index(continuation :: :temporal_sdk_workflow.ets_continuation()) :: {[:temporal_sdk_workflow.ets_match()], continuation :: :temporal_sdk_workflow.ets_continuation()} | :"$end_of_table"
@spec select_index( index_pattern_spec :: :temporal_sdk_workflow.awaitable_index_pattern_match_spec(), limit :: pos_integer() ) :: {[:temporal_sdk_workflow.ets_match()], continuation :: :temporal_sdk_workflow.ets_continuation()} | :"$end_of_table"
@spec set_info(info_value :: term()) :: :temporal_sdk_workflow.info() | no_return()
@spec set_info( info_value :: term(), opts :: [ info_id: :temporal_sdk_workflow.execution_id(), awaitable_id: :temporal_sdk_workflow.awaitable_id() ] ) :: :temporal_sdk_workflow.info() | no_return()
@spec set_workflow_result(workflow_result :: :temporal_sdk.term_to_payloads()) :: :ok
@spec start_execution(function :: atom()) :: :temporal_sdk_workflow.execution() | no_return()
@spec start_execution(function :: atom(), input :: term()) :: :temporal_sdk_workflow.execution() | no_return()
@spec start_execution( function :: atom(), input :: term(), opts :: :temporal_sdk_workflow.start_execution_opts() ) :: :temporal_sdk_workflow.execution() | no_return()
@spec start_execution( module :: module(), function :: atom(), input :: term(), opts :: :temporal_sdk_workflow.start_execution_opts() ) :: :temporal_sdk_workflow.execution() | :temporal_sdk_workflow.execution_data() | no_return()
@spec terminate_executor() :: :ok
@spec terminate_executor(reason :: term()) :: :ok
@spec workflow_info() :: :temporal_sdk_workflow.workflow_info() | no_return()
Temporal commands
@spec cancel_activity( activity_or_activity_data :: :temporal_sdk_workflow.activity() | :temporal_sdk_workflow.activity_data() ) :: :temporal_sdk_workflow.activity() | no_return()
@spec cancel_activity( activity_or_activity_data :: :temporal_sdk_workflow.activity() | :temporal_sdk_workflow.activity_data(), opts :: [ {:awaitable_event, :cmd | :cancel_request | :result | :schedule | :start | :close} | {:wait, boolean()} | :wait ] ) :: :temporal_sdk_workflow.activity() | :temporal_sdk_workflow.activity_data() | no_return()
@spec cancel_timer( timer_or_timer_data_or_timer_id :: :temporal_sdk_workflow.timer() | :temporal_sdk_workflow.timer_data() | :unicode.chardata() | atom() ) :: :temporal_sdk_workflow.timer() | no_return()
@spec cancel_timer( timer_or_timer_data_or_timer_id :: :temporal_sdk_workflow.timer() | :temporal_sdk_workflow.timer_data() | :unicode.chardata() | atom(), opts :: [ {:awaitable_event, :cmd | :cancel_request | :result | :schedule | :start | :close} | {:wait, boolean()} | :wait ] ) :: :temporal_sdk_workflow.timer() | :temporal_sdk_workflow.timer_data() | no_return()
@spec cancel_workflow_execution(details :: :temporal_sdk.term_to_payloads()) :: :temporal_sdk_workflow.cancel_workflow_execution()
@spec complete_workflow_execution(result :: :temporal_sdk.term_to_payloads()) :: :temporal_sdk_workflow.complete_workflow_execution()
@spec continue_as_new_workflow( task_queue :: :unicode.chardata(), workflow_type :: atom() | :unicode.chardata() ) :: :temporal_sdk_workflow.continue_as_new_workflow()
@spec continue_as_new_workflow( task_queue :: :unicode.chardata(), workflow_type :: atom() | :unicode.chardata(), opts :: :temporal_sdk_workflow.continue_as_new_workflow_opts() ) :: :temporal_sdk_workflow.continue_as_new_workflow()
@spec fail_workflow_execution( application_failure :: :temporal_sdk.application_failure() | :temporal_sdk.application_failure_as_list() ) :: :temporal_sdk_workflow.fail_workflow_execution()
@spec modify_workflow_properties( upserted_memo_fields :: :temporal_sdk.term_to_mapstring_payload() ) :: :temporal_sdk_workflow.workflow_properties() | no_return()
@spec modify_workflow_properties( upserted_memo_fields :: :temporal_sdk.term_to_mapstring_payload(), opts :: [{:awaitable_event, :cmd | :close} | {:wait, boolean()} | :wait] ) :: :temporal_sdk_workflow.workflow_properties() | :temporal_sdk_workflow.workflow_properties_data() | no_return()
@spec record_marker( marker_value_fun :: :temporal_sdk_workflow.record_marker_value_fun() ) :: :temporal_sdk_workflow.marker() | no_return()
@spec record_marker( marker_value_fun :: :temporal_sdk_workflow.record_marker_value_fun(), opts :: :temporal_sdk_workflow.record_marker_opts() ) :: :temporal_sdk_workflow.marker() | :temporal_sdk_workflow.marker_data() | no_return()
@spec start_activity( activity_type :: :unicode.chardata() | atom(), input :: :temporal_sdk.term_to_payloads() ) :: :temporal_sdk_workflow.activity() | no_return()
@spec start_activity( activity_type :: :unicode.chardata() | atom(), input :: :temporal_sdk.term_to_payloads(), opts :: :temporal_sdk_workflow.start_activity_opts() ) :: :temporal_sdk_workflow.activity() | :temporal_sdk_workflow.activity_data() | no_return()
@spec start_child_workflow( task_queue :: :unicode.chardata(), workflow_type :: atom() | :unicode.chardata() ) :: :temporal_sdk_workflow.child_workflow() | :temporal_sdk_workflow.child_workflow_data() | no_return()
@spec start_child_workflow( task_queue :: :unicode.chardata(), workflow_type :: atom() | :unicode.chardata(), opts :: :temporal_sdk_workflow.start_child_workflow_opts() ) :: :temporal_sdk_workflow.child_workflow() | :temporal_sdk_workflow.child_workflow_data() | no_return()
@spec start_nexus( endpoint :: atom() | :unicode.chardata(), service :: atom() | :unicode.chardata(), operation :: atom() | :unicode.chardata(), input :: :temporal_sdk.term_to_payload() ) :: :temporal_sdk_workflow.nexus()
@spec start_nexus( endpoint :: atom() | :unicode.chardata(), service :: atom() | :unicode.chardata(), operation :: atom() | :unicode.chardata(), input :: :temporal_sdk.term_to_payload(), opts :: :temporal_sdk_workflow.start_nexus_opts() ) :: :temporal_sdk_workflow.nexus()
@spec start_timer(start_to_fire_timeout :: :temporal_sdk.time()) :: :temporal_sdk_workflow.timer() | no_return()
@spec start_timer( start_to_fire_timeout :: :temporal_sdk.time(), opts :: :temporal_sdk_workflow.start_timer_opts() ) :: :temporal_sdk_workflow.timer() | :temporal_sdk_workflow.timer_data() | no_return()
Temporal external commands
@spec admit_signal( signal_or_signal_name :: :temporal_sdk_workflow.signal() | :unicode.chardata() ) :: :temporal_sdk_workflow.signal()
@spec admit_signal( signal_or_signal_name :: :temporal_sdk_workflow.signal() | :unicode.chardata(), opts :: :temporal_sdk_workflow.admit_signal_opts() ) :: :temporal_sdk_workflow.signal() | :temporal_sdk_workflow.signal_data()
@spec respond_query( query_or_query_type :: :temporal_sdk_workflow.query() | :unicode.chardata(), opts :: :temporal_sdk_workflow.respond_query_opts() ) :: :temporal_sdk_workflow.query() | :temporal_sdk_workflow.query_data()
Temporal marker commands
@spec record_app_env(par :: atom()) :: :temporal_sdk_workflow.marker() | no_return()
@spec record_app_env( par :: atom(), opts :: :temporal_sdk_workflow.record_marker_opts() ) :: :temporal_sdk_workflow.marker() | :temporal_sdk_workflow.marker_data() | no_return()
Retrieves the application configuration parameter via :application.get_env/1 and records its value
as a marker.
@spec record_os_env(var_name :: :os.env_var_name()) :: :temporal_sdk_workflow.marker() | no_return()
@spec record_os_env( var_name :: :os.env_var_name(), opts :: :temporal_sdk_workflow.record_marker_opts() ) :: :temporal_sdk_workflow.marker() | :temporal_sdk_workflow.marker_data() | no_return()
Retrieves the OS environment variable via :os.getenv/1 and records its value as a marker.
@spec record_rand_uniform() :: :temporal_sdk_workflow.marker() | no_return()
@spec record_rand_uniform( range_or_opts :: pos_integer() | :temporal_sdk_workflow.record_marker_opts() ) :: :temporal_sdk_workflow.marker() | :temporal_sdk_workflow.marker_data() | no_return()
@spec record_rand_uniform( range :: pos_integer(), opts :: :temporal_sdk_workflow.record_marker_opts() ) :: :temporal_sdk_workflow.marker() | :temporal_sdk_workflow.marker_data() | no_return()
@spec record_system_time() :: :temporal_sdk_workflow.marker() | no_return()
@spec record_system_time( unit_or_opts :: :erlang.time_unit() | :temporal_sdk_workflow.record_marker_opts() ) :: :temporal_sdk_workflow.marker() | :temporal_sdk_workflow.marker_data() | no_return()
@spec record_system_time( unit :: :erlang.time_unit(), opts :: :temporal_sdk_workflow.record_marker_opts() ) :: :temporal_sdk_workflow.marker() | :temporal_sdk_workflow.marker_data() | no_return()
@spec record_uuid4() :: :temporal_sdk_workflow.marker() | no_return()
@spec record_uuid4(opts :: :temporal_sdk_workflow.record_marker_opts()) :: :temporal_sdk_workflow.marker() | :temporal_sdk_workflow.marker_data() | no_return()