728x90

 저번 포스팅에서 우리는 프로세스 트리가 무엇이고, 어떻게 생겼는지에 대해 알아 보았다. (이번 포스팅의 이해를 위해서는, 아래 포스팅의 이해가 필수이다!)

2019/06/23 - [Theory/Process Model] - Process Tree란?

 

Process Tree란?

Process Tree란, 트리 구조를 이용한 프로세스 모델 language이다. 트리 구조를 가지기 때문에 각 노드(액티비티)가 어떤 관계를 가지고 있는지를 한 번에 파악할 수 있다는 장점을 가진다. 또한 프로세스 트리는,..

process-mining.tistory.com

 우리가 Process Discovery를 통해 프로세스 모델을 만드는 이유는 이벤트 로그로부터 모델을 도출하여 현재 프로세스가 어떻게 진행되고 있는지를 파악하기 위함도 있겠지만, re-play를 통해 이벤트 로그를 다시 프로세스 모델에 적용시킴으로써 이벤트 로그가 모델에 잘 맞는지를 확인하기 위함도 있을 것이다. 이렇게 이번트 로그를 프로세스 트리에 적용시키기 위해서는 프로세스 트리의 기본적인 구성 요소인 activity, operator 외에도 state라는 개념이 필요하다. 이번 포스팅에서는 프로세스 트리의 state space가 무엇인지에 대해 알아보도록 하겠다. 

Procss Tree의 State Space

 프로세스 트리의 state는 각 액티비티와 operator 노드들 모두에 대해 적용된다. 즉, 모든 노드들에 대해 각자의 state가 하나씩 있는 것이다. 이 state의 종류에는 총 4가지가 있다. 이 설명으로는 직관적으로 이해가 좀 힘들 수 있다. 여기서는 이런 4가지의 상태가 있다는 것을 알고 넘어가고, 아래의 이벤트 로그의 re-play 부분에서 예시와 함께 이해하도록 하자. 

Closed

 Closed는 아무런 상태의 변화가 없는 state를 의미한다. 즉, 이미 active가 되어 실행이 끝났거나 더 이상 enabled 될 가능성이 없는 노드, 혹은 아직 아무 실행이 되지 않은 노드 등을 말한다. 

Enabled

Enabled는 해당 노드를 activate할 준비가 되었다는 것을 의미한다. 즉, 해당 노드가 실행될 모든 준비가 되었다는 것을 의미한다. 이는 페트리 넷에서의 enabled가 fire할 준비가 되었다는 의미를 가지던 것과 비슷하다. 이는 부모 노드가 Activate되었을 때에 가장 왼쪽에 있는 자식 노드, 이것이 operator인 경우에는 그 다음 자식 노드까지 이루어진다. 

Active

Active는 해당 노드가 실행되었다는 것을 의미한다. Active는 오직 Enabled 노드에 대해서만 할 수 있으며, 해당 노드가 Active 되면, 그것의 자식 노드들은 모두 Future Enabled 상태가 된다. 또한 모든 active node에 대해서 모든 자식 노드들이 close되면, 그 노드도 closed 상태가 된다. 

Future Enabled

Future Enabled는 부모 노드가 active이지만 enabled 되지는 않은, 미래에 enabled 될 수 있다는 상태를 말한다. 

이벤트 로그의 Re-play

 위에서 설명한 state들을 하나씩 예시와 함께 re-play해가며 설명하도록 하겠다. 아래와 같은 프로세스 트리가 있다.

예시 프로세스 트리

우선, initial state는 root node가 enabled되고, 나머지 노드들은 closed인 상태이다.

Initial state

 initial state에서, enabled인 노드가 root node인 sequential operator밖에 없기 때문에, 이를 activate한다. 그러면 자식 노드들은 우선 모두 Future Enabled인 상태가 된다. 

 

자식 노드들이 모두 future enabled 되었다.

 부모 operator가 sequential이기 때문에, 왼쪽에 있는 것부터 순서대로 enabled되어야함을 알 수 있다. 그러므로 a 노드가 enabled된다.

a 노드가 enabled되었다.

enabled된 노드인 a 노드를 activiate하고, 이벤트 로그에 a 이벤트가 추가된다.

a 노드가 activate되었다.

a 노드가 activate되고 이벤트 로그에 기록되었으므로, 이 노드는 다시 closed 상태가 된다. 

a 노드가 closed되었다.

 다음으로, Future enabled 두 노드 중 어떤 노드를 enabled 해야할 지 선택해야 한다. 이들의 부모 노드는 또 다시 sequential operator이기 때문에, 왼쪽에 있는 parallel operator가 enabled된다. 

 

parallel operator가 enabled되었다.

 enabled된 노드가 parallel operator이므로 이를 activate한다. 그럼 자식 노드들이 모두 future enabled 될 것이다. 이 때, 부모 operator가 parallel이기 때문에 왼쪽 자식 노드부터 순서대로 enabled되던 sequential operator과는 달리, 모든 자식 노드들이 enabled된다.

exclusive choice와 d 노드가 enabled되었다.

 두 enabled된 노드 중 무엇을 선택해도 틀리지 않지만, 이번에는 d를 activiate하도록 하겠다. 액티비티 노드가 active가 되었기 때문에 이를 이벤트 로그에 기록한다.

액티비티 d가 activate되었다.

d 노드가 activate되고 이벤트 로그에 기록되었으므로, 이를 close한다.

d 노드가 closed되었다.

 다음으로 남은 enabled 노드인 exclusive choice를 activate한다. exclusive choice operator도 parallel operator와 마찬가지로 순서가 정해져있지 않기 때문에, b, c 노드가 모두 enabled된다.

b, c 노드가 enabled되었다.

 이 중 아무거나 선택해도 되지만, b 노드를 선택하도록 하겠다. 여기에서 parallel operator와 exclusive choice operator의 차이점은 parallel은 자식 노드들이 모두 activate되지만, exclusive operator는 하나가 activate되면 다른 하나는 close된다는 점이다. 따라서 b 노드가 activiate되면, c 노드는 close 된다.

b 노드가 active, c 노드가 closed 되었다.

 b 노드가 이벤트 로그에 기록되었으니 b 노드를 close한다.

b 노드가 close되었다.

exclusive choice operator의 모든 자식 노드가 close되었으므로 exclusive choice operator를 close한다.

exclusive choice operator가 close되었다.

 parallel operator의 모든 자식 노드가 close되었으므로 parallel operator를 close한다.

parallel operator가 closed되었다.

이제 남은 future enabled 노드는 e이다. 이를 enabled한다.

e가 enabled되었다.

 e를 activate하고, 이를 이벤트 로그에 쓴다.

e가 activate되었다.

 e를 이벤트 로그에 썼으니, e를 close한다.

e가 close되었다.

 마지막으로, sequential operator의 모든 자식 노드가 close되었으니 이를 close한다.

모든 노드가 close되었다!

 기나긴 여정을 거쳐 모든 노드가 close되고, <a, d, b, e> 로그가 만들어졌다! 복잡해 보이지만, 하나하나 하면 어려울 것 없는 과정이다. 

References

1. Course: Advanced Process Mining. RWTH. Dr.ir. Sebastiaan J. van Zelst

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기