IBM Process Mining メモ - (1) 概要

# はじめに

プロセス・マイニングは現行業務の実施状況を示したログを分析、可視化し、プロセス改善につなげる手法の1つです。
以下、プロセス・マイニングについてWikipediaからの引用です。

>プロセスマイニング（英: Process mining）は、イベントログに基づくビジネスプロセスの分析をサポートする、 プロセス管理の分野における一連の技術である。 プロセスマイニングでは、情報システムによって記録されたイベントログに含まれる傾向、パターン等の詳細を識別するために、イベントログデータに特殊なデータマイニングアルゴリズムを適用する。 プロセスマイニングの目的は、プロセスの効率とプロセスの理解を向上させることである

このプロセス・マイニングをサポートするツールとして、IBM Process Miningという製品があります。
参考: [IBM Process Mining](https://www.ibm.com/jp-ja/cloud/cloud-pak-for-business-automation/process-mining?utm_content=SRCWW&p1=Search&p4=43700070763813237&p5=e&gclid=Cj0KCQjw1ZeUBhDyARIsAOzAqQIsoB2CyLdYN1303fYNk-n1Ils2n2ERJgj5cBW_s1aUI81PZtJzCDgaAoUaEALw_wcB&gclsrc=aw.ds)

当記事ではIBM Process Miningを実際に使ってみた時のログを記載していきます。

## 関連記事

[IBM Process Mining メモ - (1) 概要](https://qiita.com/tomotagwork/items/bf187d6cd8346cb1a86b)
[IBM Process Mining メモ - (2) RHEL8へのインストール](https://qiita.com/tomotagwork/items/bea465ddc195cf06fbf7)
[IBM Process Mining メモ - (3) CSVの取り込みとモデル](https://qiita.com/tomotagwork/items/73cccfc58f5a8836683f)
[IBM Process Mining メモ - (4) BPMN](https://qiita.com/tomotagwork/items/ba07959e49afd95e24e8)
[IBM Process Mining メモ - (5) BAWの情報の取り込み](https://qiita.com/tomotagwork/items/90ca2ac6d100e4c26786)

# IBM Process Mining概要

## 製品の位置づけ
IBM Process Miningというのはプロセス・マイニングのための機能を提供するIBMの有償製品です(まんま...)。
最近のIBM製品は機能ごとにCloud Pakというパッケージで提供されているものが多いです。Cloud Pak for Business Automation とか Cloud Pak for Integrationとか...。
このうちいくつかのCloud Pak(Automation系)に共通の機能を提供するAutomation Foundationという機能群があります。
参考: [IBM Cloud Pak architecture](https://www.ibm.com/docs/en/cloud-paks/1.0?topic=overview-cloud-pak-architecture)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/f42c69e1-2442-29fd-17d3-ec79d51e2080.png)

IBM Process MiningはそのAutomation foundationに含まれるという位置づけです。
上の図だとOpenShift上に構築されるイメージとなっていますが、Process Miningだけオンプレ環境に個別に構築することもできるようです。
参考: [Process Mining and Task Mining Non-OpenShift Installation and Setup Guide](https://www.ibm.com/docs/en/cloud-paks/1.0?topic=guide-process-mining-server-installation-basic-setup)

## 利用の流れ
IBM Process Miningが提供する機能については以下のQiita記事にも概要がまとまっていますのでそちらも参考になると思います。
[いまさら聞けないプロセスマイニング入門](https://qiita.com/ticaco/items/4c036a84371794965f0c)
[業務変革を進めるためのプロセス・マイニング入門](https://qiita.com/Sagawan/items/a032c2011681363a29e5)

基本的には、分析対象の業務のイベントログから取得された情報を与えるとそれを元に可視化が行えるので、その可視化された結果を分析して改善につなげる、という流れで利用することになります。
全体像としては以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/83ec00ad-448b-458a-675b-a831a1d22a5b.png)


IBM Process Miningに入力として与えるデータはCSVもしくはXES形式のファイルです。中身としては何でもよいというわけではなくProcess Miningで処理できる形でデータを準備してあげる必要があります。
現行システムから出力されるログの形式はシステムによってまちまちでしょうし、もちろんプロセス・マイニングを意識してログが取得されていることは少ないでしょうから当然そのまま使える状態にはなっていないと思います。そのため、事前準備としてProcess Miningに必要な情報を抽出し、適切な形に加工する、という処理(いわゆるETLの処理) が必要になります。この辺りはIBM Process Miningの機能としては提供されていないので個別に実施する必要があります。
※そもそも分析に必要な情報がログとして取られていなければ、それを取得してもらはないと話が始まらないのですが...

## 分析対象業務/分析対象イベントログ

IBM Process Miningが扱う分析対象としては、基本的には人手を介する業務フローを想定しているものと思います。1つのアクティビティーが数分～数日/数か月かかるようなものを含む業務フローです。
イベントログの情報を元にして、以下のように各業務アクティビティーの流れをフローチャートのような形で表示してくれたりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ffa692e6-3aa5-3df6-e760-51d250b36310.png)

あるいは、イベントログの情報を元にBPMN(Business Process Model and Notation)の標準に準拠したモデルを生成してくれたりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/32d20174-4477-3481-4b0a-1b677f41df03.png)

他にも様々な分析を行う機能が提供されています。

さて、このような可視化を行って業務プロセスの分析を行うには、当然のことながらその元となるデータを与えてあげなければいけません。つまり分析に必要な情報をIBM Process Miningが求める形で用意してあげなければなりません。

ここで、IBM Process Miningがデータを分析する上で、業務フローをどのようにとらえているかを理解するためにIBM Process Miningで使われる用語について整理します。

IBM Process Miningでは、業務フローを一連の"アクティビティー"によって構成される"プロセス"としてとらえることになります。例えば、車のメーカーの社内での購買要求から支払いまでの部品調達の業務フローを想定すると、

- 部品の調達要求を出して、
- 実際に必要な部品を各ベンダーにオーダーするための発注して、
- 部品の納品を確認し、
- 請求書に基づいて支払いする

というような流れがあります。上の各項目はもう少し粒度の細かい単位の業務に分かれます。例えば最初の部品調達要求は現場の担当者が起票したのち、上長の承認のフローが入るかもしれませんし、オーダーしてから納品までの間に注文内容の変更処理など入ればその管理を行う必要があるかもしれません。
このような管理/分析対象となる業務の最小単位が"アクティビティー"です。一連の意味のある"アクティビティー"のまとまりが"プロセス"です。いくつかの"アクティビティー"を実行することで1つの部品調達の"プロセス"が完了する、という関係性です。
業務フローを認識する上で、各"アクティビティー"が、いつ("開始時刻"/"終了時刻")、どの組織("ロール")に属する誰("リソース")が実行したか、ということも重要になります。

つまり、IBM Process Miningで業務フローを分析させるためには、このような情報を準備して与えてあげる必要があるわけです。
整理すると、以下のような情報をCSV形式で準備することになります。

- 1行(1レコード)に1アクティビティー(管理対象となる業務の最小単位)の情報を保持
- 1行(1レコード)には以下の列情報を含む
    - **プロセスID**: 一連のアクティビティーをまとめて1つのプロセスとして識別するためのID
    - **アクティビティー**: アクティビティーの内容を示す名前
    - **開始時刻**: アクティビティーの開始時刻
    - **終了時刻**: アクティビティーの終了時刻
    - **リソース**: アクティビティーを実行したユーザーの識別子(ユーザーIDなど)
    - **ロール**: アクティビティーを実行したユーザーが所属する組織の識別子(組織名など)
    - **etc**: その他業務に特化した各種情報


列の順番や列名は特に指定はありません。CSVファイルをIBM Process Miningに取り込む際に、どの列をどの情報として扱うかというマッピングを行うことになります。
このうち、プロセスID, アクティビティー、開始時刻の 3つの列は最低限必要です。
例えば、具体的には以下の様な構造のCSVファイルを準備してあげる必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/e40f333b-3e17-18ac-edd3-0a265cf73278.png)
(上の"Order_Line_ID"列がプロセスID、"Activity"列がアクティビティー、"StartTmie"列が開始時刻にマッピングされるイメージです)

取り込んだCSVの列をどのような情報として認識するかを指定する際、最大5つの列を"プロセスID"として指定できます。これはIBM Process Miningが提供しているMulti Level Process Miningという機能によるものです。複数の列を"プロセスID"として指定することで、複数のプロセス間の関係をまとめて可視化/分析することができます。この辺りは少し分かりにくいので、別の記事で具体的に動かしながら見ていくことにします。

参考: [Datasource](https://www.ibm.com/docs/en/cloud-paks/1.0?topic=started-datasource)