Please enable JavaScript to view this site.

Das Handbuch für den JobRouter Entwickler

Navigation: REST-API-Beispiele > Praxisbeispiele > Prozesse

Vorgang starten

Scroll Zurück Oben Weiter Mehr

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