ODM for Developerをさわってみた①環境準備

ODMはIBMが開発・販売しているビジネスルール管理のソフトウェアです。
日本語で書いたルール（エクセル表のようなもの）がそのままシステム・ロジックとして動くので、ロジックの見える化やスピード保守ができます。

開発者向けの無償版（しかも最新バージョン！）が、ODM for Developerとして公開されています。
今回は、ODM for Developerを使うための環境準備をご紹介します。

# Docker導入
使用する環境に合わせて、[Docker for Mac](https://docs.docker.com/docker-for-mac/)か[Docker for Windows](https://docs.docker.com/docker-for-windows/)を導入します。
基本的にインストール・ウィザードに従って導入するだけですが、WindowsではBIOSの設定変更（CPU Virtualizationの有効化）が必要な場合があります。仮想化が無効になっているとメッセージが表示されるので、BIOSメニューに入って変更してください。

# ODMイメージ取得
1.コマンドライン・ツールから、以下のコマンドを入力します。(2019年9月現在、最新のコンテナイメージでは日本語ルールの表示に問題が発生するため、タグを指定して旧バージョンのイメージを取得しています。）

`docker pull ibmcom/odm:8.10.1.0`

2.以下のメッセージが表示されたら、コンテナのダウンロードは完了です。
`Status: Downloaded newer image for ibmcom/odm:8.10.1.0`

3.ダウンロードしたコンテナを起動します。以下のコマンドを入力してください。
`docker run -e LICENSE=accept -p 9060:9060 -p 9443:9443 -m 2048M --memory-reservation 2048M -e SAMPLE=true ibmcom/odm:8.10.1.0`

4.コンテナと、コンテナに含まれるODMサーバーが起動します。以下のようなメッセージが表示されたら、起動完了です。
`[AUDIT] CWWKZ0001I: Application decisioncenter started in xxx.xxx seconds.`

5.ブラウザで以下のURLにアクセスし、Welcomeページが表示されることを確認してください。
http://localhost:9060
![welcome.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/ebfdc05b-60f4-ff0f-02e8-7322c623efa3.png)



# ODMサーバーの起動停止

先ほどの手順では、Dockerイメージをダウンロードして開始しました。
同じ手順を繰り返すとカスタマイズした環境を上書きしてしまうので、ダウンロード済みの環境を起動停止する方法を確認したいと思います。

1. 起動しているDockerコンテナをリストして、先ほど起動したODMサーバーのコンテナIDを確認します。以下の例では右端に表示されている「0b27...」がコンテナIDです。
`docker ps`
![2019-09-04 10_44_52-コマンド プロンプト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/dc16ad08-cdfe-9e05-561f-7c991df0c39c.png)

2. コンテナIDを指定して、イメージを停止します。コンテナIDはすべて入力する必要はありません。他のコンテナと区別が可能な最初の何文字かを入力すれば大丈夫です。
`docker stop 0b27`

3. 停止されたか確認するため、今度は-aをつけてコンテナをリストしてみましょう。
`docker ps -a`
![2019-09-04 10_50_08-コマンド プロンプト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/4c322371-0a52-d1e6-9e6e-5d07d7ed7af8.png)
先ほどのイメージのSTATUSがExitedになり停止していることがわかります。

4. コンテナIDを指定して、再度Dockerイメージを起動します。
`docker start 0b27`

5. 起動されていることを確認します。
`docker ps -a`
![2019-09-04 10_58_36-コマンド プロンプト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/c35158cd-f38c-ac9d-a3a8-9f41892665eb.png)
先ほどのイメージのStatusがUpになり起動していることがわかります。

# ODMサーバーの日本語化

GitHubからダウンロードされるODM for Developerは、サンプルのルール(英語)がデプロイされています。このサンプルを使って既存のルールの変更や追加を体験することもできます。
今回は日本語のルールを作成するため、サンプルのルールは削除してサーバーのロケールを日本語に変更します。

1. Welcomeページの左側にある、Decision Center Enterprise Consoleのリンクをクリックします。
![welcome.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/ebfdc05b-60f4-ff0f-02e8-7322c623efa3.png)

2. 以下の情報を入力して、ログオンしてください。
ユーザー名：rtsAdmin
パスワード：rtsAdmin
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/c07fc47c-d03a-773d-c863-5312a67eb47f.png)

3. 構成タブを選択して「現在の意思決定プロジェクトの削除」をクリックします。関連するプロジェクトを削除する確認のメッセージが表示されたら「はい」を選択してください。すべてのルールの削除が完了すると、「作業可能なプロジェクトがありません」のメッセージが表示されます。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/b2058364-1660-57c2-a884-c6df001ae62f.png)

4. 再度、構成タブを選択して「インストール設定ウィザード」メニューをクリックしてください。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/df260534-df48-947a-62a5-faa9629b893c.png)

5. 左側のステップから、「ステップ１：データベースを構成する」を選択します。「既存データを削除し、スキーマを再び作成するスクリプトを生成する」を選択して、「SQLの生成」ボタンをクリックしてください。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/1e1e637b-b3cb-29ab-e5cd-953237deffce.png)

6. 「SQLスクリプトが生成されました」のメッセージが表示されたら、「SQLスクリプトの実行」にチェックして「適用」ボタンをクリックします。データベースを再構成するスクリプトが実行されます。完了のメッセージが表示されるまで、しばらく待ちます。

7. 「ステップ４：パーシスタンスロケールを設定する」を選択します。ロケールに「ja_JP」と入力して「適用」ボタンをクリックします。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/97018215-865a-d504-cc2a-1c785b0048f1.png)

8. 「ステップ５：構成パラメーターを設定する」を選択して、設定内容を確認し「終了」ボタンをクリックしてください。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/1b07fc3b-aa1b-a504-8b31-0d1625a729c2.png)

9. 以上で、Decision Centerのロケールが変更されました。「OK」ボタンをクリックすると、Decision Centerからサインアウトします。

10. 確認のため、再度ログオンして構成タブから「診断」をクリックしてください。以下のような結果が表示され、パーシスタンス・ロケールが「ja_JP」になっていることが確認できます。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/444402/aae351d9-a169-b53f-8504-62a652527420.png)

#まとめ
以上でODMサーバー環境の準備は完了です。
Dockerを使うことで環境構築や起動停止が簡単に早くできるので、ルール開発者にとって効率的です。
次回は、この環境にデプロイするルールを開発していきたいと思います。