IBM Operational Decision Manager メモ - (3) Decision Center利用の流れ

# はじめに
ここでは、Decision Centerに関するチュートリアルをなぞっていきながら、Decision Center利用の流れを見ていきたいと思います。
1つ前の記事ではルールを作ってRESにデプロイするだけでなく、Decision Centerへ公開するところまでやってみました。今回のチュートリアルは、その公開されたルールをDecision Center上でメンテナンスする、という位置づけです。
一度ルールを作成して公開すれば、ブラウザからGUIベースでルールのメンテナンスができるので、プログラマーでなくても簡単に迅速にルールの変更が行えますよ、というのがイメージできるとよいです。

## 関連記事

[IBM Operational Decision Manager メモ - (1) 概要、Linuxへのインストール](https://qiita.com/tomotagwork/items/2bdcc13cc5a896b6a3a1)
[IBM Operational Decision Manager メモ - (2) ルール開発から実行までの流れ](https://qiita.com/tomotagwork/items/446975617acfdb0eda5f)
[IBM Operational Decision Manager メモ - (3) Decision Center利用の流れ](https://qiita.com/tomotagwork/items/5e8b1efbe0072cf5af6b)
[IBM Operational Decision Manager メモ - (4) Linux上での環境セットアップ](https://qiita.com/tomotagwork/items/dd9dc49ed6a67ff876bb)
[IBM Operational Decision Manager メモ - (5) z/OS上での環境セットアップ](https://qiita.com/tomotagwork/items/73ceaf84fb89b5d2af7b)
[IBM Operational Decision Manager メモ - (6) z/OS上でのルール呼び出し](https://qiita.com/tomotagwork/items/577895e05f9ec5e40c06)
[IBM Operational Decision Manager メモ - (7) zODM環境補足](https://qiita.com/tomotagwork/items/fdda485b28c55edae6e6)


# チュートリアルのシナリオ概要
このチュートリアルでは2人の登場人物が出てきてそれぞれの役割に応じた操作を行うので、その辺りを理解した上で操作を進める必要があります。

- Paulさん: ルール管理の責任者。ルール改修の指示や最終的なリリースの決定を行う人。
- Baeさん: 実際に手を動かしてルールの修正を行う人。

以下の流れでルールのメンテナンスを行います。

1. Paulさんが現在のルールを確認しスナップショットを取得した後、Beaさんにルール改修の指示を出します。
2. BeaさんはPaulさんの指示に従いルールの改修を行います。ここで実施するのは既存のDecision Tableの修正と、新規Action ruleの追加です。
3. Paulさんは改修された内容を確認し正しく動作するかテストします。テストが完了したらルールをRESにデプロイします。

※Paul, BeaというユーザーはSample Serverに事前に定義されています。

# チュートリアル実施
以下のチュートリアルの指示に従って進めていきます。
[Getting started with decision services](https://www.ibm.com/docs/en/odm/8.11.0?topic=tutorials-getting-started-decision-services)

## Task 1: Evaluating and assigning changes
まずPaulさんとしての操作を行います。
ここでは既存のルールを確認してスナップショットを取り、ルール改修指示を出します。

### Step 1: Accessing the decision service

ブラウザからDecision Centerにアクセスし、"Paul"でログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/30d45a4d-75cd-c969-99c4-15c2d3147500.png)

Miniloan Serviceの"メイン"ブランチを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/a3ed0c5b-84d3-310b-d5f2-8324dda182aa.png)

"意思決定成果物"タブの下の"タイプ"のXをクリックします。(デフォルトでは表示するタイプが絞り込まれているため、フィルター条件を削除して全タイプの成果物を表示させます)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/e93bf0cd-8426-fb59-e5a9-3a4274f92517.png)

全成果物が表示されるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/50a7d2ea-6343-5f95-60af-106943854edf.png)

### Step 2: Following changes to rules

左側のリストからeligibilityを選択し、真ん中の列の項目全てにチェックし、星マークをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/2846a347-f257-0604-cbd2-9116f5e69aa5.png)

これで、eligibility以下のルールがすべてフォロー対象になりました。(変更された場合に確認しやすくなります。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b147834b-04f2-0ae5-6289-27fe4fbdf3bb.png)

### Step 3: Opening the business rules

eligibility以下の2つのルール("minimum credit score", "repayment and score")を確認しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/1fe6fe70-5ce5-9306-77df-02c033cba9f9.png)

"minimum credit score"
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/130b17f1-e44c-7a2a-b9e5-8fe0a2149ddf.png)

"repayment and score"
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/3fa66870-a986-dc32-a3b4-de4b4d9cdccd.png)

