Sie können über die POST-Route /application/incidents/:processName Prozessvorgänge starten. Dabei wird der Prozessname als Parameter processName angegeben. Ein weiterer Pflichtparameter ist die Nummer des gewünschten Startschrittes (step). Diese wird im HTTP-Request-Body übertragen. Zusätzlich können Sie eine Bearbeitungsfrist für den Schritt und für den Vorgang definieren, den Initiator angeben, den Schritt direkt einem bestimmten Benutzer zuweisen sowie Daten für Prozess- und Untertabellenfelder übergeben. Weitere Parameter können Sie der REST-API-Referenz entnehmen.
Hinweis: Möchten Sie nach dem Starten des Vorgangs diesen auch gleich senden, müssen beim Senden die Pflichtfelder und aktivierten Checkboxen mitgegeben werden. Alternativ nutzen Sie die POST-Route /application/steps, um eine Workflow-ID zu erhalten. Geben Sie anschließend beim Senden alle Dialogfelder mit.
Übergabe der Daten für die Prozesstabelle
Die Prozesstabellendaten werden in einem processtable-Array übergeben. Zu einem Feld geben Sie den Namen und den Wert folgendermaßen an:
•Der Feldname wird mit dem Schlüssel name definiert: processtable[fields][0][name]
•Der Wert wird mit dem Schlüssel value definiert: processtable[fields][0][value]
Die Nummerierung gibt die einzelnen Name-/Wert-Paare an. Weitere Tabellenfelder werden dann unter processtable[fields][1]..., processtable[fields][2]... usw. jeweils mit Name und Wert definiert.
Übergabe der Daten für Untertabellen
Bei Untertabellen ist die Struktur etwas komplexer. Zuerst müssen die zu füllenden Untertabellen in dem subtables-Array aufgezählt werden:
subtables[0][name] = 'ERSTE_TABELLE', subtables[1][name] = 'ZWEITE_TABELLE' usw.
Die Daten folgen dem Muster der Prozesstabellendaten, allerdings wird hier zusätzlich eine Zeilennummer mit angegeben, damit die Daten der gleichen Zeile identifiziert werden können:
•Feldname: subtables[0][rows][0][fields][0][name]
•Wert: subtables[0][rows][0][fields][0][value]
Weitere Zeilen folgen mit subtables[0][rows][1]..., subtables[0][rows][2]... usw. Die Daten der weiteren Untertabellen werden mit subtables[1]..., subtables[2]... usw. angegeben. Dabei muss immer der gleiche Index wie bei den Untertabellennamen verwendet werden.
Antwort
Die Antwort ist im JSON-Format und beinhaltet u. a. die Workflow-ID und die Vorgangsnummer:
{
"incidents": [
{
"workflowId": "efb6df7ad40f6dbcbbd54c75881a58530000001475",
"stepId": "efb6df7ad40f6dbcbbd54c75881a58530000001771",
"processId": "efb6df7ad40f6dbcbbd54c75881a58530000001384",
"incidentnumber": 1100,
"jobfunction": "approver",
"username": "jdoe"
}
]
}
Beispiel: Vorgang mit Übergabe von Prozess- und Untertabellendaten starten
guzzlehttp
// Benutzer wurde bereits authentifiziert
// Vorgangsdaten definieren
$input = [
[
'name' => 'step',
'contents' => '1',
],
[
'name' => 'summary', // Prozessbetreff
'contents' => 'Vorgang gestartet über REST API',
],
[
'name' => 'step_escalation_date', // Schritteskalation
'contents' => '2017-10-12T11:00:00+01:00',
],
[ // Prozesstabellenfelder
'name' => 'processtable[fields][0][name]',
'contents' => 'INVOICENR',
],
[
'name' => 'processtable[fields][0][value]',
'contents' => 'IN02984',
],
[
'name' => 'processtable[fields][1][name]',
'contents' => 'INVOICE_DATE',
],
[
'name' => 'processtable[fields][1][value]',
'contents' => '2017-08-29T00:00:00+01:00',
],
[
'name' => 'processtable[fields][2][name]',
'contents' => 'AMOUNT',
],
[
'name' => 'processtable[fields][2][value]',
'contents' => '12000.78',
],
[
'name' => 'processtable[fields][3][name]',
'contents' => 'INVOICE_FILE',
],
[
'name' => 'processtable[fields][3][value]',
'contents' => fopen('/path/to/invoice/file.pdf', 'r'),
],
[
'name' => 'subtables[0][name]',
'contents' => 'SINVOICE_ATTACHMENTS' // Name einer Untertabelle
],
[ // hier beginnt die erste Zeile der Untertabelle
'name' => 'subtables[0][rows][0][fields][0][name]',
'contents' => 'ATT_IN_DATE',
],
[
'name' => 'subtables[0][rows][0][fields][0][value]',
'contents' => '2017-09-02T14:30:00+01:00',
],
[
'name' => 'subtables[0][rows][0][fields][1][name]',
'contents' => 'ATT_FILE',
],
[
'name' => 'subtables[0][rows][0][fields][1][value]',
'contents' => fopen('/path/to/attachment/note.txt', 'r'),
],
[ // hier beginnt die zweite Zeile
'name' => 'subtables[0][rows][1][fields][0][name]',
'contents' => 'ATT_IN_DATE',
],
[
'name' => 'subtables[0][rows][1][fields][0][value]',
'contents' => '2017-09-06T11:28:43+01:00',
],
[
'name' => 'subtables[0][rows][1][fields][1][name]',
'contents' => 'ATT_FILE',
],
[
'name' => 'subtables[0][rows][1][fields][1][value]',
'contents' => fopen(
'/path/to/another/attachment/confirmation.pdf', 'r'
),
],
];
try {
// Vorgang mit den oben definierten Daten starten
// (als multipart/form-data)
$response = $client->request('POST', 'application/incidents/invoice',
[
'multipart' => $input,
]
);
// Antwort bearbeiten
echo "Status code: " . $response->getStatusCode() . "\n";
$body = $response->getBody();
$decodedBody = json_decode($body->getContents(), true);
$incidentData = $decodedBody['incidents'][0];
echo "Workflow-ID: " . $incidentData['workflowId'] . "\n";
echo "Schrittnummer: " . $incidentData['stepId'] . "\n";
echo "Prozess-ID: " . $incidentData['processId'] . "\n";
echo "Vorgangsnummer: " . $incidentData['incidentnumber'] . "\n";
echo "Rolle: " . $incidentData['jobfunction'] . "\n";
echo "Benutzer: " . $incidentData['username'] . "\n";
} catch (Exception $e) {
echo "Fehler beim Ausführen: " . $e->getMessage() . "\n";
}
// Benutzer-Session beenden
cURL
// Benutzer wurde bereits authentifiziert
// Vorgangsdaten definieren
$mainFile = new CURLFile('/path/to/invoice/file.pdf');
$fileForFirstRow = new CURLFile('/path/to/invoice/myTest1.txt');
$fileForSecondRow = new CURLFile('/path/to/invoice/myTest2.txt');
$inputData = [
'step' => '1',
'initiator' => 'REST',
'summary' => 'Vorgang gestartet über REST API', // Prozessbetreff
'step_escalation_date' => '2017-10-12T11:00:00+01:00', // Schritteskalation
'processtable[fields][0][name]' => 'INVOICENR',
'processtable[fields][0][value]' => 'IN02984',
'processtable[fields][1][name]' => 'INVOICE_DATE',
'processtable[fields][1][value]' => '2017-08-29T00:00:00+01:00',
'processtable[fields][2][name]' => 'AMOUNT',
'processtable[fields][2][value]' => '12000.78',
'processtable[fields][3][name]' => 'INVOICE_FILE',
'processtable[fields][3][value]' => $mainFile,
'subtables[0][name]' => 'SINVOICE_ATTACHMENTS', // Name der Untertabelle
// hier beginnt die erste Zeile der Untertabelle
'subtables[0][rows][0][fields][0][name]' => 'ATT_IN_DATE',
'subtables[0][rows][0][fields][0][value]' => '2017-09-02T14:30:00+01:00',
'subtables[0][rows][0][fields][1][name]' => 'ATT_FILE',
'subtables[0][rows][0][fields][1][value]' => $fileForFirstRow,
// hier beginnt die zweite Zeile
'subtables[0][rows][1][fields][0][name]' => 'ATT_IN_DATE',
'subtables[0][rows][1][fields][0][value]' => '2017-09-06T11:28:43+01:00',
'subtables[0][rows][1][fields][1][name]' => 'ATT_FILE',
'subtables[0][rows][1][fields][1][value]' => $fileForSecondRow,
];
curl_setopt($curlHandle, CURLOPT_URL,
'http://example.org/jobrouter/api/rest/v2/application/incidents/invoice');
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_POST, 1);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $inputData);
curl_setopt($curlHandle, CURLOPT_COOKIEFILE, 'path/to/cookie/file.cookie');
$response = curl_exec($curlHandle);
$statusCode = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
curl_close();
if ($statusCode == 200) {
$incidentData = json_decode($response, true);
echo "Incident: " . $incidentData['incidents'][0]['incidentnumber'] . "\n";
echo "Workflow-ID: " . $incidentData['incidents'][0]['workflowId'] . "\n";
} else {
echo "Fehler beim Ausführen: Code - " . $statusCode . ", ";
echo "Response: " . var_export($response, true);
}
// Benutzer-Session beenden