2016-07-25 17 views
6

Próbuję obsłużyć wyjątek usług sieci Web w przepływie pracy (activiti) .Tutaj właśnie utworzyłem przykładowy proces, w którym wywołuję jedną z usług internetowych przez Service Task, która zgłasza wyjątek (brak procesu podrzędnego). Aby obsłużyć ten wyjątek, dodałem zdarzenie błędu Boundary i podałem informację o błędzie jako "myError" (tak samo jak w kodzie). Chociaż próbuję wdrożyć, otrzymuję komunikat o błędzie jako In activiti modeler i nie znalazłem atrybutu jako "attachedToRef".Obsługa błędów w activiti

Here is the workflow process,which i want to deploy

Czy ktoś może mi pomóc rozwiązać ten problem.

Odpowiedz

0

Nie sądzę, że można tak potraktować taki wyjątek w Activiti. alternatywnie, możesz utworzyć klasę, wywołać usługę sieci Web za pośrednictwem tej klasy i wprowadzić tę samą w zadaniu usługi.

nadzieję, że to pomogło ...

+0

robie to samo w mojej służbie zadanie, w atrybucie klasy zadania służby daję pełną ścieżkę mojej nazwy klasy i wewnątrz klasy wywołanie usługi internetowej za pomocą playClient i moja logika znajduje się wewnątrz bloku prób i catch, w którym mogę uzyskać wyjątek. Problem polega na tym, że activiti nie pozwala na wdrożenie samego procesu. Pyta o atrybut attachedRef. Czy możesz mi powiedzieć, jaka jest ścieżka tego atrybutu w module activiti modeler –

+1

po pierwsze: nie używaj zdarzenia "boundary catch" z zadaniem serwisowym. nigdy nie działa w ten sposób. sekund: gdy wystąpi wyjątek, można zmienić zmienną procesową i po zakończeniu zadania serwisowego można mieć wyłączną bramkę do sprawdzenia, czy zmienna procesowa została zmodyfikowana, czy nie. i kontynuuj ten proces odpowiednio. –

+0

Dzięki za szybką odpowiedź. Mam wątpliwości, w jaki sposób mogę przekazać błąd do następnego kroku procesu workflow. Chcę pokazać ten sam błąd użytkownikowi końcowemu. –

0

Można utworzyć podkategorię proces obsługi błędów:

<process id="1" isClosed="false" isExecutable="true" processType="None"> 
     **main process tasks** 
<subProcess activiti:exclusive="true" id="eventSP" triggeredByEvent="true"> 
    <startEvent id="startError" name="StartErrorEvent"> 
    <errorEventDefinition id="_5"/> 
    </startEvent> 
    <serviceTask> 
    **tasks for error** 
    </serviceTask> 
</subProcess> 
</process> 

błędu sub-process masz stworzyć osobną klasę (lub czymś) i wykonać logikę dla błędu.

Lub jeśli chcesz zrobić wyjątek jak granicy czytać activiti user guide