第5回 デモアプリケーションを使って JBoss BRMS を理解する
コラム/第5回 デモアプリケーションを使って JBoss BRMS を理解する
Hitachi Solutions
2015年1月30日
第5回 デモアプリケーションを使って JBoss BRMS を理解する
前回の Red Hat JBoss BRMS 超入門では、Red Hat JBoss BRMS の概要をご紹介しました。今回は、サンプルアプリケーションを使って、BRMS の内部を見ていきます。
準備
デモアプリケーションを動かすために、事前に以下を準備しておいてください。
-
Red Hat JBoss BRMS 6 (jboss-brms-installer-<version>.jar)
-
brms-coolstore-demo https://github.com/jbossdemocentral/brms-coolstore-demo
※利用する JBoss BRMS は brms-coolstore-demo で指定のバージョンを使ってください。
インストール
Coolstore デモプロジェクトは、次のようなディレクトリ構成になっています。
brms-coolstore-demo/
├ installs/
Red Hat JBoss BRMS のインストーラを配置するディレクトリ
├ projects/
ウェブショッププロジェクト用のディレクトリ
├ support/
デモアプリケーションの利用するファイルを配置するディレクトリ
├ target/
init.sh を実行することで作成される実行環境用のディレクトリ
├ docs/
クイックスタートガイドなど説明資料のディレクトリ
└ init.sh|init.bat
環境構築用スクリプト
init.sh(Windowsの場合はinit.bat)を実行すると、 JBoss BRMS の管理コンソールであるビジネスセントラルのユーザとして erics と alan が作成されています。これらのユーザと権限は、JBoss EAPのアプリケーションbrms-coolstore-demo/target/jboss-eap-6.1/standalone/configuration/ディレクトリのapplication-roles.properties、application-users.properties に定義されています。
ユーザ | パスワード | 説明 |
---|---|---|
erics | jbossbrms1! | 管理者権限を持つユーザ。ユーザやリポジトリ管理、および、ルールの作成・更新など、すべての操作が実施可能です |
alan | jbossbrms1! | ビジネスアナリスト権限を持つユーザ。ルールの作成・更新はできませんが、ビルドとデプロイは実施可能です |
表 1 インストール時に作成されるユーザ
ユーザの管理およびロールに関しては、『Red Hat JBoss BRMS 6.0 スタートガイド』を参照してください。
下記の手順に従って、ウェブショップアプリケーションの実行環境を構築しましょう。
- brms-coolstore-demo/installs ディレクトリに JBoss BRMS 6 のインストーラのJARファイルを配置します
- init.sh を実行して、デモアプリケーションの環境を構築します
デモアプリケーションの実行
JBoss EAP 上にJBoss BRMSのビジネスセントラルとウェブショップアプリケーションがデプロイされています。JBoss EAP をstandaloneモードで起動することで、ビジネスセントラルとウェブショップアプリケーションを利用することが可能になります。
1.JBoss BRMSの起動
JBoss EAP をstandaloneモードで起動します
% brms-coolstore-demo/target/jboss-eap-6.1/bin/standalone.sh
2.ビジネスセントラルへのログイン
erics ユーザでログインします
図 1 ログイン画面
3.ルールのビルドとデプロイ
左上の「オーサリング」メニューから「プロジェクトオーサリング」を選択します。次に「ツール」メニューから「プロジェクトエディタ」を選択します。 ブラウザ右側のプロジェクトエディタの上部にある「ビルド&デプロイ」ボタンをクリックし、ビジネスルールをデプロイします。 最後に「ビルド成功」と表示されれば、ビルド&デプロイの成功です。
図 2 プロジェクトのビルドとデプロイ
4.ウェブショップアプリケーションの表示
http://localhost:8080/brms-coolstore-demo/ にアクセスし、ウェブショップアプリケーションを表示します。 左側のペインでアイテムを選択し、「Add To Cart」ボタンをクリックすると、右側のペインのShopping Cartが更新される仕組みです。
図 3 ウェブショップアプリケーション画面
デモアプリケーション
ウェブショップアプリケーションでは、JBoss BRMS を利用した開発で使われる様々な機能が盛り込まれています。ビジネスセントラルのプロジェクトエクスプローラで、それらを確認することが可能です。
図 4 プロジェクトエクスプローラ
今回は、ショッピングカートに追加されたアイテムの金額を計算するルール「Total Shopping Cart Items」について詳しく見ていきます。
ビジネスルールは<条件>と<アクション>の2つの要素で構成されています。この2つの要素が「図:エンジンの処理フロー」のように、ルールの評価(ファクトとルールのマチング)とアクションの実行(アジェンダの実行)という2つのフェーズで実行されます。
when
<条件>
then
<アクション>
エンジンの処理フロー
図 5 ルールエンジンの処理フロー
「Total Shoppping Cart Items」ルールでは、ショッピングカートとショッピングカートに登録されたアイテムが存在する場合に評価され、アクションとして合計金額、値引き金額を計算します。
処理を順番に見て行きましょう。
01 package com.redhat.coolstore
02
03 rule "Total Shopping Cart Items"
04 ruleflow-group "pricing-rules"
05 no-loop true
06 when
07 $sc : ShoppingCart( )
08 $sci : ShoppingCartItem( shoppingCart == $sc )
09 then
10 $sc.setCartItemTotal( $sc.getCartItemTotal() + ($sci.getPrice() *
$sci.getQuantity()));
11 $sc.setCartItemPromoSavings($sc.getCartItemPromoSavings() +
($sci.getPromoSavings() * $sci.\getQuantity()));
12 update($sc);
13 retract($sci);
- 条件の評価
7行目の「$sc: ShoppingCart()」では、ショッピングカートが存在していることをチェックし、<アクション>で処理するために変数 $sc にバインドしています。
8行目では、$sc にバインドされたショッピングカートに関連づけられたアイテムを変数 $sci にバインドしています。このようにルールエンジンに渡されたファクトを変数にバインドすることで<アクション>で処理することが可能となります。
- アクションの定義
10行目の「$sc.setCartItemTotal()」では、アイテムの金額と数量をショッピングカートの合計金額に追加しています。
11行目の「$sc.setCartItemPromoSavings()」では、アイテムの値引き金額をショッピングカートの値引き金額に追加しています。
計算の後には、ルールを評価するための重要な update($sc) と retract($sci)が実行されています。
- ショッピングカートの更新update($sc)
ワーキングメモリに登録されたショッピングカートのファクトに変更があったことをルールエンジンに通知し、ショッピングカートが再評価されるようにします。
- アイテムの取消 retract($sci)
計算が終わったアイテムはワーキングメモリに登録されたアイテムを削除し、評価対象から除外されます。
処理のイメージ
図 6 ルール実行イメージ
最後に
実際の DRL のソースコードとその動作を照らし合わせることで、ルールの評価や実行の仕組みを見ていきました。複数のルールを評価する仕組みについては、また、別の機会でご紹介していきます。
著者紹介
レッドハット株式会社
JBossサービス事業部
ソリューションアーキテクト 大溝 桂 様
サン・マイクロシステムズにてC言語/Java言語を利用した基幹業務システムの開発などを経験後、2012年にレッドハット株式会社に入社。パートナを担当するプリセールスエンジニアとして、JBoss Middlewareの拡販とパートナ企業の技術者育成に従事。
もっと知る
「Red Hat ソリューション」についてのお問い合わせやお見積もりなど、
お気軽にご連絡ください。