Skip to content
docsv0.1.0

StateMachineInterface

Reads states, transitions and gates for a domain from data-driven definitions ({@see \Milpa\Workflow\Entities\StateDefinition}, {@see \Milpa\Workflow\Entities\TransitionDefinition}, {@see \Milpa\Workflow\Entities\GateDefinition}) instead of a hardcoded transition graph.

StateMachineInterface::canTransition()

abstract public function canTransition(string $domain, string $fromState, string $toState, Milpa\Workflow\StateMachine\TransitionContext $context): Milpa\Workflow\StateMachine\GateResult

Checks whether a transition from `$fromState` to `$toState` is currently possible for `$domain`, evaluating every gate configured on the transition against `$context`.

Parameters

Parameters of canTransition()
NameTypeDescription
$domainstring
$fromStatestring
$toStatestring
$contextMilpa\Workflow\StateMachine\TransitionContext

StateMachineInterface::getAvailableTransitions()

abstract public function getAvailableTransitions(string $domain, string $currentState, Milpa\Workflow\StateMachine\TransitionContext $context): array

Returns every transition defined from `$currentState`, each paired with the {@see GateResult} of evaluating it against `$context`.

Parameters

Parameters of getAvailableTransitions()
NameTypeDescription
$domainstring
$currentStatestring
$contextMilpa\Workflow\StateMachine\TransitionContext

StateMachineInterface::transition()

abstract public function transition(string $domain, string $fromState, string $toState, Milpa\Workflow\StateMachine\TransitionContext $context): Milpa\Workflow\Entities\StateDefinition

Executes a transition from `$fromState` to `$toState`, throwing when it is not allowed.

Parameters

Parameters of transition()
NameTypeDescription
$domainstring
$fromStatestring
$toStatestring
$contextMilpa\Workflow\StateMachine\TransitionContext

Throws

\Milpa\Workflow\Exceptions\TransitionNotAllowedException when the transition is undefined, disabled, or blocked by a failed gate

StateMachineInterface::findState()

abstract public function findState(string $domain, string $stateCode): ?Milpa\Workflow\Entities\StateDefinition

Looks up a single state by domain and code.

Parameters

Parameters of findState()
NameTypeDescription
$domainstring
$stateCodestring

StateMachineInterface::getStates()

abstract public function getStates(string $domain): array

Returns every state defined for a domain, ordered for display.

Parameters

Parameters of getStates()
NameTypeDescription
$domainstring

StateMachineInterface::getInitialState()

abstract public function getInitialState(string $domain): ?Milpa\Workflow\Entities\StateDefinition

Returns the domain's initial state, or null if none is configured.

Parameters

Parameters of getInitialState()
NameTypeDescription
$domainstring