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
|
|
Die Operation wurde erfolgreich ausgeführt. |
|
|
Die Operation wurde erfolgreich ausgeführt, jedoch ohne Ergebnis. |
|
|
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.
<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:
<SomeInputElement/>
<SomeInputElement>with some content</SomeInputElement>
<SomeInputElement someAttribute="someValue">more content</SomeInputElement>
Output
Das Ergebnis der Prozess-Ausführung könnte im obigen Beispiel wie folgt aufgebaut sein:
<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:
<Error attributesFromInput="">
<TopException class="java.lang.NullPointerException">exception message</TopException>
<CausedByException class="some.other.Exception">exception message</CausedByException>
</Error>