急速なビジネスの変化に対応できる「BRMS」の常識:企業システムの常識をJBossで身につける(終)(1/4 ページ)
企業向けアプリケーションのさまざまな“常識”を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は、ビジネスルールを用いることで複雑になりがちなビジネスプロセスをシンプルにできるため、結果として、システム開発のコストを下げ、期間を短縮することにつながります。以下のイメージで動作します。
「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」はソフトウェア群で成り立つ
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の特徴的な機能として、以下が挙げられます。
- XML・CSV形式、のデータ変換機能
- SOAP、WSDL、JAXB、BPELなどの連携
- メッセージ配信機能(JMS、FTP、HTTPなど)
簡単なデータ変換のイメージを以下に示しておきます。
Copyright © ITmedia, Inc. All Rights Reserved.