BPMN 2.0에 대해 알아보자.

2 분 소요

intro

  • 제 블로그를 보면, 대부분의 콘텐츠가 데이터 마이닝에 관한 것들이 많지만, 저는 사실 비즈니스 프로세스를 연구하는 사람입니다.
  • 비즈니스 프로세스를 도출하고, 확률적 모델을 만들고 시뮬레이션을 돌리는 일들을 주로 수행하고 있습니다.
  • 지금도 비즈니스 프로세스를 시뮬레이션하고 있는데, 그 과정에서 Business Process를 서로 다른 모듈간에 전달하는 것이 필요하더군요.
  • 그냥 dictionary로 만들거나, 객체로 만들어서 처리해도 일단은 큰 문제가 없다고, 저는 생각했지만, 이후에 논문화를 하는 과정에서는 분명히 “왜 BPMN으로 하지 않았느냐?”라는 질문이 따라 나올 것 같았습니다.
  • 그래서, 이참에 BPMN을 다시 한번 사용해보기로 했습니다.
  • 그동안은 필요할 때, 그냥 draw.io 같은걸로 그리기만 했었거든요. 지금은 BPMN 문서를 읽고 BPMN을 구축하고, 엔진을 만들어서 BPMN instance를 만드는 일까지 진행해야 합니다.

BPMN: Business Process Modeling and Notation

  • 요즘 느끼지만, 위키피디아가 있어서 참 좋습니다. 요즘에는 책 자체를 확실히 예전보다 덜 읽는데, 정보는 더 치열하게 읽게 되는 것 같아요.
  • 아무튼 BPMN은 다음과 같습니다.

Business Process Model and Notation (BPMN) is a standard for business process modeling that provides a graphical notation for specifying business processes in a Business Process Diagram (BPD),[2] based on a flowcharting technique very similar to activity diagrams from Unified Modeling Language (UML).

  • BPMN은 비즈니스 프로세스(업무 프로세스)를 graphical하게 표현하기 위한 표준, 이라고 할 수 있습니다. UML의 activity diagram처럼 플로우 차팅 기술을 사용해서 만들어진 것이죠.

  • BPMN의 예제는 다음과 같구요

  • activity diagram은 다음과 같습니다. BPMN과 비슷한데, 도형의 형태라거나, 하는 몇 가지가 다르네요.

Scope of BPMN

  • 앞서 말한 바와 비슷하지만, BPMN의 경우는 Business Process를 정의하는 것에 집중하고 있습니다. 다시 말하면 이것만으로 제한되고 있다고 할 수 있죠.
  • 위키피디아에 따르면, 제외되는 범위읜 내용은 다음과 같습니다.
    • Organizational structures
    • Functional breakdowns
    • Data models
  • 물론 swimlane을 이용하여 Organizational Structure를 아주 부분적으로는 지원하기도 하고,
  • Data models을 표현하지는 못하지만, 비즈니스 프로세스의 각 액티비티에서 발생하는 message(data artifcat)의 이동을 표현할 수 있기는 합니다.

Elements of BPMN

  • BPMN의 기본 요소는 다음과 같이 정의됩니다.

  • Flow objects
    • Events, activities, gateways
  • Connecting objects
    • Sequence flow, message flow, association
  • Swim lanes
    • Pool, lane
  • Artifacts
    • Data object, group, annotation

제가 필요한 것.

  • 사실 제가 필요한 것은 activities, gateways(XOR, AND), Sequence flow가 전부입니다.
    • swim lanes도 필요없고, data object도 필요없습니다.
  • 단, 하나를 추가하자면, xor gateway일 때, 어떤 activity가 수행될 수 있는지 확률값을 해당 xml 내에 포함하여 전달하고 싶습니다.

BPMN example

  • 자 이제 BPMN 예제를 찾아봅시다. BPMN - working group - reference에 많은 BPMN 예제 들이 올라와 있습니다. BPMN wokring group이 만든 것이기 때문에, 아마도 BPMN을 이용하는 다른 사람들, 시스템 들에서 호환성에 문제가 없도록 하는 테스트 케이스들을 모아놓은 것 처럼 보이네요.

example 1

  • 아주 간단한 sequential process를 보겠습니다.

  • 해당 BP에 대한 문서는 여기에서 볼 수 있는데요. 너무 길고 복잡해서 따로 가져오지는 않았습니다.
  • 대신 이를 좀 세부적으로 보면 다음과 같은 구조를 가진다고 말할 수 있습니다.
    • header: 해당 xml의 각 요소가 어떤 semantic schema(혹은 ontology)를 참고하는지,
    • semantic:process: 프로세스에 대한 정보가 들어있는 부분
      • semantic:startEvent 시작 이벤트
      • semantic:task 각 태스트
      • semantic:endEvent
      • semantic:sequenceFlow
      • semantic:exclusiveGateway: gateway
    • bpmndi:BPMNDiagram: 각 요소가 그림으로 어떻게 그려지는지에 대한 부분으로, 나한테서는 크게 의미있는 부분이 아님.

wrap-up

reference

태그: ,

카테고리:

업데이트:

댓글남기기