
企業システムの常識をJBossで身につける(終)
急速なビジネスの変化に対応できる「BRMS」の常識
株式会社ビーブレイクシステムズ
佐脇 愛史、相原 淳、多田 丈晃、上川 伸彦
2010/11/18
企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
貴社では、ビジネスルールを定めていますか?
企業における「ビジネスルール」について、読者はどのようなものを想像しますか?
その名のとおり、「ビジネスにおけるルール」というものを想像するのではないでしょうか。企業を取り巻く環境は、常に急速な変化が伴います。このような変化に対応できるように、昨今の企業では、一定のビジネスルールを定義しておき管理するケースが増えています。
今回は、ビジネスルールの概要について説明し、企業におけるビジネスルールの扱い方をJBossのソフトウェアを用いて解説したいと思います。
ビジネスルールをアプリと切り離して管理する「BRMS」
前回の『「全体を見る」ためのビジネスプロセス・BPMの常識』では、ビジネスプロセスの管理であるBPMについて説明しました。これは、プロセスの合理化と効率化を図ることで、業務ワークフローの向上を目指すものと説明しました。
今回取り上げる「BRMS」は、「Business Rule Management System(ビジネスルールマネジメントシステム)」の略称です。このBRMSを説明する前に、まず「ビジネスルール」という言葉に焦点を当てて、その概要について説明したいと思います。
ここでいうビジネスルールとは、業務要件やビジネスの制約をルールとして定義することを意味しています。BRMSは、こうしたビジネスルールの考えを取り込んだ手法であり、これにより、ビジネスの業務ルールを細分化してシステムを管理します。
■ 従来のシステム開発では
従来のシステム開発の手法では、業務要件やシステム仕様をプログラム上にハードコーディングすることで、システムを構築してきました。このような場合、システムの仕様変更が発生した際にシステムのソースコードを調査・修正するといった作業工程が発生します。
こうした作業工程が頻繁になると、開発コストの増大・生産性や品質の劣化・納期の遅延につながります。このような問題を解決するために、昨今の企業ではBRMSの手法を取り入れているところが増えてきました。
■ BRMSとは、どのようにして行うものなのか
BRMSは、定義したビジネスルールをアプリケーションと切り離し、「ルールエンジン」によってビジネスルールを管理・実行することです。
このようにビジネス上のルールを一括して管理することで、アプリケーションから独立させて業務ロジックを開発し、実行できるようになります。それによりアプリケーションの変更個所が極小化できます。また、開発者ではなくビジネス担当者がビジネスルールを変更して実施できるのです。
ルールエンジンとは、ビジネスルールを実行するためのエンジンです。上記で説明したビジネスルールとアプリケーションを切り離す役割を担い、これにより、アプリケーションを変更せずに、ビジネスルールのみを変更できます。ビジネスルールを個別に扱うことで、複雑な条件分岐のロジックを組み合わせるため、結果としてアプリケーションを柔軟に扱えます。
■ 「JBoss BRMS」とは
BRMSの考えを取り入れたJBossのオープンソースで、「JBoss BRMS」というものがあります。
その主な特徴は、以下の3つです。
- ビジネスルールの見える化
- 仕様変更に伴うダイナミックなルール変更
- 柔軟なアーキテクチャ
JBoss BRMSは、ビジネスルールを用いることで複雑になりがちなビジネスプロセスをシンプルにできるため、結果として、システム開発のコストを下げ、期間を短縮することにつながります。以下のイメージで動作します。
![]() |
| 図1 JBoss BRMSのアーキテクチャ(レッドハットの資料より抜粋) |
■ 「JBoss BRMS」以外にも
JBossには、ルールエンジンのためのソフトウェアとして「JBoss BRMS」以外にも「JBoss Rules」「JBoss Drools」があります。本稿では、その「JBoss Drools」を中心に説明していきたいと思いますが、その前に、これらのソフトウェアを含むJBoss Enterprise SOA Platformに焦点を当て、ビジネスルールと関連がある「SOA」という手法についても説明しておきます。
ルールから分離したアプリを部品化して再利用「SOA」
「SOA(Service Oriented Architecture)」とは、「サービス指向アーキテクチャ」と呼ばれ大規模なコンピュータ・システムを「モジュール」単位で扱うのではなく「サービス」の集まりとしてコンポーネント化する概念手法です。「サービス」については、連載第6回の『いまさら聞けない「Webサービス」の常識』も参考にしておいてください。
SOAでは、ビジネスルールから分離したアプリケーションを部品化(コンポーネント化)し、それらを「サービス」として必要に応じて組み合わせて新たなシステムを構築します。そうすれば、「サービス」として外部から標準化された手順によって呼び出すことのできるソフトウェアの集合体として扱えます。それにより、ほかのソフトウェアと連携させて、システムの全体を構築できるのです。
SOAに関する詳しい説明は、以下の記事を参考にしてください。
■ JBossの「SOA」はソフトウェア群で成り立つ
![]() |
| 図2 JBoss Enterprise SOA Platformのアーキテクチャ(レッドハットの資料より抜粋) |
JBossには、「JBoss Enterprise SOA Platform」というソフトウェア群が存在します。これは、以下の構成で成り立っています。
- ビジネスプロセスの最適化とワークフローを提供する「JBoss jBPM」
- ユーザー固有のビジネスルールの定義と管理を行う「JBoss Rules」
- 各SOAコンポーネントおよび外部システムとの連携を図る「JBoss ESB」(後述)
- JBoss Enterprise Application Platform
■ 「JBoss Rules」「JBoss Drools」とは
JBoss Rulesは、ビジネスルールの定義や管理などを行うソフトウェアであり、標準規格ベースのオープンソースのビジネスルールエンジンです。
JBoss Rulesのコミュニティ版として、「JBoss Drools」があります。「ReteOO」と呼ばれる、JVMに対応したReteアルゴリズムをベースとするルールエンジンの実装です。また、JSR-94のJava Rule Engine APIも実装しています。Droolsでは、宣言型プログラミングを提供していて、ドメイン特化言語(DSL:Domain Specific Language)によって動作します。
次ページからは、このJBoss Drools(以下Drools)のサンプルを用いてビジネスルールについて説明したいと思います。
コラム 「データ形式を意識させないための“ESB”」 |
||
| 「ESB(Enterprise Service Bus)」とは、SOA実現に向けサービス同士を連携させるための技術です。SOAは、システムを「サービス」の集まりとして構築する考えと説明しました。ESBを使えば、この「サービス」の部分をデータや通信プロトコルを意識せずに連携できます。 これは、HTTPやSOAP、JMS(Java Message Service)などのプロトコルをESBに通すことで、データ形式の変換やデータの振り分けの非同期連携ができるからです。そのため、ESBは各種アプリケーションや業務サービスや業務コンポーネント、ミドルウェアを仲介し、業務プロセスの統合や自動化を担う役割です。 JBossには、このESBの技術を取り入れた「JBoss ESB」というものがあります。これは、JBoss Enterprise SOA Platformの一部に属し、複数のサービスを連携・動作させるためのソフトウェアバスとしての機能を持ちます。JBoss ESBの特徴的な機能として、以下が挙げられます。
|
| Index | ||||||||||
|
||||||||||
企業システムの常識をJBossで身につける バックナンバー 連載インデックスへ»
- 第1回 企業向けアプリの常識を学び、JBossの環境構築
- 第2回 “全部入り”のEclipseで学ぶ統合開発環境の常識
- 第3回 DI(依存性の注入)×AOP(アスペクト指向)の常識
- 第4回 企業でも情報整理で利用が進む「ポータル」の常識
- 第5回 非同期処理と疎結合ができる「メッセージング」の常識
- 第6回 いまさら聞けない「Webサービス」の常識
- 第7回 クラウドで再注目の「分散コンピューティング」の常識
- 第8回 悲観もあれば楽観もある「トランザクション」の常識
- 第9回 社内システムのセキュリティとアクセス制御の常識
- 第10回 内部統制に効く! ID管理・シングルサインオンの常識
- 第11回 「全体を見る」ためのビジネスプロセス・BPMの常識
- 最終回 急速なビジネスの変化に対応できる「BRMS」の常識
| Java Solution全記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -






