Ergebnisalgorithmen sind eine Zusatzeinrichtung des Stapelprogrammiermodells.
Ein Ergebnisalgorithmus lässt zwei Aktionen am Ende eines Stapelabschnitts zu:
Ergebnisalgorithmen werden über XML Job Control Language (xJCL) auf einen Stapeljob angewendet. Diese Algorithmen werden in xJCL deklariert und anschließend auf Stapelabschnitte angewendet.
Am Ende eines Stapelabschnitts prüfen die Compute-Grid-Endpunkte die xJCL des Stapeljobs, um zu bestimmen, welche Ergebnisalgorithmen aufgerufen werden sollen. Für jeden angegebenen Ergebnisalgorithmus übergeben die Compute-Grid-Endpunkte den Rückkehrcode des Stapelabschnitts an den Algorithmus: den ganzzahligen Wert, den die Methode "destroyJobStep" des Abschnitts zurückgegeben hat, und den aktuellen Rückkehrcode des Stapeljobs in der Datenbank der Compute-Grid-Endpunkte. Der Ergebnisalgorithmus kann dann jede Aktion, basierend auf den übergebenen Rückkehrcodes, ausführen. Der Algorithmus übergibt dann einen Rückkehrcode für den Stapeljob, der in der Datenbank der Compute-Grid-Endpunkte als aktueller Rückkehrcode des Stapeljobs persistent gespeichert wird, zurück an die Compute-Grid-Endpunkte. Dieser Rückkehrcode kann mit dem Rückkehrcode, den die Compute-Grid-Endpunkte zuerst an den Ergebnisalgorithmus zurückgegeben haben, identisch sein. Er kann aber auch anders beschaffen sein, je nach der im Ergebnisalgorithmus codierten Logik. Wenn ein Ergebnisalgorithmus nicht im Abschnitt eines Stapeljobs angegeben ist, wird der Rückkehrcode des Ergebnisalgorithmus des vorherigen Jobs als Jobrückkehrcode verwendet. Wenn keine Ergebnisalgorithmen angegeben sind, ist der Jobrückkehrcode null (0).
Außerdem wird eine Ergebnisalgorithmus-SPI (System Programming Interface) bereitgestellt, die Ihnen erlaubt, Ihre eigenen Algorithmen zu schreiben und auf Stapeljobs anzuwenden.
Beispiel für die Anwendung eines jobsum- und eines angepassten Ergebnisalgorithmus auf die Abschnitte eines Jobs:
<job name="PostingSampleEar"> <results-algorithms> <results-algorithm name="jobsum"> <classname>com.ibm.wsspi.resultsalgorithms.jobsum</classname> </results-algorithm> <results-algorithm name="custom_algorithm"> <classname>my_custom_algorithm</classname> </results-algorithm> </results-algorithms> <job-step name="Step1"> <results-ref name="jobsum"> </job-step> <job-step name="Step2"> <results-ref name="custom_algorithm"> </job-step> </job>