IBM Process Miningのモニター機能を使って、新規データの投入にあわせて特定のアクティビティーが発生したことをメール通知する
IBM Process Mining 1.13.1の新機能に、Insight to Actionという機能が追加されました。
これは、ビジネス・プロセスの変化をモニターし、それらの洞察に対して専用のアクションで対応する機能です。これにより、プロセスの所要時間またはコストのようなKPIが閾値に達したこと、またはプロセス内で特定の予期しないアクティビティーが発生したことを検出することができます。
検出したことに対して、RESTfulサービスなどのサービスを呼び出すことで、これらの変化に対するアクションを実行することができます。
モニターについては、こちらのリンクを参照してください。
下記の図のように、GithubでIssueをopenしたり、コメントを入力したりすると、その状態をWebhookの機能を使って、IBM Cloud上のFunctionsで定義されたアクションにそのデータを送信します。Functionsでは、受け取ったデータをIBM Event StreamsのTopicに格納します。
IBM Event Streamsに格納されたデータは、IBM Process Miningのデータストリーム機能によって、定期的に取得されて、プロセスモデルとして可視化されます。
このシナリオの詳細については、下記の記事を参照してください。
IBM Process Miningのデータ・ストリームによるIBM Event Streams(Kafka)との連携
このブログで紹介するメインの機能は、モニター機能と、モニターで検知した事象から呼び出される、サービスになります。
![](https://dw1.s81c.com//IMWUC/MessageImages/36d8f1411f3348bd95b4d89f15668345.png)
上記のシナリオを実現するために準備すること。
- Pythonのスクリプトからメール送信できるようにするために、Gmailのアプリパスワードを生成しておく
- IBM Cloud上のFunctionsを定義し、アクションで、Gmailの送信のPythonスクリプトを定義する
- IBM Process Miningでサービスを作成する
- IBM Process Miningでモニターを作成する
Gmailのアプリパスワードを生成する
Pythonのスクリプトから、Emailアドレスとパスワードを使用してgmailのサーバーに接続できるようにGoogleアカウントの設定で下記の設定を行う必要があります。
アプリパスワードでログインする。
- 二段階認証プロセスを有効にする
- アプリパスワードを生成する
下記のイメージのように、生成するアプリ(メール)とデバイス(Windowsパソコン)を選択して生成ボタンをクリックします。
アプリパスワードは、16文字のコードになります。(これは、後で、Functionsのメール送信のアクションに設定します。)
![](https://dw1.s81c.com//IMWUC/MessageImages/65bc06a9356d4887b6d693a6e3399cb3.png)
IBM Cloud上のFunctionsを定義し、アクションで、Gmailの送信のPythonスクリプトを定義する
まず、新規にアクションの作成をおこないます。
アクション名として、IPM_monitor_send_emailと入力します。ランタイムは、Python 3.11を選択します。
![](https://dw1.s81c.com//IMWUC/MessageImages/8dd8bfc15c714eb0948c9a77479a5b05.png)
下記のように、Functionsのひな型が生成されます。
![](https://dw1.s81c.com//IMWUC/MessageImages/b58173370ef34bceaab42145b88952d5.png)
次に、gmailにログインするためのemail_accountとemail_pswdというパラメータを設定します。
email_accountには、Googleアカウントを設定し、email_pswdには、先ほどGoogleアカウントで生成したアプリパスワードを設定します。
![](https://dw1.s81c.com//IMWUC/MessageImages/7f5af8c753044eed97873813d4bd046e.png)
下記のコードを入力して、Pythonコードを完成させます。
#
#
# main() このアクションを呼び出すときに実行されます
#
# @param Cloud Functions アクションは 1 つのパラメーターを受け入れます。このパラメーターは JSON オブジェクトでなければなりません。
#
# @return このアクションの出力。この出力は、JSON オブジェクトでなければなりません。
#
#
import sys
import smtplib
from email.message import EmailMessage
def emailLogin(email_account, email_password):
try:
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(email_account, email_password)
print('Login to gmail success')
return server
except:
print('Login to gmaol failure')
return 0
def main(dict):
server = emailLogin(dict['email_account'], dict['email_pswd'])
msg = EmailMessage()
msg['From'] = dict['email_account']
msg['To'] = dict['email_to']
msg['Subject'] = dict['email_subject']
msg.set_content(dict['email_body'])
server.send_message(msg)
server.close()
return { 'message': 'Email sent' }
完成イメージは下記のようになります。
![](https://dw1.s81c.com//IMWUC/MessageImages/66a9de4851a9480f88c6a84ff52dbaa6.png)
次に、Webアクションを有効化し、外部からREST APIで呼び出せるようにしておきます。
![](https://dw1.s81c.com//IMWUC/MessageImages/3979b7144db041c5aa5b375d0b704766.png)
完成したPythonスクリプトが正常に稼働するかどうかのテストを行います。
パラメータを付けて起動のところをクリックし、メール送信に必要なデータをJSON形式で入力します。
![](https://dw1.s81c.com//IMWUC/MessageImages/ca47bd26e4b3495d9a7d272adbecac0a.png)
起動ボタンをクリックして、右側にあるように、”Email sent”と表示されればメール送信は成功です。
![](https://dw1.s81c.com//IMWUC/MessageImages/564e30389c8949a1b2f4578214beed0a.png)
下記のようなメールが届きました。
![](https://dw1.s81c.com//IMWUC/MessageImages/5621f419142a464da20edb5945041103.png)
IBM Process Miningでサービスを作成する
最初に、Account Closureというプロセスにデータが登録されたタイミングで、モニタリングを行うため、Account Closureのプロジェクトを開きます。
![](https://dw1.s81c.com//IMWUC/MessageImages/b0e0f61824c04f5d9cb0ef5d4b8b770d.png)
左側に双眼鏡のようなアイコンがモニター機能のアイコンになるので、それをクリックします。
![](https://dw1.s81c.com//IMWUC/MessageImages/c6755ebd8e9440eea7d8e4b5ae5e9ad5.png)
サービスの作成ボタンをクリックして、サービスの作成を行っていきます。
![](https://dw1.s81c.com//IMWUC/MessageImages/47a8b78d849746d0b65b99d9e3e1440b.png)
新規サービスの作成画面では、サービス・タイトルとして、Functions-send-emailsを入力します。説明には、Python sends email using SMTP libと入力しておきます。認証については、認証なしに設定します。
URLには、Functionsで有効化した、HTTPメソッドのURLを設定します。
![](https://dw1.s81c.com//IMWUC/MessageImages/f95164a3a8104f5d9c6e4d4eadb93308.png)
次に、アクティビティモニターを作成していきます。
モニターの作成ボタンをクリックします。
![](https://dw1.s81c.com//IMWUC/MessageImages/a1c33ead350f49c9bbbc83aef48077ca.png)
モニタータイトルには、Github open monitorと入力し、説明には、Monitor Github for Open Issuesと入力します。
![](https://dw1.s81c.com//IMWUC/MessageImages/d6c9e44c2643440ca6e78060562ba47c.png)
アクティビティー・モニターの定義では、モニターしたいアクティビティーがドロップダウンで選択できるようになっているので、今回は、openedを選択しておきます。
![](https://dw1.s81c.com//IMWUC/MessageImages/5d18e6f16e4245078c68752f741f981a.png)
次は、どのタイミングでモニターするのかを設定しますが、今回は、データ・アップロードのタイミングでモニタリングすることにします。
![](https://dw1.s81c.com//IMWUC/MessageImages/824d53cadab84f0c9231c34e2034d85e.png)
次に、どのサービスを実行するのかを指定します。
事前に定義した、Functions-send-emailsのサービスを選択します。
![](https://dw1.s81c.com//IMWUC/MessageImages/cbfcd73f73d6440cb08794150d6bfe61.png)
最後にメール送信のためのパラメータとして、本体パラメータを入力します。
{
"email_to": "shideo@jp.ibm.com",
"email_subject": "Process Mining Warning: $__insight_name__",
"email_body": "$__insight_description__ : $__project__ There are github issue opened."
}
接続の検証ボタンをクリックして、正常に接続されることを確認しておきます。
![](https://dw1.s81c.com//IMWUC/MessageImages/4ada892df83847eb8f5c898e3c4f89a2.png)
完成すると、下記のような画面が出てきます。
![](https://dw1.s81c.com//IMWUC/MessageImages/b12c13629a544ca98c44feac87772d8c.png)
GithubでIssueをopenしてデータを発生させてみて、メールが送信されることを確認する。
GithubのNew IssueからTitleやコメントなどをいれて、Submit new issueをクリックします。
![](https://dw1.s81c.com//IMWUC/MessageImages/c17fcd452ed049bd894dd060fa39092e.png)
Functionsのアクティベーションダッシュボードを見ると、一番上に、Github Webhookが実行されたことがわかります。
![](https://dw1.s81c.com//IMWUC/MessageImages/40bc980894fd43e696dbd28af64b9194.png)
データストリームで今すぐフェッチを行って、データの取得を行います。データの取得が行われたタイミングでモニターが稼働するので、テストとして、今すぐフェッチでデータを取得します。
![](https://dw1.s81c.com//IMWUC/MessageImages/6996a06c27b342d990ca7e9191942a58.png)
![](https://dw1.s81c.com//IMWUC/MessageImages/a2888b08e8354caeb3ab05ee12c686d8.png)
データが取得されると、インポート済みが1件になっていることがわかります。
アクティビティーモニターを参照すると、3分前に実行されたことがわかります。
![](https://dw1.s81c.com//IMWUC/MessageImages/78828e472f7a49d1ad9b5a6058afba40.png)
履歴を参照すると、7/7 17:48に実行されたことがわかります。(それ以外の履歴は、少し前に試したものなので、時間が少し遅い時間になっています。)
![](https://dw1.s81c.com//IMWUC/MessageImages/fa78722e657b4e9dab3e2f1adb11d596.png)
再度、Functionsのダッシュボードに戻ってみると、IPM_monitor_send_emailが実行されてメール送信されていることがわかります。
![](https://dw1.s81c.com//IMWUC/MessageImages/cc5519e6063d4bf9a609ca456a79ce8a.png)
メールを確認すると、以下のようなメールが来ていました。
![](https://dw1.s81c.com//IMWUC/MessageImages/4dd16edc948f492d8b2d540fddbb5343.png)
まとめ
IBM Process Miningのモニターおよびサービスのサンプルを作成する手順について、見ていきました。
IBM Process Mining のモニター・サービスは、カスタム条件とスケジュールされたモニターおよび通知を使用してビジネス・プロセスをモニターするのに役立ちます。 プロセスの重要業績評価指標 (KPI)、アクティビティー KPI、分析ウィジェット、プロセス・アクティビティー、および遷移の変更に対する洞察を得られるプロセス基準を設定することにより、モニターを作成できます。
#IBM #CloudPakforBusinessAutomation #Monitor
#IPM
#ProcessMining