Obsługa błędów w procesach

Podczas modelowania obsługi błędów w ramach procesu istnieje możliwość wychwytywania błędów przy użyciu pośrednich zdarzeń błędu lub podprocesów zdarzeń. Można również zgłaszać błędy przy użyciu końcowych zdarzeń błędu.

Tabela 1. Korzystanie ze zdarzeń błędu w procesach
Zdarzenie Opis
Pośrednie zdarzenie błędu ikona na granicy działania (graniczne zdarzenie błędu)
  • Wychwytuje konkretne błędy lub wszystkie błędy.
  • Udostępnia logikę obsługi błędów zgłaszanych przez działanie, do którego jest przyłączone.
Podproces zdarzenia błędu rozpoczynający się od początkowego zdarzenia błędu ikona
  • Wychwytuje konkretne błędy lub wszystkie błędy.
  • Udostępnia logikę obsługi błędów zgłaszanych przez działania w procesie, podprocesie lub podprocesie zdarzenia bezpośrednio zawierającym podproces zdarzenia błędu.
Końcowe zdarzenie błędu ikona Zgłasza błąd

Wychwytywanie błędów przy użyciu zdarzeń pośrednich błędu

W przypadku procesów istnieje możliwość przyłączenia pośredniego zdarzenia błędu do działania i połączenia tego zdarzenia z przepływem lub działaniem obsługi błędów. Przyłączone zdarzenie błędu jest znane jako graniczne zdarzenie błędu.

Przed podjęciem decyzji, czy mają być używane zdarzenia pośrednie błędu, należy uwzględnić następujące kwestie:

  • Jeśli błąd występuje podczas wykonywania działania w procesie, do którego granicy jest przyłączone zdarzenie błędu, proces podąża ścieżką wzdłuż linii sekwencji przyłączonej do zdarzenia błędu. Błędy są obsługiwane w przepływie, a następnie kontynuowane jest normalne przetwarzanie.
  • Zdarzenia pośrednie błędu muszą być przyłączone do działania.
  • Może istnieć wiele zdarzeń błędu dla działania, ale tylko jedno z nich wychwytuje błąd.
  • Warto rozważyć określenie danych błędu w celu wychwycenia konkretnych błędów, filtrowanie na podstawie kodu błędu dla wychwyconych typów błędów oraz odwzorowanie na zmienną po wychwyceniu błędów. Po wychwyceniu wszystkich błędów lub w przypadku, kiedy podany jest tylko kod błędu, dane błędów są przechwytywane do elementu XMLElement w zmiennej tw.system.step.error.
  • W celu obsługi błędów sprawdzania poprawności w usłudze zapisywania współużytkowanych obiektów biznesowych należy wychwycić błąd BPMBOSaveFailedError, który jest dostępny na liście konkretnych błędów. Ten błąd jest dostępny tylko w węzłach, które zapisują kontekst wykonywania w sposób automatyczny (na przykład formatki) lub jawnie przez włączenie opcji Zapisz kontekst wykonywania. Więcej informacji na ten temat zawiera sekcja Usługi zapisywania współużytkowanych obiektów biznesowych.

Wychwytywanie błędów przy użyciu podprocesów zdarzeń błędu

Podproces zdarzenia jest wyspecjalizowanym typem podprocesu, który nie stanowi części normalnego przepływu sekwencji procesu nadrzędnego. Podproces zdarzenia błędu jest podprocesem zdarzenia zawierającym początkowe zdarzenie błędu. Podproces zdarzenia nie jest połączony przy użyciu przepływu sekwencji i działa tylko w przypadku wyzwolenia zdarzenia początkowego w podprocesie zdarzenia. Podprocesów zdarzeń błędu można używać do obsługi błędów w procesie.