※ここは中身を確認するだけ

### Step 4: Taking a snapshot

この時点でのSnapshotを取ります。Snapshotを取っておくと意図しない変更をしてしまった場合にもこの時点に戻せますし、ルール修正後にどの部分が修正されたのか比較できるようになります。

"スナップショットの取得"をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/c7a88114-69eb-9540-0c9e-453bafad8844.png)

名前、説明を記入して"作成"をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/4f8cd5be-a9b8-fcf5-c6e3-d70b857f2783.png)

"スナップショット"タブで、Snapshotが作成されたことが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/a64c39e3-7c2b-e1c9-afdb-9245a7c3041f.png)

### Step 5: Posting a comment
ホーム - ストリーム から、Beaさんへルール修正指示を送るためのコメントを投稿します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/e57e9254-8afe-542d-ee1d-1d027b986e5e.png)

コメントが投稿されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/dcf53163-6e63-5001-648e-f80e246b2717.png)

Paulさんの作業は一区切りなので、ログアウトします。

## Task 2: Creating and editing rules
次に、Beaさんとしての操作を行います。
ここでは実際にルールの改修を行います。

### Step 1: Searching for rules
ブラウザからDecision Centerにアクセスし、"Bea"でログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/970c98b3-4a17-cbf1-ff7a-fdbb29090065.png)

ホーム - ストリーム を確認すると、Paulさんからルール改修指示が上がっているのが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/d0345316-406d-cb73-55a9-acde1e486162.png)

ライブラリからMiniloan Serviceの"メイン"ブランチを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ed584b9c-b7ed-61c2-c344-3b71594ef049.png)

eligibility以下の repayment and score を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/8c67c4ef-5cdd-a12d-5c14-f6ef5c65a38f.png)

タイムラインをクリックします。Paulによりスナップショットが取得されたことが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ad3176e2-9ca2-f53d-9ec8-672aa5d5f4ef.png)

前の画面に戻って、編集アイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/a30020e5-a9a4-39de-dbff-fe791e444422.png)

そのままOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/25eb1c09-ceb5-5204-073b-8344cc7cce13.png)

ルールが編集できるようになるので、1行目のcredit score - max の 200 を 300 に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ba9c721a-8c61-bf81-d5a4-48198052035f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/931eeaf7-ceac-d488-1e24-0e87db1aa310.png)

次に"詳細"ボタンを押して、ポップアップ画面の "状況"を"検証済み"に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/3878c4a6-b942-e91c-1c6b-061ac770c10a.png)

"保存"ボタンを押して、コメントを追記し、新規バージョンの作成をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/3c8acd5d-840a-0dbf-2a05-e341c2f15e50.png)

一旦ルールの変更ができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/38aa38d0-6d06-8dba-bfaf-2bd03403b7aa.png)

※この時点では不具合が含まれています。

### Step 3: Correcting an error

さて、先に変更した内容だと1行目のみ変更しているので条件が1行目と2行目でかぶってしまっておりよろしくない状態です。
セルの左下にオレンジ色の三角マークが表示されている所がありますが、そのセルにカーソルを合わせるとポップアップでメッセージが表示されます。例えば2行目の200のセルにカーソルを合わせると以下のようなメッセージが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/5bb32542-813b-ca76-d2ca-09d89931fffd.png)
条件が重複している場合このように警告してくれるのでミスを未然に防げます。
2行目のcredit score - min の欄を300に変更します。これで整合性がとれました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b9048b9b-c6f9-356c-e0c2-7a08f618f35f.png)

