==== Sinn und Zweck des Bausteins ====
Der Hauptprozess soll aus dem Subprozess beendet werden können. Hierfür wird im Subprozess entschieden (mittels XOR-Gateway), ob der Hauptprozess nach Beenden des Subprozesses, beendet wird oder weitergeführt werden soll (wiederum mittels XOR-Gateway).
==== Was benötige ich an Actionhandlern? ====
**Im Subprozess**
werden am Entscheidungspunkt zwei Handler benötigt:
1. Auf Node-Enter wird mit dem [[software:tim:actionhandler:processvariablesetter|ProcessVariableSetter]] eine Prozessvariable gesetzt. Dies ist für beide Entscheidungen notwendig.
**Handlerklasse:**
com.dooris.bpm.actionhandler.ProcessVariableSetter
**Parameter zum Fortführen des Prozesses:**
name=prozessBeenden;value=Ja;
**Parameter zum Beenden des Prozesses:**
name=prozessBeenden;value=Nein;
2. Auf Node-Leave wird die gesetzte Variable mit dem [[software:tim:actionhandler:writebackprocessvariablehandler|WriteBackProcessVariableHandler]] an den Hauptprozess übergeben. Auf der direkt darauffolgenden XOR-Entscheidung im Hauptprozess wird die übergebene Prozessvariable überprüft und entschieden, ob der Prozess beendet oder weitergeführt wird.
**Handlerklasse:**
com.dooris.bpm.actionhandler.WriteBackProcessVariableHandler
**Parameter:**
includedVariables=prozessBeenden;
{{ :software:tim:bausteine:sp_ends_hp_sig_2.png?300|}}
{{ :software:tim:bausteine:sp_ends_hp_sig_1.png?300|}}
------
{{ :software:tim:bausteine:hp_sfdhandler.png?300|}}
**Im Hauptprozess** wird, unmittelbar auf den Subprozess folgend, eine XOR-Entscheidung benötigt, um die vom Subprozess übergebene Variable zu übernehmen. Abhängig vom Wert der Variable wird hier nun entschieden ob der Prozess beendet oder weitergeführt wird.
3. Um die im Subprozess gesetzte Prozessvariable zu überprüfen, wird der [[software:tim:actionhandler:VariableDecisionHandler]] mit folgenden Attributen im XOR verwendet:
**Handlerklasse:**
com.dooris.bpm.actionhandler.VariableDecisionHandler
{{ :software:tim:bausteine:hp_xor_1.png?300|}}
^Variablenname^Variablenwert^
|processVariable|prozessBeenden|
|defaultTransition|Nein|
Die Funktion der "defaultTransition" ist optional. Damit wird die Richtung des weiteren Prozessverlaufs bestimmt, falls keine manuelle Entscheidung getroffen wurde.
\\
{{ :software:tim:bausteine:sp_trans_ja.png?300|}}
4. Der technisch eindeutige Name der Transitions muss den Wert zugewiesen bekommen, welcher im Subprozess auf der entsprechenden Node per ProcessVariableSetter der Variable "prozessBeenden" zugewiesen wurde. Bei der Transition, die den Hauptprozess beendet, wird der technisch eindeutige Name auf "Ja" gesetzt. \\ \\ \\ \\
{{ :software:tim:bausteine:sp_trans_nein.png?300|}}
Bei der Transition, die den Hauptprozess beendet, wird der technisch eindeutige Name auf "Nein" gesetzt. \\
Prozessdownload Signavio: \\
**Hauptprozess:** {{:software:tim:bausteine:hp_wiki_43_sig.zip|}} \\
**Subprozess:** {{:software:tim:bausteine:sp_wiki_43_sig.zip|}}