View Source Runbox.Scenario.UserAction (runbox v13.0.3)
Toolbox for working with scenario user actions.
User action is action created by scenario via Runbox.Scenario.UIAction
and fired
by user (usually from UI). Scenario is usually also a receiver of fired action.
Assumed workflow is following:
Scenario creates list of actions (using
Runbox.Scenario.UIAction
) to be fired in the future and saves it somewhere (in incident asset for example).UI displays available actions.
User fires selected action from UI.
UI pushes the action to raw Kafka topic (defined in action) with extra data attached (usually some comment).
Normalizer pipeline receives the action and sends it to target scenario.
Summary
Functions
Unpacks action and makes it fired (prepared for sending to target topic).
Helper for UserAction forwarding to be used in normalizer.
Packs user action to JWT to be used (fired) later (from UI for example).
Parses string containing JSON to Runbox.Scenario.UserAction
.
Types
@type t() :: %Runbox.Scenario.UserAction{ data: any(), details: map(), type: String.t(), user: String.t() }
Fired user action.
When action is fired by the user, it should be pushed to raw topic
with current
timestamp to be correctly reordered by Normalizer
. Properties type
and details
should contain enough information for routing action to the target scenario. Property
user
is ID of user who fired the action, data
contains extra information attached
by environment where user fired the action (for example comment filled by the user on UI).
Functions
@spec fire(Joken.bearer_token(), String.t(), any()) :: {:ok, topic :: String.t(), String.t()} | {:error, Joken.error_reason()}
Unpacks action and makes it fired (prepared for sending to target topic).
Routing properties (type
, details
) are propagated from packed action, user
and data
properties are attached to fired action. Target topic
is also extracted from packed action.
Returns error if packed action (JWT) is not valid.
@spec normalizer_pipeline_step(Runbox.Message.t()) :: Runbox.Message.t()
Helper for UserAction forwarding to be used in normalizer.
If helper is used in normalizer pipeline configuration in config.ini
like
[pipelines.some_pipeline]
definition = Runbox.Scenario.UserAction.normalizer_pipeline_step
then Runbox.Message
body
will contain fired Runbox.Scenario.UserAction
.
@spec pack(String.t(), String.t(), map()) :: {:ok, Joken.bearer_token()} | {:error, Joken.error_reason()}
Packs user action to JWT to be used (fired) later (from UI for example).
Parameter details
must be a map encodable to JSON. Because details
can be (and it is!)
encoded/decoded to/from JSON during its life-cycle, atom property names of details
are
always converted to string property names in fired action's details
.
JWT is not used for security reasons - it is just good enough envelope protecting action against accidental corruption on its journey.
Parses string containing JSON to Runbox.Scenario.UserAction
.