再度コメントを付けて保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/fb76e30b-40e1-a6da-525e-d2f389b627de.png)

タイムラインをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/18fec8eb-dbca-83b2-459f-15949f7b41c9.png)

新しいバージョンを保存した履歴が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/bfde1d7b-517c-c535-e16a-04aa70c4da2e.png)

### Step 4: Creating an action rule

今度は新しいルールを追加します。
validation を選択して「＋」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/2bf5a7a9-b953-81e2-6990-1dee2cb21bb7.png)

新規ルールを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/6ad466e7-7570-0a18-8dfd-e600d0ca81de.png)

ルールの名前に"check duration"を指定して"作成"をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/c55fd7c3-b5cb-0f7f-d60b-11eec3428685.png)

Action ruleのエディターが開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/252741c4-7191-40c6-3307-a9504acbd1c4.png)

Rule Designerと同様にコンテンツ・アシスト機能が使えますので、それを利用しつつルールを記述していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/7802f2a1-f583-5e9a-f2e5-a4f636ebb562.png)

ガイドに従い以下のようなルールを定義し、"保存"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b45115f3-7422-e3b4-741e-08bcb823fbd2.png)

コメントを記入して"新規バージョンの作成"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b57b4af7-0940-d517-46dc-6c97e602a93c.png)

"check duration"という新しいルールが追加されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b019a8ea-47b2-f3f4-a881-236777d7524d.png)

ホーム - ストリーム から、Paulさんのコメントに対してルール改修が完了した旨の返答をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/6108e05d-e886-d9b0-3afb-27f123e8d5ed.png)

コメントが投稿されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/97bec6fa-553a-a32b-c749-0be2bc8dba05.png)

これでBeaさんの操作は完了ですのでログアウトします。

## Task 3: Testing and deploying the decision service
再びPaulさんとして操作します。
ここでは変更されたルールの確認/テストを実施し、RESへのデプロイを行います。

### Step 1: Comparing changes to the initial state

ユーザー"Paul"でログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/45994afb-8a71-a619-e866-4e8d9335d174.png)

ホーム - 最近のアクティビティー を参照します。ここで、Beaさんから作業が完了したメッセージや、追加/更新されたルールについての情報が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/035c4232-bb12-c09b-15bb-eca4472401e0.png)

新規ルール以下の"メイン"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/755c9c0a-1207-8b44-3ab4-b511a99ed817.png)

"スナップショット"タブから、先に取得したSnapshot"Initial State"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/bb26460c-b548-b642-f07a-b5b576d2b2d6.png)

"比較"ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ab640c59-82e3-af7c-31c8-b8c331780f1c.png)

比較対象の2つ(ここでは、"プロジェクトの現在の状態" と "Initial State")を選択して"比較"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/48ba5c00-f5c9-b77a-835a-b937a49f47c0.png)

これで選択した両者の差分比較が行えます。つまり、どのように修正が行われたのか確認することができます。
"追加済み"をクリックすると、check durationというルールが追加されていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/6e518c8d-fafd-71a8-25d1-5c2497201a01.png)

"更新済み"をクリックすると、"repayment and score"が更新されたことが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b602451a-07cd-e1e6-e012-0c6b8a0f18ba.png)

"repayment and score"の行にマウスを当てると"このエレメントの2つのバージョンを比較"というボタンが出てくるのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ff100590-2795-58e3-70c6-b5a7af444a35.png)

変更内容が以下のように確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/f9c46509-c230-031d-4319-a7e899eb3af2.png)

"プロパティー"をクリックするとプロパティーの変更内容も比較できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/9ea4e3c4-b720-4144-cc76-5c91dbe724e6.png)

### Step 2: Running a test suite

テストを実施する際には、はじめに"テスト・スイート"と呼ばれるものを作成し、どのようなテストを行うかを登録しておく必要があります。今回はサンプルとして事前に用意されたテスト・スイートがあるのでその中身を確認しておきます。
Miniloan Serviceのルールを開いて"テスト"タブから、事前登録されている"Miniloan test suite"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/728b7410-8123-668f-f75b-55a70ba62718.png)

