Operator STOP PROCESS pozwala na natychmiastowe zatrzymanie całego procesu przetwarzania danych w miejscu, w którym operator jest umieszczony. Umożliwia to kontrolowane przerwanie dalszego przetwarzania bez konieczności przechodzenia przez pozostałe operatory i ścieżki definiowane w projekcie.
Przy zatrzymaniu możesz wybrać, czy proces zakończy się błędem, czy poprawnym wynikiem. Operator daje także możliwość zarządzania transakcjami bazodanowymi otwartymi w trakcie działania procesu — można zdecydować, czy mają zostać zatwierdzone (commit), czy wycofane (rollback).
Dzięki temu operator STOP jest przydatny w sytuacjach, gdy dalsze przetwarzanie nie ma sensu (np. wykrycie błędu lub spełnienie warunku zakończenia) i pozwala efektywnie zakończyć proces bez niepotrzebnego wykonywania kolejnych kroków.
Przykład projektu GRAVITY z użyciem operatora STOP:
KONFIGURACJA OPERATORA
W polu Action należy określić, czy przerwanie projektu powinno powodować błąd wykonania procesu oraz w jaki sposób system ma postąpić z ewentualnymi transakcjami bazodanowymi utworzonymi w projekcie.
Masz do wyboru cztery opcje:
- Stop processing with error and rollback → Zatrzymanie procesu z błędem oraz wycofanie wszystkich transakcji.
- Stop processing with success and commit → Zatrzymanie procesu z sukcesem oraz zatwierdzenie wszystkich transakcji.
- Stop processing with error and commit → Zatrzymanie procesu z błędem oraz zatwierdzenie wszystkich transakcji.
- Stop processing with success and rollback→ Zatrzymanie procesu z sukcesem oraz zatwierdzenie wszystkich transakcji.
W polu Message możesz podać komunikat, który zostanie przekazany do metody wywołującej projekt.
Może on zostać sparametryzowany bitami magistrali lub parametrami projektu.
Komunikat jest zawsze zwracany, jednak jego użycie ma największy sens w sytuacji, gdy odpowiedź jest dalej przetwarzana przez mechanizm wywołujący. Z tego względu w wywołaniach realizowanych przez REST API zwrot wiadomości ma kluczowe znaczenie.
Jeśli w polu Action zostanie wybrana opcja Stop with error…, serwer GRAVITY obsługujący zapytania REST API zwróci odpowiedź ze StatusCode = 500 oraz następujące body:
{
"process_id": 33294,
"state": "Fault",
"error": "Value of message field \r\n"
}Jeśli zostanie wybrana opcja Stop with success…, serwer GRAVITY zwróci odpowiedź ze StatusCode = 200 oraz następujące body:
{
"process_id": 33292,
"state": "Success",
"message": "Value of message field \r\n"
}gdzie pole error oraz message pochodzą z definicji pola Message w operatorze STOP.