Parallel Process Starter
Dieser Adapter führt einen X4 -Prozess in einem beliebigen Benutzerordner in <X4>/X4DB
beliebig oft parallel aus und ermöglicht es, die Ergebnisse anschließend wieder zu synchronisieren. Der Adapter erwartet ein Input-XML-Dokument mit zu verarbeitenden Daten, jeweils abgelegt innerhalb von beliebig benannten Kindelementen unterhalb des Wurzel-Elements. Der Adapter gibt je nach Konfiguration ein XML-Dokument oder eine Base64-kodierte Zeichenkette aus.
Mit dem Parallel Process Starter können Sie über dynamische Parameter den Prozessnamen (und -pfad) zur Laufzeit setzen. Außerdem besitzt jeder über den Parallel Process Starter gestartete X4-Prozess eine eigene Prozessinstanz-ID, wird in einem separaten Thread ausgeführt und er kann daher nicht auf Variablen des aufrufenden Prozesses zugreifen.
Eigenschaften (Properties)
Operation | Bestimmt, welche Operation der Funktions-Adapter durchführt Mögliche Werte: |
Parameter
Adapter | Hauptklasse des Adapters (nicht verändern!) Mögliche Werte: de.softproject.integration.adapter.parallelprocessstarter.Adapter: Hauptklasse (Standard) |
X4ProcessURL | Pfad zum auszuführenden X4-Prozess Mögliche Werte: Beliebige gültige |
MaxThread | Anzahl der Threads, die genutzt werden sollen Mögliche Werte:
|
InputIsBase64 | Gibt das Datenformat für den Adapter-Input an Mögliche Werte:
|
expandOutput | Steuert das Ausgabeformat des Adapters Mögliche Werte:
|
Statuswerte
1 | Die Operation wurde erfolgreich ausgeführt. |
0 | Die Operation wurde erfolgreich ausgeführt, jedoch ohne Ergebnis. |
-1 | Die Operation ist aufgrund eines technischen Fehlers fehlgeschlagen. |
Input
Im Input-XML-Dokument kann ein beliebig benanntes Wurzel-Element beliebig viele Kind-Elemente enthalten. Für jedes Kind-Element wird ein X4-Prozess aufgerufen und der Elementknoten als Input übergeben.
Beispiel-Input
<SomeRootElement>
<SomeInputElement/>
<SomeInputElement>with some content</SomeInputElement>
<SomeInputElement someAttribute="someValue">more content</SomeInputElement>
</SomeRootElement>
Mit dem Parameter InputlsBase64:False
wird das oben genannte Beispiel wie folgt ausgeführt:
Prozessaufruf 1
<SomeInputElement/>
Prozessaufruf 2
<SomeInputElement>with some content</SomeInputElement>
Prozessaufruf 3
<SomeInputElement someAttribute="someValue">more content</SomeInputElement>
Output
Das Ergebnis der Prozess-Ausführung könnte im obigen Beispiel wie folgt aufgebaut sein:
Output
<Results>
<Result childProcessStatus="1" childProcessPid="4711" encoding="UTF-8" content-type="text/plain">...some base64 string...</Result>
<Result childProcessStatus="1" childProcessPid="4712" encoding="UTF-8" content-type="text/plain">...some base64 string...</Result>
<Result someAttribute="someValue" childProcessStatus="1" childProcessPid="4713" encoding="UTF-8" content-type="text/plain">...some base64 string...</Result>
</Results>
Im Falle eines Fehlers wird kein Result
-Element erzeugt, sondern z.B. folgendes Ergebnis ausgegeben:
Output im Fehlerfall
<Error attributesFromInput="">
<TopException class="java.lang.NullPointerException">exception message</TopException>
<CausedByException class="some.other.Exception">exception message</CausedByException>
</Error>