Przed podjęciem decyzji, czy mają być używane podprocesy zdarzeń błędu, należy uwzględnić następujące kwestie:
  • Znajdując zdarzenie błędu w podprocesie błędu, zamiast definiować je w procesie, można zdefiniować czytelny proces.
  • Podprocesów zdarzeń należy używać w przypadku potrzeby wielokrotnego wykorzystywania przepływu obsługi błędu dla wielu czynności w procesie. Aby ponownie wykorzystać przepływ obsługi błędu za pomocą zdarzeń przyłączonych, konieczne jest przyłączenie zdarzenia pośredniego do każdego zadania, a następnie połączenie tych zdarzeń z przepływem obsługi błędu.
  • Użytkownik może zdefiniować obiekty danych, do których dostęp jest możliwy tylko z wewnątrz podprocesu zdarzenia. Można zdefiniować tylko te obiekty danych, które należą do podprocesu. Proces nadrzędny nie jest w takiej sytuacji obciążony szumem informacyjnym związanym z niepotrzebnymi zmiennymi.

Więcej informacji o podprocesach zdarzeń zawiera sekcja Modelowanie podprocesów zdarzeń.

Przykład obsługi wyjątków na poziomie procesu

Produkt IBM® Business Process Manager udostępnia zmienną systemową tylko do odczytu tw.system.step.error, która umożliwia dostęp do przechowywanych informacji dotyczących wyjątku, który wystąpił w procesie.

Zmienna istnieje w zasięgu kroku, a nie w procesie. Nie można jej pobrać w następnym kroku. Zamiast tego należy uzyskać do niej dostęp w sekcji przypisań końcowych granicznego pośredniego zdarzenia wyjątku.

Przykład modelowania wyjątku i jego obsługi został przedstawiony na poniższym obrazku:

Ten obrazek przedstawia modelowanie wyjątku w diagramie procesu.

Aby pobrać dane wyjątku, wykonaj następujące kroki:
  1. Zadeklaruj zmienną prywatną typu XMLElement (np. tw.local.error). Przypisz do niej wartość (np. tw.object.XMLElement("abc")).
  2. Utwórz przypisanie końcowe dla załączonego pośredniego zdarzenia wyjątku i przypisz zmienną systemową do zmiennej utworzonej w kroku 1 (np. tw.local.error = tw.system.step.error).

    Wartości w zmiennej lokalnej można użyć w następnych krokach procesu.

Zgłaszanie błędów

W przypadku błędów zgłaszanych z przepływu procesu lub usługi istnieje możliwość użycia końcowego zdarzenia błędu w procesie w celu określenia kodu błędu i odwzorowania na typ błędu.

Podczas pracy ze zdarzeniami błędu lub podprocesami zdarzeń należy rozważyć, czy błędy mogą być obsługiwane natychmiast i czy może być kontynuowane normalne przetwarzanie, czy też można zgłosić inny błąd na innym poziomie. Następnie należy zaimplementować obsługę błędów metodą wstępującą. W innych przypadkach bardziej wydajnym i czytelnym podejściem może być ponowne wykorzystywanie podprocesu. Wszystkie powiązane procesy i usługi należy budować w sposób, zapewniający wychwytywanie i korygowanie błędów. Jeśli skorygowanie jest niemożliwe na najniższym poziomie implementacji, można pozwolić błędowi na przejście na wyższy poziom przez niedołączenie zdarzenia błędu lub można dołączyć zdarzenie błędu, ponownie zgłaszające błąd do wywołującej usługi lub wywołującego procesu, co zostało przedstawione w poniższej sekcji.

Aby na przykład zapewnić wychwytywanie wszystkich błędów, które mogą wystąpić w czasie wykonywania procesu, można utworzyć proces wysokiego poziomu obejmujący działanie wywołujące proces główny jako proces powiązany, a następnie jedno działanie dodatkowe z usługą bazową implementujące obsługę błędów, zgodnie z poniższą ilustracją:

Ten zrzut ekranu przedstawia diagram procesu opisany we wcześniejszym akapicie.

W tego rodzaju projekcie wszystkie błędy zgłoszone przez bazowe procesy i usługi są przekazywane w górę i odpowiednio obsługiwane.