IPluginWorkflowNode
Schnittstelle IPluginWorkflowNode
Diese Schnittstelle ermöglicht es, eine eigenen Node-Typ zum Workflow hinzuzufügen. Eine Node ist hierbei ein Knoten im Syntaxbaum einer Workflow-Verarbeitungskette. Der Wurzelknoten jedes solchen Syntaxbaums hat den Node-Typ "Sequenz". Ein Beispiel für solch einen Syntaxbaum ist etwa:
- Sequenz
- Aktion "E-Mail versenden"
- Bedingung
- Sequenz (If)
- Aktion "Textdatei erzeugen"
- Aktion "PDF befüllen"
- Sequenz (Else)
- Aktion "HTTP-Request"
- Aktion "Word befüllen"
- Sequenz (If)
- Aktion "Externe Resource herunterladen"
- Switch (Wert [%tf1%])
- Default-Case
- Sequenz
- Aktion "Textdatei erzeugen"
- Sequenz
- Switch-Case (wenn Wert gleich 1)
- Sequenz
- Aktion "Textdatei erzeugen"
- Sequenz
- Switch-Case (wenn Wert gleich 2)
- Sequenz
- Aktion "Textdatei erzeugen"
- Sequenz
- Default-Case
- Aktion "Abschlussseite"
- Experiment
- Sequenz
- Aktion "HTTP-Request ausführen"
- Sequenz
- Aktion "E-Mail an Administrator senden"
- Sequenz
Dabei ist
- die Sequenz ist ein Knoten, welche seine Kinderknoten der Reihe nach ausführt
- die Bedingung ein Knoten, welcher eine Bedingung überprüft und je nach Resultat einen der beiden Kinderknoten ausführt (If-Zweig und Else-Zweig)
- der Switch ein Knoten, welcher einen Wert gegen den Wert der Kinderknoten (Default-Case und Switch-Case) vergleicht und dann alle Kinderknoten ausführt, die einen passenden Wert haben
- das Experiment (Try-Catch) ein Knoten, welcher versucht, den ersten Kinderknoten (Try-Block) auszuführen. Schlägt dies mit einer unbehandelten Ausnahme fehl, wird der zweite Kinderknoten (Catch-Block) ausgeführt.
- die Aktion ein Knoten, der keine Kinderknoten hat und lediglich in Java definierte Logik ausführt
Mit diesem Interface können somit nicht nur Aktionen, sondern auch andere Knoten implementiert werden, die den Kontrollfluss beeinflussen.
Methodensignaturen
Die vollständige Dokumentation findet sich in der JavaDoc zu diesem Interface. Im Folgenden einige der wichtigsten Methoden:
public INodeHandler<?> getNodeHandler()
Schnittstelle IPluginActionNodeHandler / APluginActionNodeHandler
Dieses Schnittstelle enthält viele Default-Implementierungen für reine abarbeitende Aktionen, die den Kontrollfluss nicht beeinflussen und lediglich in Java implementierte Logik ausführen. Es ist damit einfach möglich, eigene Workflow-Aktionen in das bestehende System hinzuzufügen.
Wir empfehlen, die abstrakte Klasse APluginActionNodeHandler zu verwenden. Falls das Plugin eine andere Superklasse haben soll, kann stattdessen das Mixin-Interface IPluginActionNodeHandler genutzt werden.
Eine Implementierung einer Workflow-Aktion besteht dabei üblicherweise aus mehreren Komponenten:
- Implementierung einer Modelklasse zur Datenhaltung der Eigenschaften einer Workflow-Aktion (diese Klasse muss von BaseActionProps erben)
- eine Enum-Implementierung zur Definition möglicher Fehlercodes, welche durch die Workflow-Aktion zurück geliefert werden können.
- Implementierung der IPluginActionNodeHandler Schnittstelle unter Einbeziehung der definierten Modelklasse
- eine XHTML-Seite zur Konfiguration und Anzeige der Eigenschaften der Workflow-Aktion
- optional eine Managed-Bean-Implementierung (basierend auf der Schnittstelle INodePropertyPluginBean), um die XHTML-Seite (View) mit den Daten und der Geschäftslogik zu verknüpfen. Diese ist optional und nur erforderlich, wenn die XHTML-Seite spezielle Logik enthalten soll, wie etwa ein Button zum Prüfen Testen eines Webservices.
Methodensignaturen
Die vollständige Dokumentation findet sich in der JavaDoc zu diesem Interface. Im Folgenden einige der wichtigsten Methoden:
Erforderlich sind neben getName noch folgende zwei Methoden:
public INormalCompletionResult execute(INodeExecutionParams<TData> params) throws AbstractAbruptCompletionException
public String getPropertiesViewXhtmlName()
Wird das Mixin-Interface IPluginActionNodeHandler verwendet, muss noch getPluginInitializeData implementiert werden, welche nur den Wert zurückgibt, der in der initialize-Methode übergeben wurde.
Alle weiteren Methoden können optional bei Bedarf überschrieben werden. Auszugsweise hier einige Methoden:
public IElementCategory getMainCategory(IGetElementPrototypesParams params)
public IElementCategory getSubCategory(IGetElementPrototypesParams params)
public IValueDescriptor<?, ? extends IValueBuilder<?>> getSuccessValueDescriptor(IValueDescriptorFactory factory)
public IUnionValueDescriptor<String> getErrorValueDescriptor(IValueDescriptorFactory factory)
public Class<? extends Enum<?>> getErrorCodeClass()
public IFileValueDescriptor getFileValueDescriptor()
public Class<? extends INodePropertyPluginBean<TData>> getMainPluginBeanClass()
Schnittstelle IPluginConditionNodeHandler / APluginConditionNodeHandler
7.1.0+
Diese Schnittstelle enthält Default-Implementierung für reine If-Else-Bedingungen. Damit ist es einfacher möglich, eine If-Else-Bedingung zu implementieren, welche eine Bedingung prüft und je nach Resultat den If-Zweig oder den Else-Zweig ausführt.
Wir empfehlen, die abstrakte Klasse APluginConditionNodeHandler zu verwenden. Falls das Plugin eine andere Superklasse haben soll, kann stattdessen das Mixin-Interface IPluginConditionNodeHandler genutzt werden.
Methodensignaturen
Die vollständige Dokumentation findet sich in der JavaDoc zu diesem Interface. Im Folgenden einige der wichtigsten Methoden:
Erforderlich sind neben getName noch folgende zwei Methoden:
public boolean evaluateCondition(INodeExecutionParams<TData> params) throws AbstractAbruptCompletionException
public String getPropertiesViewXhtmlName()
Wird das Mixin-Interface IPluginConditionNodeHandler verwendet, muss noch getPluginInitializeData implementiert werden, welche nur den Wert zurückgibt, der in der initialize-Methode übergeben wurde.
Alle weiteren Methoden sind wie bei Aktion optional.