OSS で実現するビジネスロジックの見える化と生産性向上 ~ JBoss BRMS の特徴とメリット ~ 2015/5/23 株式会社日立ソリューションズ社会イノベーション基盤本部第 4 部岡本雅幸 Hitachi Solutions, Ltd. 2015. All rights reserved.
Contents 1.BRMS のご紹介 2.BRMS デモ 3. まとめ Hitachi Solutions, Ltd. 2015. All rights reserved. 1
1. BRMS のご紹介 Hitachi Solutions, Ltd. 2015. All rights reserved. 2
1-1.BRMS とは BRMS とは? Business Rule Management System の略ビジネスルールを管理するための仕組みおよび環境 Business Rule とは? もし だったら ( 条件 ) する ( アクション ) IT システムに限らず 業務はビジネスルールの集合で成り立っている Red Hat JBoss BRMS とは? ビジネスルールを実行するフレームワークやライブラリ ( ルールエンジン ) アプリケーションとビジネスルールを分離 ビジネスルールの可視化 作成 実装 テスト バージョン管理など ビジネスルールを管理するための統合基盤を提供 jboss.org の Drools プロジェクトを Main Upstream Project とし Red Hat 社がエンタープライズ用途として提供する製品 OS でいうと Red Hat Enterprise Linux と Fedora の関係 Hitachi Solutions, Ltd. 2015. All rights reserved. 3
1-2.BRMS の導入で期待される効果 ビジネスロジックの可視化 ビジネスニーズの変化に柔軟に対応 開発の簡素化 / 効率化 = 生産性向上 Hitachi Solutions, Ltd. 2015. All rights reserved. 4
1-3.ビジネスロジックの可視化 従来型システム フローにルールが記載されている 視認性が悪い ルールを変更する場合 フローの変更も必要 申請 金額は 100万以下 100 1000万 課長 承認 部長 承認 1000万以上 社長 承認 変化に弱いシステム BRMS適用システム フロー ルール フローとルールが分離 申請 業務 ルール 承認 金額が 100万以下 であれば 課長が承認する 金額が 100万から1000万 であれば部長が承認する 金額が 1000万以上 であれば社長が承認する 変化に強いシステム Hitachi Solutions, Ltd. 2015. All rights reserved. 5
1-4. ビジネスニーズの変化に柔軟に対応 1 フローとルール ( さらにデータ ) の分離による疎結合システム 2 業務ユーザによるシステム変更ルールの記述は特別なトレーニング不要な Excel で定義可能 業務ユーザによる変更が可能 ビジネスニーズに合わせて IT システムを柔軟に変更可能 Excel によるルール定義の例 もし だったら ( 条件 ) する ( アクション ) DRL (Drules Rule Language ) によるルール定義の例 when ShoppingCart( cartitemtotal >= 0.0, cartitemtotal < 25.0 ) then setshippingtotal( 2.99 ) もし だったら ( 条件 ) する ( アクション ) DSL (Domain Specific Language) を利用することで より自然言語に近いルール表記が可能 カート内商品の合計金額が $ 0.0 以上 $25.0 未満だったら 送料を $ 2.99 とする Hitachi Solutions, Ltd. 2015. All rights reserved. 6
1-5. 開発の簡素化 効率化 = 生産性向上 従来型開発 要件定義 仕様定義 実装 テスト 仕様齟齬による手戻り BRMS 導入後 要件定義 仕様定義 テスト 仕様定義フェーズから業務担当者と IT 担当者がコミュニケーション可能な仕組み ( 表形式や自然言語に近いルール表記 ルールフロー ) を利用することで仕様齟齬を防止 DRL や Excel によるルール定義から BRMS がアプリケーションを自動生成 ( 実装工程を削減 ) Hitachi Solutions, Ltd. 2015. All rights reserved. 7
1-6.BRMS 導入のメリット ビジネスロジックの可視化 フローとルールを分離することで正確なビジネスサービスを実現 ビジネスニーズの変化に柔軟に対応 業務担当者によるビジネスルールの変更が可能 フローとルールを分離することで 変更時の影響範囲も分離 開発の簡素化 / 効率化 = 生産性向上 業務担当者と IT 担当者がコミュニケーションできる透過性の高いシ ステム環境 => 仕様齟齬による手戻り防止 仕様 実装 定義されたビジネスルールは BRMS エンジンがコンパイル 運用 BRMS を利用することで ビジネスの変化に強いシステムを構築する事が可能となります Hitachi Solutions, Ltd. 2015. All rights reserved. 8
2. BRMS デモ Hitachi Solutions, Ltd. 2015. All rights reserved. 9
2-1.brms-coolstore-demo このデモアプリはソースコードが公開されているため どなたでも試すことができます https://github.com/jbossdemocentral/brms-coolstore-demo Hitachi Solutions, Ltd. 2015. All rights reserved. 10
2-2. brms-coolstore-demo のビジネスフロー 商品をカートに入れる WEB アプリケーション カートの料金を計算する BRMS 運用 カートの料金を表示する WEB アプリケーション Hitachi Solutions, Ltd. 2015. All rights reserved. 11
2-2. brms-coolstore-demo のビジネスルール # Rule 内容 1 Apply Cart Promotions Promotionが設定されている商品の商品価格と 割引価格を設定します 2 Total Shopping Cart Items 商品価格の合計と割引金額の合計を求めます 3 Calculate Shipping 送料を計算します 運用 4 Apply Shipping Promotions 送料の割引を設定します 初期状態では $75 以上で送料無料となります 5 Total Shopping Cart 商品価格と送料から合計金額を求めます 商品の割引金額を設定します ( マイナス演算 ) 今回は #3 Calculate Shipping Rule を利用してデモを行います デフォルトでは WEBベースのデシジョンテーブルになっていますが 今回のデモはエクセルに変更しています Hitachi Solutions, Ltd. 2015. All rights reserved. 12
2-3. Calculate Shipping Rule 商品金額が $ 0 $25 の場合 送料は $ 2.99 とする商品金額が $25 $50 の場合 送料は $ 4.99 とする エクセルで送料のルールを変更 運用 商品金額が $ 0 $25 の場合 送料は $ 2.00 とする商品金額が $25 $50 の場合 送料は $ 4.00 とする Hitachi Solutions, Ltd. 2015. All rights reserved. 13
2-4. 動的なルール変更の反映 変更後アップロード 運用 1.99 に変更 Hitachi Solutions, Ltd. 2015. All rights reserved. 14
3. まとめ Hitachi Solutions, Ltd. 2015. All rights reserved. 15
3. まとめ BRMS の特徴およびメリット ビジネスロジックの可視化 フローとルールを分離することで正確なビジネスサービスを実現 ビジネスニーズの変化に柔軟に対応 業務担当者によるビジネスルールの変更が可能 フローとルールを分離することで 変更時の影響範囲も分離 開発の簡素化 / 効率化 = 生産性向上 業務担当者と IT 担当者がコミュニケーションできる透過性の高いシ ステム環境 => 仕様齟齬による手戻り防止 仕様 実装 定義されたビジネスルールは BRMS エンジンがコンパイル 運用 BRMS を利用することで ビジネスの変化に強いシステムを構築する事が可能となります Hitachi Solutions, Ltd. 2015. All rights reserved. 16
おまけ ( 宣伝 ) 弊社 WEB サイトで BRMS のコラムを掲載しています http://www.hitachi-solutions.co.jp/redhat/sp/ 個別のハンズオンセミナーも実施しておりますので ご興味をもたれた方は是非お問い合わせください 弊社では Red Hat JBoss BRMS を含む JBoss サポートサービスを提供しています 日立ソリューションズは JBoss 管理者資格者 (RHCJA) 全世界 No.1!! これまでに蓄積したノウハウを活かし お客様のシステムの導入からサポートまでワンストップでサポートします Hitachi Solutions, Ltd. 2015. All rights reserved. 17
END OSS で実現するビジネスロジックの見える化と生産性向上 ~ JBoss BRMS の特徴とメリット ~ 2015/5/23 株式会社日立ソリューションズ社会イノベーション基盤本部第 4 部岡本雅幸 Hitachi Solutions, Ltd. 2015. All rights reserved.
従来型プログラムと BRMS の違い 従来の 手続き型 プログラミング Data BRMS の 宣言型 プログラミング Data THEN IF ELSE THEN IF IF ELSE THEN THEN IF ELSE When Then When Then When Then ELSE THEN IF ELSE IF ELSE THEN ACTION When Then When Then When Then When Then When Then ACTION ACTION ACTION IF-THEN-ELSE の例 特定の地点での条件をチェックするもの ELSE が可読性を大幅に低下させている 全ての パス を確認する必要がある WHEN-THEN の例 マッチングする 状態 の場合 実行候補にリストされ ルールの優先順位に従い実行される 予め決められたパスはなく 個々のルールが正しければよい Hitachi Solutions, Ltd. 2015. All rights reserved. 20
ルールの定義方法 package com.redhat.coolstore rule "Total Shopping Cart Items" ruleflow-group "pricing-rules" no-loop true when $sc : ShoppingCart( ) $sci : ShoppingCartItem( shoppingcart == $sc ) then $sc.setcartitemtotal( $sc.getcartitemtotal() + ($sci.getprice() * $sci.getquantity())); $sc.setcartitempromosavings($sc.getcartitempromosavings() + ($sci.getpromosavings() * $sci.getquantity())); update( $sc ); retract ($sci); end DRL ( 開発者向け ) ディシジョンテーブル (Excel もそのまま利用可能 ) ガイド付き DRL ( 入門開発者向け ) DSL ( 自然言語に近い書式 ) Hitachi Solutions, Ltd. 2015. All rights reserved. 21
brms-coolstore-demo データモデルの定義 Shopping Cart # ラベル 内容 1 Cart Item Total 商品の合計金額 2 Cart Item Promotional Savings 商品の割引価格 3 Shipping Total 送料 4 Shipping Promotional Savings 送料の割引価格 5 Shopping Cart Total 合計価格 ( 商品の合計金額 + 送料 ) 6 List of Shopping Cart Items Shopping Cart Item リスト Shopping Cart Item 運用 # ラベル 内容 1 Item ID 商品コード 2 Name 商品名 3 Price 商品価格 4 Promotional Savings 割引金額 5 Quantity 数量 6 Shopping Cart Hitachi Solutions, Ltd. 2015. All rights reserved. 22
Calculate Shipping Rule の DRL rule "Row 1 Shipping Rules" no-loop true ruleflow-group "shipping-rules" dialect "mvel" when $sc : ShoppingCart( cartitemtotal >= 0.0, cartitemtotal < 25.0 ) then $sc.setshippingtotal( 2.99 ); end rule "Row 2 Shipping Rules" no-loop true ruleflow-group "shipping-rules" dialect "mvel" when $sc : ShoppingCart( cartitemtotal >= 25.0, cartitemtotal < 50.0 ) then $sc.setshippingtotal( 4.99 ); end 運用 Hitachi Solutions, Ltd. 2015. All rights reserved. 23