View Source Runbox.Scenario.UserAction (runbox v14.1.0)
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_stepthen 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.