使用するファイルとして"miniloan.xlsx"というのが登録されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/930ccd09-7d0f-9c9b-800d-4475d47cdb23.png)

このExcelをダウンロードして中身を確認してみます。
"Scenarios"タブには、投入するデータのパターンが2つ(2行)登録されています。この2つのパターンについてテストしますよ、ということです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/1a43e37b-9a40-840e-1623-c2594d3abe61.png)
"Expected Results"タブには、先のシナリオを実行した時に期待される結果が記載されています。実際にルールを動かして得られた結果とここに記載された期待値が一致していればテストはOKと判断される、ということです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/091f80c8-a986-e9bc-1194-09e249cc1c9e.png)

<font color="red">※注意</font>: 本来であれば、ルール変更前後で結果が変わる条件をここに追加してきちんと意図した通りに機能しているかを確認する必要があるのですが、チュートリアルではその辺は特に言及していません。既存のテストパターンとしては条件分岐の網羅性とか限界値チェックのような観点で作られていないので(2つしかないし！)、まぁあくまで手順を確認するための簡易的なものと考えてください。実際にはこのテストケースもルール変更に合わせて修正が必要になるでしょう。

それでは実際にこのテスト・スイートを実行してみます。
テストタブにて、"Miniloan test suite"横の実行ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/12f4b532-ee47-a080-e447-76bd0827f5bb.png)

実行されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/83e03e88-0bd0-4e8e-e3cc-0ef64e19b150.png)

レポートが生成されるので、こちらをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/e017ecb3-5bc9-ffae-bdf3-89052c11e17a.png)

2つあったシナリオが成功したことが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/f799a363-c24a-038d-4c53-db3d38686504.png)

(ルール変更とは関係ない条件指定がされたテストシナリオなので、まぁそのまま実行しても両方とも成功してます。)

"詳細"のリンクをクリックすると、各テスト結果の内容と期待値が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/f35694aa-3d07-45dc-6338-ed8a75a71ca5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/bf1b46c0-1356-744a-118c-4d7cf30de354.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/07f03ee5-8ebb-cf33-10ad-04c320c7ba5b.png)

### Step 3: Running a simulation
次に"シミュレーション"というのをやってみます。こちらは大量のテストケースを流して傾向などを確認できるもののようです。
こちらも事前に用意されているシミュレーション用のデータがあるのでそちらを確認しておきます。

シミュレーション - シミュレーション 以下の "File Simulation"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/bef196c8-faa7-cff4-5eaf-a84171730872.png)

入力データとして"Loan Data Excel"が指定されていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b4d69fae-a651-5c1c-3d21-47d54105a925.png)

※"シミュレーション"では、シミュレーションした結果としてどのようなレポートを出力するかというのを"レポート・フォーマット"として事前に定義しておきます。その辺も事前に定義されているものに基づいてレポート出力されます(レポートフォーマットの確認はここでは割愛)。

シミュレーション - データ から、Loan Data Excelとして登録されているExcelファイルをダウンロードして中身を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/828ec759-636f-4189-aed9-dee6d628c46a.png)

Excelを開くと以下のようなテストシナリオが登録されています。シミュレーションの場合結果を検証する訳ではないので期待値は含まれず、入力パラメーターのみ設定しています。ここでは16件のシナリオが用意されているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/6e12ae81-39c4-7bc5-1254-107d976a6398.png)

それではこのシミュレーションを実行してみます。
シミュレーションタブにて、"File Simulation"横の実行ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/77814004-a7cb-037c-b08c-d5ce5f02c368.png)

実行されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/57a64eb3-f3c9-f58a-f49b-669edf24f05b.png)

レポートタブに切り替わって、しばらくするとシミュレーションが完了します。結果はレポートとして確認できますので、レポートのリンクをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/c40f2d15-50c2-872f-be2f-9571753e7d4a.png)

シミュレーションした結果がテンプレートに基づいてレポートとして生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/272d4acb-34a8-3232-ff3e-5cc98c5acf6c.png)