View Source WorkflowMetal.Storage.Adapter behaviour (workflow_metal v0.2.1)
Defines the behaviour to be implemented by a storage adapter to be used by WorkflowMetal.
Link to this section Summary
Callbacks
Return a child spec for the storage
Consume tokens that locked by the task.
Delete a specified workflow.
Retrieve arcs of a workflow.
Retrieve a case.
Retrieve start and end of a workflow.
Retrieve in/out places of a transition.
Retrieve a task.
Retrieve tasks of a case.
Retrieve tokens of the task.
Retrieve a transition of the workflow.
Retrieve in/out transitions of a place.
Retrieve tokens of the task.
Retrieve a workflow.
Fetch a workitem of a task.
Retrieve workitems generated by the task.
Insert a case.
Create a task.
Insert a workflow.
Insert a workitem of a task.
Issue a token.
Lock tokens atomically.
Unlock tokens that locked by the task.
Update the case.
Update the task.
Update the workitem.
Link to this section Types
Specs
adapter_meta() :: map()
Specs
application() :: WorkflowMetal.Application.t()
Specs
arc_beginning() :: {:transition, transition_id()} | {:place, place_id()}
Specs
arc_direction() :: WorkflowMetal.Storage.Schema.Arc.direction()
Specs
arc_schema() :: WorkflowMetal.Storage.Schema.Arc.t()
Specs
case_id() :: WorkflowMetal.Storage.Schema.Case.id()
Specs
case_schema() :: WorkflowMetal.Storage.Schema.Case.t()
Specs
case_state() :: WorkflowMetal.Storage.Schema.Case.state()
Specs
config() :: keyword()
Specs
error() :: term()
Specs
fetch_tasks_options() :: [state: [task_state(), ...], transition_id: transition_id()] | [{:transition_id, transition_id()}]
Specs
on_consume_tokens() :: {:ok, [token_schema()]}
Specs
on_delete_workflow() :: :ok
Specs
on_fetch_arcs() :: {:ok, [arc_schema()]}
Specs
on_fetch_case() :: {:ok, case_schema()} | {:error, :case_not_found}
Specs
on_fetch_edge_places() :: {:ok, {place_schema(), place_schema()}}
Specs
on_fetch_places() :: {:ok, [place_schema()]}
Specs
on_fetch_task() :: {:ok, task_schema()} | {:error, :task_not_found}
Specs
on_fetch_tasks() :: {:ok, [task_schema()]}
Specs
on_fetch_tokens() :: {:ok, [token_schema()]}
Specs
on_fetch_transition() :: {:ok, transition_schema()} | {:error, :transition_not_found}
Specs
on_fetch_transitions() :: {:ok, [transition_schema()]}
Specs
on_fetch_unconsumed_tokens() :: {:ok, [token_schema()]}
Specs
on_fetch_workflow() :: {:ok, workflow_schema()}
Specs
on_fetch_workitem() :: {:ok, workitem_schema()} | {:error, :workitem_not_found}
Specs
on_fetch_workitems() :: {:ok, [workitem_schema()]} | {:error, :task_not_found}
Specs
on_insert_case() :: {:ok, case_schema()} | {:error, error()}
Specs
on_insert_task() :: {:ok, task_schema()} | {:error, :workflow_not_found} | {:error, :transition_not_found} | {:error, :case_not_found}
Specs
on_insert_workflow() :: {:ok, workflow_schema()} | {:error, error()}
Specs
on_insert_workitem() :: {:ok, workitem_schema()} | {:error, :workflow_not_found} | {:error, :case_not_found} | {:error, :task_not_found}
Specs
on_issue_token() :: {:ok, token_schema()}
Specs
on_lock_tokens() :: {:ok, token_schema()}
Specs
on_unlock_tokens() :: {:ok, [token_schema()]}
Specs
on_update_case() :: {:ok, case_schema()} | {:error, error()}
Specs
on_update_task() :: {:ok, task_schema()} | {:error, :task_not_found} | {:error, :task_not_available}
Specs
on_update_workitem() :: {:ok, workitem_schema()} | {:error, :workitem_not_found} | {:error, :workitem_not_available}
Specs
place_id() :: WorkflowMetal.Storage.Schema.Place.id()
Specs
place_schema() :: WorkflowMetal.Storage.Schema.Place.t()
Specs
task_id() :: WorkflowMetal.Storage.Schema.Task.id()
Specs
task_schema() :: WorkflowMetal.Storage.Schema.Task.t()
Specs
task_state() :: WorkflowMetal.Storage.Schema.Task.state()
Specs
token_id() :: WorkflowMetal.Storage.Schema.Token.id()
Specs
token_payload() :: WorkflowMetal.Storage.Schema.Token.payload()
Specs
token_schema() :: WorkflowMetal.Storage.Schema.Token.t()
Specs
token_state() :: WorkflowMetal.Storage.Schema.Token.state()
Specs
transition_id() :: WorkflowMetal.Storage.Schema.Transition.id()
Specs
transition_schema() :: WorkflowMetal.Storage.Schema.Transition.t()
Specs
update_case_params() :: %{optional(:state) => case_state()}
Specs
update_task_params() :: %{ optional(:state) => task_state(), optional(:token_payload) => token_payload() }
Specs
update_workitem_params() :: %{ optional(:state) => workitem_state(), optional(:output) => workitem_output() }
Specs
workflow_associations_params() :: %{ places: [place_schema()], transitions: [transition_schema()], arcs: [arc_schema()] }
Specs
workflow_id() :: WorkflowMetal.Storage.Schema.Workflow.id()
Specs
workflow_schema() :: WorkflowMetal.Storage.Schema.Workflow.t()
Specs
workitem_id() :: WorkflowMetal.Storage.Schema.Workitem.id()
Specs
workitem_output() :: WorkflowMetal.Storage.Schema.Workitem.output()
Specs
workitem_schema() :: WorkflowMetal.Storage.Schema.Workitem.t()
Specs
workitem_state() :: WorkflowMetal.Storage.Schema.Workitem.state()
Link to this section Callbacks
Specs
child_spec(application(), config()) :: {:ok, :supervisor.child_spec() | {module(), term()} | module(), adapter_meta()}
Return a child spec for the storage
Specs
consume_tokens(adapter_meta(), [token_id()], task_id() | :termination) :: on_consume_tokens()
Consume tokens that locked by the task.
Specs
delete_workflow(adapter_meta(), workflow_id()) :: on_delete_workflow()
Delete a specified workflow.
Specs
fetch_arcs(adapter_meta(), arc_beginning(), arc_direction()) :: on_fetch_arcs()
Retrieve arcs of a workflow.
Specs
fetch_case(adapter_meta(), case_id()) :: on_fetch_case()
Retrieve a case.
Specs
fetch_edge_places(adapter_meta(), workflow_id()) :: on_fetch_edge_places()
Retrieve start and end of a workflow.
Specs
fetch_places(adapter_meta(), transition_id(), arc_direction()) :: on_fetch_places()
Retrieve in/out places of a transition.
Specs
fetch_task(adapter_meta(), task_id()) :: on_fetch_task()
Retrieve a task.
Specs
fetch_tasks(adapter_meta(), case_id(), fetch_tasks_options()) :: on_fetch_tasks()
Retrieve tasks of a case.
Specs
fetch_tokens(adapter_meta(), [token_id()]) :: on_fetch_tokens()
Retrieve tokens of the task.
Specs
fetch_transition(adapter_meta(), transition_id()) :: on_fetch_transition()
Retrieve a transition of the workflow.
Specs
fetch_transitions(adapter_meta(), place_id(), arc_direction()) :: on_fetch_transitions()
Retrieve in/out transitions of a place.
Specs
fetch_unconsumed_tokens(adapter_meta(), case_id()) :: on_fetch_unconsumed_tokens()
Retrieve tokens of the task.
Specs
fetch_workflow(adapter_meta(), workflow_id()) :: on_fetch_workflow()
Retrieve a workflow.
Specs
fetch_workitem(adapter_meta(), workitem_id()) :: on_fetch_workitem()
Fetch a workitem of a task.
Specs
fetch_workitems(adapter_meta(), task_id()) :: on_fetch_workitems()
Retrieve workitems generated by the task.
Specs
insert_case(adapter_meta(), case_schema()) :: on_insert_case()
Insert a case.
Specs
insert_task(adapter_meta(), task_schema()) :: on_insert_task()
Create a task.
insert_workflow(adapter_meta, workflow_schema, workflow_associations_params)
View SourceSpecs
insert_workflow( adapter_meta(), workflow_schema(), workflow_associations_params() ) :: on_insert_workflow()
Insert a workflow.
Specs
insert_workitem(adapter_meta(), workitem_schema()) :: on_insert_workitem()
Insert a workitem of a task.
Specs
issue_token(adapter_meta(), token_schema()) :: on_issue_token()
Issue a token.
If produced_by_task_id is :genesis
, the token is a genesis token.
Specs
lock_tokens( adapter_meta(), token_ids :: [token_id(), ...], locked_by_task_id :: task_id() ) :: on_lock_tokens()
Lock tokens atomically.
Specs
unlock_tokens(adapter_meta(), [token_id()]) :: on_unlock_tokens()
Unlock tokens that locked by the task.
Specs
update_case(adapter_meta(), case_id(), update_case_params()) :: on_update_case()
Update the case.
update_case_params
update_case_params:
State
:active
:terminated
:finished
Specs
update_task(adapter_meta(), task_id(), update_task_params()) :: on_update_task()
Update the task.
update_task_params: State
and TokenPayload
update_workitem(adapter_meta, workitem_id, update_workitem_params)
View SourceSpecs
update_workitem(adapter_meta(), workitem_id(), update_workitem_params()) :: on_update_workitem()
Update the workitem.
update_workitem_params: State
and Output
.