第5回 デモアプリケーションを使って JBoss BRMS を理解する


Red Hat JBoss Middleware

Red Hat2015/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

※利用する JBoss BRMS は brms-coolstore-demo で指定のバージョンを使ってください。

PAGE TOP

インストール

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 スタートガイド』を参照してください。

下記の手順に従って、ウェブショップアプリケーションの実行環境を構築しましょう。

  • (1) brms-coolstore-demo/installs ディレクトリに JBoss BRMS 6 のインストーラのJARファイルを配置します
  • (2) init.sh を実行して、デモアプリケーションの環境を構築します

PAGE TOP

デモアプリケーションの実行

 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 ログイン画面
図 1 ログイン画面

3.ルールのビルドとデプロイ

左上の「オーサリング」メニューから「プロジェクトオーサリング」を選択します。次に「ツール」メニューから「プロジェクトエディタ」を選択します。 ブラウザ右側のプロジェクトエディタの上部にある「ビルド&デプロイ」ボタンをクリックし、ビジネスルールをデプロイします。 最後に「ビルド成功」と表示されれば、ビルド&デプロイの成功です。

図 2 プロジェクトのビルドとデプロイ
図 2 プロジェクトのビルドとデプロイ

4.ウェブショップアプリケーションの表示

http://localhost:8080/brms-coolstore-demo/ にアクセスし、ウェブショップアプリケーションを表示します。 左側のペインでアイテムを選択し、「Add To Cart」ボタンをクリックすると、右側のペインのShopping Cartが更新される仕組みです。

図 3 ウェブショップアプリケーション画面
図 3 ウェブショップアプリケーション画面

PAGE TOP

デモアプリケーション

 ウェブショップアプリケーションでは、JBoss BRMS を利用した開発で使われる様々な機能が盛り込まれています。ビジネスセントラルのプロジェクトエクスプローラで、それらを確認することが可能です。

図 4 プロジェクトエクスプローラ
図 4 プロジェクトエクスプローラ

 今回は、ショッピングカートに追加されたアイテムの金額を計算するルール「Total Shopping Cart Items」について詳しく見ていきます。
ビジネスルールは<条件>と<アクション>の2つの要素で構成されています。この2つの要素が「図:エンジンの処理フロー」のように、ルールの評価(ファクトとルールのマチング)とアクションの実行(アジェンダの実行)という2つのフェーズで実行されます。

    when
        <条件>
    then
        <アクション>
					

エンジンの処理フロー

図 5 ルールエンジンの処理フロー
図 5 ルールエンジンの処理フロー


 「Total Shoppping Cart Items」ルールでは、ショッピングカートとショッピングカートに登録されたアイテムが存在する場合に評価され、アクションとして合計金額、値引き金額を計算します。
 処理を順番に見て行きましょう。

     1  package com.redhat.coolstore
     2
     3  rule "Total Shopping Cart Items"
     4      ruleflow-group "pricing-rules"
     5      no-loop true
     6      when
     7          $sc : ShoppingCart( )
     8          $sci : ShoppingCartItem( shoppingCart == $sc )
     9      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 ルール実行イメージ
図 6 ルール実行イメージ


PAGE TOP

最後に

 実際の DRL のソースコードとその動作を照らし合わせることで、ルールの評価や実行の仕組みを見ていきました。複数のルールを評価する仕組みについては、また、別の機会でご紹介していきます。


著者紹介

レッドハット株式会社
JBossサービス事業部
ソリューションアーキテクト 大溝 桂 様

サン・マイクロシステムズにてC言語/Java言語を利用した基幹業務システムの開発などを経験後、2012年にレッドハット株式会社に入社。パートナを担当するプリセールスエンジニアとして、JBoss Middlewareの拡販とパートナ企業の技術者育成に従事。

PAGE TOP

コラム一覧へ

お問い合わせ ご購入前の商品・サービスに関するご質問・ご相談などお電話でのお問い合わせ 0120-571-488 受付時間:月~金(祝祭日除く)10:00~17:30資料請求・お問い合わせ
доставка воды на дом

купить ковры

полив газона