Vorherigen Schritt prüfen¶
Es soll ein Übergang von a
nach b
gemacht werden. Dabei wird die Action doSomething
aufgerufen.
Ein guter Weg ist in doSomething
keine Exception zu werfen.
Besser es wird in einem weiteren Übergang geprüft, ob doSomething
das gemacht hat was es soll.
<transition name="to-b" from="a" to="b" with="doSomething">
<exceptions>
<exception match="\Alvine\Core\FrameworkException">
<handler class="\Alvine\Application\Workflow\Transition\Exception\Handler\ThrowAway" />
</exception>
</exceptions>
</transition>
Der Status b
wird somit fehlerfrei erreicht. Eine Automation leitet den Container an den Übergang to-b-validated
.
<rule on="\Alvine\Application\Workflow\Event\EndTransition">
<conditions>
<condition class="\Alvine\Application\Workflow\Automation\Condition\IsState">
<parameters>
<parameter name="state">b</parameter>
</parameters>
</condition>
</conditions>
<actions>
<action class="\Alvine\Application\Workflow\Automation\Action\DoTransition">
<parameters>
<parameter name="transition">to-b-validated</parameter>
</parameters>
</action>
</actions>
</rule>
In diesem Übergang wird keine Aktion ausgeführt , es wird nur validiert. In der Validierungsklasse wird die Arbeit von doSomething
bewertet.
Diese liefert nur true
oder false
<transition name="to-b-validated" from="b" to="b-validated" >
<validations>
<validation class="\Customisation\Logic\Workflow\Transition\Validation\DoSomething"></validation>
</validations>
</transition>
Wenn die Validierung false
zurück liefert , kann das über das InvalidTransitionValidation
Event sicher verarbeitet werden,
da der Status b
dann eindeutig ist.
Der neue Status b-error
kann dann weiter verarbeitet werden.
<rule on="\Alvine\Application\Workflow\Event\InvalidTransitionValidation">
<conditions>
<condition class="\Alvine\Application\Workflow\Automation\Condition\IsState">
<parameters>
<parameter name="state">b</parameter>
</parameters>
</condition>
</conditions>
<actions>
<action class="\Alvine\Application\Workflow\Automation\Action\DoTransition">
<parameters>
<parameter name="transition">to-b-error</parameter>
</parameters>
</action>
</actions>
</rule>
<transition name="to-b-error" from="b" to="b-error" ></transition>