2017-10-08 26 views
1

두 개의 검사가 병렬로 실행되는 프로세스를 모델링하려고합니다. 두 검사가 모두 성공하면 프로세스가 계속됩니다. 그렇지 않으면 (실패한 경우) 다른 프로세스의 결과를 기다리지 않고 프로세스를 종료해야합니다. 다음 다이어그램이 맞습니까? 어떤 검사를 실패 후 나는 하나의 흐름을 가지고 싶다면병렬 게이트웨이 및 전용 게이트웨이 조합

BPMN diagram

또한, 무엇을 모델링하기 위해 권장되는 방법이 될 것입니다?

P. 그 시점에서 모델의 하위 프로세스 또는 복잡한 게이트웨이를 사용할 수 없습니다. 특정 권장 사항이 있다면 Activiti에서 모델을 구현할 것입니다.

답변

1

종결 종료 이벤트을 사용 중이기 때문에 프로세스 모델이 정확합니다. 토큰이 종료 종료 이벤트에 도달하면 , 전체 프로세스가 비정상적으로 (BPMN specification, page 436; page 456 in PDF 종료 귀하의 추가 질문에 이제

:. 어떤 검사 실패 후 나는 하나의 흐름을 원한다면 는 또한, 무슨 일이 될 것이다 를 모델링하는 권장 방법은?.

난 당신이 사용하여 '기본'요소는, 당신이 필요를이 작업을 수행하려면 특정 프로세스가 검사 중 하나가 실패. 을 처음으로 흐름을 유발한다고 가정 예를 들어, 실패한 각 검사마다 증가하는 카운터와 일부 낮은 수준의 논리를 구현하기위한 m

enter image description here

그러나, 나는 동시성을 관리하는 등의 작업 차선책을 사용하지 당신을 조언 :이 카운터의 값에 따라 프로세스 흐름을 anages. 위의 예에서 적어도 이론적으로는 모두 증가 거부 카운터 작업이 수행되었습니다 전에 중 하나의 토큰이 에 도달했습니다. 거부 카운터 == 1? 게이트웨이.

대신 Activiti가 실제로 지원하는 하위 프로세스를 사용하는 것이 좋습니다 (Activiti docs 참조).

검사 중 하나가 실패하거나 두 검사가 모두 통과되는 즉시 하위 프로세스가 종료됩니다.

enter image description here

: 메인 프로세스는 확인을 보낼 것인지 또는 하위 프로세스의 결과에 따라 오류를 처리 할 것인지 여부를 결정한다 (내 그림은 하위 처리 결과의 주요 프로세스가 액세스 할 수있는 변수에 기록되어 있다고 가정)

이렇게하면 BPMN (각각 : Activiti)이 동시성과 비즈니스 로직 측면에 중점을 둘 수 있습니다.

참고 : 검사 결과를 처리하는 전용 게이트웨이 대신 첨부 된 오류 이벤트 (Activiti supports error events as well)를 사용할 수 있습니다. 그러나 기술적 인 오류가 아니라 기술적 오류가 아닌 프로세스의 비즈니스 로직을 대체 할 경로라고 생각한다고 가정합니다.