ã第äºåãçµè²»ç³è«ã®ããã¼ã§å¦ã¶Camundaã®åºæ¬ï¼BPMNã¢ããªã³ã°ç·¨ï¼
ååã¯Camunda Modelerã®ã¤ã³ã¹ãã¼ã«ã¨Camunda Spring Boot Starterã«ããCamundaç°å¢æ§ç¯ãè¡ãã¾ããã
- ã第ä¸åãçµè²»ç³è«ã®ããã¼ã§å¦ã¶Camundaã®åºæ¬ï¼å°å ¥ç·¨ï¼
- ã第äºåãçµè²»ç³è«ã®ããã¼ã§å¦ã¶Camundaã®åºæ¬ï¼BPMNã¢ããªã³ã°ç·¨ï¼
- ã第ä¸åãçµè²»ç³è«ã®ããã¼ã§å¦ã¶Camundaã®åºæ¬ï¼BPMNå®è¡ç·¨ï¼
- ã第ååãçµè²»ç³è«ã®ããã¼ã§å¦ã¶Camundaã®åºæ¬ï¼DMNç·¨ï¼
- ã第äºåãçµè²»ç³è«ã®ããã¼ã§å¦ã¶Camundaã®åºæ¬ï¼CMMNç·¨ï¼
- ã第å åãçµè²»ç³è«ã®ããã¼ã§å¦ã¶Camundaã®åºæ¬ï¼ãã¹ãç·¨ï¼
- ã第ä¸åãçµè²»ç³è«ã®ããã¼ã§å¦ã¶Camundaã®åºæ¬ï¼ã¾ã¨ãï¼
ä»åã¯ãååã¤ã³ã¹ãã¼ã«ããCamunda Modelerã使ã£ã¦ããçµè²»ç³è«ãã®åºæ¬çãªã¯ã¼ã¯ããã¼ãBPMNã§ã¢ããªã³ã°ãã¦ã¿ã¾ãããã
BPMNã¨ã¯
BPMNã¨ã¯Business Process Modeling Notationã®ç¥ã§ããã¸ãã¹ããã»ã¹ãã¢ããªã³ã°ããããã®è¨æ³ã§ãã
ãã¸ãã¹ããã»ã¹ã¨ã¯æ¥åã®ä¸é£ã®æµãã®ãã¨ã§ãBPMNã¯ãã¿ã¹ã¯ã®æ å½è ãæ å½ç¯å²ãããã¼ã®åå²æ¡ä»¶ãã·ã¹ãã ãæ å½ããã¿ã¹ã¯ãã¡ãã»ã¼ã¸ã®ããã¨ããªã©ãæ確ãã¤ãã¸ã«ã«ã«å®ç¾©ã§ãããå®åä½æ¥ã¨ãã¦ã®ã¯ã¼ã¯ããã¼ãã¢ãã«ã¨ãã¦è¡¨è¨ãããã¨ãå¾æã¨ãã¾ãã
ç¾èã¯ä¸è¦ã«ããããªã®ã§ãçµè²»ç³è«ã®ã¯ã¼ã¯ããã¼ãä¸è¨ã®ãããªç°¡åãªæ¥åè¦ä»¶ã¨ãã¦ã¢ããªã³ã°ãã¦ã¿ã¾ãããã
- ã¦ã¼ã¶ã¼ãçµè²»ç³è«ã®ãã©ã¼ã ãå ¥åãã
- æ¿èªè ãç³è«ãæ¿èªãã
ä¸è¨ã®ãããªè¦ä»¶ãBPMNã§è¡¨ç¾ãã¦ã¿ãã¨ä¸ã®ãããªã¢ãã«ãåºæ¥ä¸ããã¾ãã
GitHubã«ãããã¦ããã®ã§Camunda Modelerããéãã¦è¦ããã¨ãå¯è½ã§ãã
ã±ã£ã¨è¦ãã ãã§ãç´æçã«ä½ã表ç¾ãã¦ããããããããããã¨æãã¾ãããä»åã¯ãã®BPMNã®ã¢ãã«ãä½æããã®ã«å¿ è¦ãªããã¤ãã®ã³ã³ãã¼ãã³ãã®èª¬æã¨ãCamunda Modelerä¸ã§ã®ã³ã³ãã¼ãã³ãã®ä½ææ¹æ³ã解説ãã¦ããã¾ãã
ãã¼ã«
ã²ã¨ããã¾ãã®ãã¸ãã¹ããã»ã¹ããããããã»ã¹ãæ å½ããä¸çªé«æ¬¡ãªæ¦å¿µï¼ãã¨ãã°é¨ç½²çï¼ã表ç¾ããããã®ã³ã³ãã¼ãã³ããããã¼ã«ãã¨å¼ã³ã¾ãããã¼ã«ã¯ãCamunda Modelerä¸ã®å·¦ä¸ã«ãããã¡ãã®ãã¿ã³ãæ¼ãã¨ä½æãããã¨ãã§ãã¾ãã
ãã¼ã«ã®è©³ç´°ã«ã¤ãã¦ã¯ãã¡ãã®ããã¥ã¡ã³ãã«è©³ããè¨è¼ãããã¾ãã
ä»åã¯ãçµè²»ç³è«ãã®ããã®ããã»ã¹ã¨ãããã¨ã§ããã¡ãã®ãã¿ã³ããçµè²»ç³è«ã®ãã¼ã«ãä½æããã¨ä¸ã®ããã«ãªãã¾ãã
ãã¼ã«ã®ååï¼ä»åã¯ãçµè²»ç³è«ãï¼ã¯ããã¼ã«ãé¸æããéã«å³å´ã«è¡¨ç¤ºãããProperties Panel
ã®Name
æ¬ã«å
¥åããã°OKã§ãã
ãã¼ã«ä»¥å¤ã®ä»ã®BPMNã³ã³ãã¼ãã³ãã«ã¤ãã¦ããååã«é¢ãã¦ã¯ãã¹ã¦åãProperties Panel
ã®Name
æ¬ããè¨å
¥ãããã¨ãã§ãã¾ãã
ã¹ã¤ã ã¬ã¼ã³
ã¹ã¤ã ã¬ã¼ã³ã¨ã¯ããã¼ã«å ã§ç¹å®ã®ã¿ã¹ã¯ã®æ å½ç¯å²ãåå²ããããã®ã³ã³ãã¼ãã³ãã§ãã詳細ã«ã¤ãã¦ã¯ãã¡ãã®ããã¥ã¡ã³ããåç §ãã¦ãã ããã
ä»åã®çµè²»ç³è«ã¯ã¼ã¯ããã¼ã§ã¯ãç³è«è
ãæ¿èªè
ãçµç
ã¨ããæ
å½ç¯å²ãå®ç¾©ãã¦ããã®ã§ãçµè²»ç³è«ãã¼ã«ã«ãã®ã¹ã¤ã ã¬ã¼ã³ãä½æãã¦ã¿ã¾ãããã
ã¾ãã¯ãã¼ã«ãé¸æããéã«å³å´ã«ç¾ããDivide into two Lanes
ã¨ãããã¿ã³ãæ¼ãã¦ã¿ã¾ãããã
ä¸ã®ããã«ããã¼ã«ã2ã¤ã®ã¬ã¼ã³ã«åå²ããã¾ãã
次ã«ãã©ã¡ããã®ã¬ã¼ã³ãé¸æãã¦å³ã®ã¡ãã¥ã¼ã®Add Lane above
ãããã¯Add Lane below
ã©ã¡ãã§ãè¯ãã®ã§æ¼ãã¦è¦ã¾ãããã
ããã§ã¹ã¤ã ã¬ã¼ã³ã3ã¤ä½æã§ããã®ã§ãããããç³è«è
ãæ¿èªè
ãçµç
ã¨ãã¾ãããã
ã¤ãã³ã
BPMNã«ã¯ãã¤ãã³ããã¨ããæ¦å¿µããããã¯ã¼ã¯ããã¼ã®ã¹ã¿ã¼ãèµ·ç¹ã¨ãªãã¤ãã³ãStart Event
ã§ãã£ãããããã»ã¹ã®éä¸ã«çºçããã¨ã©ã¼ãã³ããªã³ã°ã®ãããªã¤ãã³ãIntermidiate Event
ãããã»ã¹ã®çµç¹ã¨ãªãã¤ãã³ãEnd Event
ã表è¨ãããã¨ãã§ãã¾ãã
Camunda Modelerä¸ã§ã¯å·¦ã®ã¡ãã¥ã¼ã«ãããããã®ä¸¸ãã³ã³ãã¼ãã³ããããããStart Event
ãIntermidiate Event
ãEnd Event
ã¨ãªãã¾ãã
ããã«ãããããã®ã¤ãã³ãå
ã«ãã¡ãã»ã¼ã¸ãèµ·ç¹ã¨ããã¤ãã³ãMessage Event
ãæéçºç«ããã¤ãã³ãTimer Event
ãç¹å®ã®æ¡ä»¶ã§çºåããã¤ãã³ãConditional Event
ãSignal Event
çãã¾ãã¾ãªç¨®é¡ã®ã¤ãã³ããåå¨ãã¾ããä»åã¯ãããã®ç´¹ä»ã¯çãã¾ãããã¤ãã³ãã®è©³ç´°ã¯ãã¡ãã®ããã¥ã¡ã³ããåç
§ãã¦ã¿ã¦ãã ããã
ä»åã¯èµ·ç¹ã¤ãã³ãã¨ãã¦ãçµè²»ç³è«ãã©ã¼ã éä¿¡ãã¨ããStart Event
ãä½æãã¦ã¿ã¾ããããå·¦ã®ã¡ãã¥ã¼ããStart Event
ãé¸æãã¦ç³è«è
ã¬ã¼ã³ã«é
ç½®ããããçµè²»ç³è«ãã©ã¼ã éä¿¡ãã¨ããååãã¤ããã ããªã®ã§ç´æçã«ããããã¨ãããã¾ãã
ã¿ã¹ã¯
ãã¦ãä¸æ¦èµ·ç¹ã¤ãã³ããããçµè²»ç³è«ãã©ã¼ã ããéä¿¡ãããããä»åº¦ã¯æ¿èªè ãç³è«ãã©ã¼ã ãæ¿èªããå¿ è¦ãããã¾ããBPMNã§ã¯ããã®ãããªã人ãã·ã¹ãã ãä½ãããã®ã¢ã¯ã·ã§ã³ãèµ·ããæ¦å¿µããã¿ã¹ã¯ãã¨å¼ã³ã¾ãã
ã¿ã¹ã¯ã«ããã¾ãã¾ãªç¨®é¡ãããããã¡ãã®ããã¥ã¡ã³ãã§è©³ç´°ã確èªãããã¨ãã§ãã¾ãã
ãçµè²»ç³è«ãããã¼ã§ä½¿ç¨ããã¿ã¹ã¯ã¯ã人ãã¢ã¯ã·ã§ã³ãèµ·ããUser Task
ã¨ãã·ã¹ãã ãã¢ã¯ã·ã§ã³ãèµ·ããService Task
ã®2種é¡ã§ãä»åã®ä¾ã§ã¯User Task
ã¯ãæ¿èªãã¨ã確èªããService Task
ã¯ãçµè²»è¨é²ãã®ã¿ã¹ã¯ãããªãã¾ããããããä¸ã®ãããªBPMNã³ã³ãã¼ãã³ãã¨ãªãã¾ãã
ããã§ã¯æ¿èªè
ãæ¿èªããã¦ã¼ã¶ã¼ã¿ã¹ã¯User Task
ãä½æãã¦ã¿ã¾ãããã
å
ã»ã©ä½æãããçµè²»ç³è«ãã©ã¼ã éä¿¡ãã¤ãã³ããé¸æããã¨ãã¿ã¹ã¯ã追å ããããã®Append Task
ã¨ããã¡ãã¥ã¼ã表示ãããã®ã§ããã¡ããã¯ãªãã¯ãã¾ãã
ã¿ã¹ã¯ãé
ç½®ããå ´æããã¦ã¹ã§é¸æã§ããã®ã§ãæ¿èªè
ã¬ã¼ã³ã§ã¯ãªãã¯ãã¾ãã
ããã¨ãä¸è¨ã®ãããªã¡ãã¥ã¼ãåºç¾ããã®ã§ãã¬ã³ããã¼ã¯ã®Change Type
ãé¸æãã
ã¿ã¹ã¯ã®ã¿ã¤ãã¨ãã¦User Task
ãé¸æãã¾ãããã
ååãæ¿èª
ã¨ãããã¨ã§ãä¸ã®ãããªã¢ãã«ãåºæ¥ä¸ããã¾ãã
ããã§User Task
ãä½æãããã¨ãã§ãã¾ããã
ã²ã¼ãã¦ã§ã¤
ãã¸ãã¹ããã»ã¹ä¸ã§ã¯ããã¾ãã¾ãªç¶æ³ã«å¿ãã¦ããã»ã¹ãåå²ããããåå²ããããã¼ãåæµãããã¨ãã£ãäºè±¡ã表ç¾ãããããã¨ãããã¾ããBPMNã§ãã®åå²ãåæµã表ç¾ããã®ãã²ã¼ãã¦ã§ã¤ã§ãã
ã²ã¼ãã¦ã§ã¤ã®è©³ç´°ã¯ãã¡ãã
ä»åã¯ãçµè²»ç³è«ããæ¿èªããããã©ãããã¨ããå¤æã¨åå²ããããã«Exclusive Gateway
ã¨ããã³ã³ãã¼ãã³ãã使ãã¾ãã
Exclusive Gateway
ã¯ãããæ¡ä»¶ï¼ä¾ãã°ä»åã¯ãæ¿èªæ¸ã¿ãã©ãããï¼ã«å¯¾ãã¦ä¸ã¤ã®åå²ããã¼ã ããé¸æãããã²ã¼ãã¦ã§ã¤ã«ãªãã¾ãã
æ¿èª
ã¦ã¼ã¶ã¼ã¿ã¹ã¯ãããæ¿èªæ¸ã¿ããã©ãããå¤å®ãåå²ããããã®Exlusive Gateway
ã足ãã¾ãã
ä½æãããExclusive Gateway
ã«ãæ¿èªæ¸ã¿ï¼ãã¨ããååãã¤ãããããããã®å ´åã®åå²ã«ãçµè²»å´ä¸ãã¨ããEnd Event
ãä½æãã¾ããããä¸ã®ããã«End Event
ã¯Append EndEvent
ããä½æãããã¨ãã§ãã¾ãã
ãæ¿èªæ¸ã¿ï¼ãã®æ¡ä»¶ããã¯ããã ã£ãå ´åã®åå²ã«ã¯ãçµç
ã®ã¬ã¼ã³ã«ã確èªãã®User Task
ãä½æãã¾ãã
ä»ä¸ã
ããã¾ã§ã§ãã¼ã«
ãã¹ã¤ã ã¬ã¼ã³
ãã¤ãã³ã
ãã¿ã¹ã¯
ãã²ã¼ãã¦ã§ã¤
ã¨ããBPMNã®åºæ¬çãªã³ã³ãã¼ãã³ãã使ç¨ãã¦ãçµè²»ç³è«ãã®ã¯ã¼ã¯ããã¼ã®ã»ã¼æçµæ®µéã¾ã§ã¢ããªã³ã°ãã¦ãã¾ãããæå¾ã«ãããã¾ã§ã¨åæ§ã®æµãã§ãçµè²»è¨é²ãã¨ããService Task
ã¨ãçµè²»åçãã¨ããEnd Event
ãä½æããã°ä»åã®BPMNå³ã¯å®æã«ãªãã¾ãã
æåã«ãæ¸ãã¾ãããä»åä½æããBPMNã¯ãã¡ãã®GitHubã«ããã¦ããã®ã§ãCamunda Modelerããéããã¨ãã§ãã¾ããæçµææç©ã確ããã¦ã¿ããæ¹ã¯ãã¡ãããã©ããã
第äºåã¾ã¨ã
ãããã§ããã§ãããããæ¥åè¦ä»¶ã®å®ç¾©ãããã£ããããã¦ããã°ãCamunda Modelerãç¨ããBPMNã¢ããªã³ã°ã¯é常ã«ç´æçãã¤ç°¡åã«ã§ãããã¨ãããããããã ããã®ã§ã¯ãªãã§ããããï¼
ä»åã¯ãçµè²»ç³è«ãã¨ããåç´ãªã¯ã¼ã¯ããã¼ãé¡æã«ãä¸è¨ã®BPMNã³ã³ãã¼ãã³ãç¨ãã¦ãã¸ãã¹ããã»ã¹ãã¢ããªã³ã°ãã¦ã¿ã¾ããã
次åã¯ãä»åä½æããBPMNã¢ãã«ãCamundaã®å®è¡ç°å¢ã«ãããã¤ããããã¤ãã®ãã©ã¼ã ã¨Javaå®è£ ã¨é£æºãããã¨ã§ãå®éã«åãçµè²»ç³è«ã¢ããªã±ã¼ã·ã§ã³ãä½æãã¦ã¿ã¾ããã楽ãã¿ã«ã