企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
企業における「ビジネスルール」について、読者はどのようなものを想像しますか?
その名のとおり、「ビジネスにおけるルール」というものを想像するのではないでしょうか。企業を取り巻く環境は、常に急速な変化が伴います。このような変化に対応できるように、昨今の企業では、一定のビジネスルールを定義しておき管理するケースが増えています。
今回は、ビジネスルールの概要について説明し、企業におけるビジネスルールの扱い方をJBossのソフトウェアを用いて解説したいと思います。
前回の『「全体を見る」ためのビジネスプロセス・BPMの常識』では、ビジネスプロセスの管理であるBPMについて説明しました。これは、プロセスの合理化と効率化を図ることで、業務ワークフローの向上を目指すものと説明しました。
今回取り上げる「BRMS」は、「Business Rule Management System(ビジネスルールマネジメントシステム)」の略称です。このBRMSを説明する前に、まず「ビジネスルール」という言葉に焦点を当てて、その概要について説明したいと思います。
ここでいうビジネスルールとは、業務要件やビジネスの制約をルールとして定義することを意味しています。BRMSは、こうしたビジネスルールの考えを取り込んだ手法であり、これにより、ビジネスの業務ルールを細分化してシステムを管理します。
従来のシステム開発の手法では、業務要件やシステム仕様をプログラム上にハードコーディングすることで、システムを構築してきました。このような場合、システムの仕様変更が発生した際にシステムのソースコードを調査・修正するといった作業工程が発生します。
こうした作業工程が頻繁になると、開発コストの増大・生産性や品質の劣化・納期の遅延につながります。このような問題を解決するために、昨今の企業ではBRMSの手法を取り入れているところが増えてきました。
BRMSは、定義したビジネスルールをアプリケーションと切り離し、「ルールエンジン」によってビジネスルールを管理・実行することです。
このようにビジネス上のルールを一括して管理することで、アプリケーションから独立させて業務ロジックを開発し、実行できるようになります。それによりアプリケーションの変更個所が極小化できます。また、開発者ではなくビジネス担当者がビジネスルールを変更して実施できるのです。
ルールエンジンとは、ビジネスルールを実行するためのエンジンです。上記で説明したビジネスルールとアプリケーションを切り離す役割を担い、これにより、アプリケーションを変更せずに、ビジネスルールのみを変更できます。ビジネスルールを個別に扱うことで、複雑な条件分岐のロジックを組み合わせるため、結果としてアプリケーションを柔軟に扱えます。
BRMSの考えを取り入れたJBossのオープンソースで、「JBoss BRMS」というものがあります。
その主な特徴は、以下の3つです。
JBoss BRMSは、ビジネスルールを用いることで複雑になりがちなビジネスプロセスをシンプルにできるため、結果として、システム開発のコストを下げ、期間を短縮することにつながります。以下のイメージで動作します。
JBossには、ルールエンジンのためのソフトウェアとして「JBoss BRMS」以外にも「JBoss Rules」「JBoss Drools」があります。本稿では、その「JBoss Drools」を中心に説明していきたいと思いますが、その前に、これらのソフトウェアを含むJBoss Enterprise SOA Platformに焦点を当て、ビジネスルールと関連がある「SOA」という手法についても説明しておきます。
「SOA(Service Oriented Architecture)」とは、「サービス指向アーキテクチャ」と呼ばれ大規模なコンピュータ・システムを「モジュール」単位で扱うのではなく「サービス」の集まりとしてコンポーネント化する概念手法です。「サービス」については、連載第6回の『いまさら聞けない「Webサービス」の常識』も参考にしておいてください。
SOAでは、ビジネスルールから分離したアプリケーションを部品化(コンポーネント化)し、それらを「サービス」として必要に応じて組み合わせて新たなシステムを構築します。そうすれば、「サービス」として外部から標準化された手順によって呼び出すことのできるソフトウェアの集合体として扱えます。それにより、ほかのソフトウェアと連携させて、システムの全体を構築できるのです。
SOAに関する詳しい説明は、以下の記事を参考にしてください。
JBossには、「JBoss Enterprise SOA Platform」というソフトウェア群が存在します。これは、以下の構成で成り立っています。
JBoss Rulesは、ビジネスルールの定義や管理などを行うソフトウェアであり、標準規格ベースのオープンソースのビジネスルールエンジンです。
JBoss Rulesのコミュニティ版として、「JBoss Drools」があります。「ReteOO」と呼ばれる、JVMに対応したReteアルゴリズムをベースとするルールエンジンの実装です。また、JSR-94のJava Rule Engine APIも実装しています。Droolsでは、宣言型プログラミングを提供していて、ドメイン特化言語(DSL:Domain Specific Language)によって動作します。
次ページからは、このJBoss Drools(以下Drools)のサンプルを用いてビジネスルールについて説明したいと思います。
「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の特徴的な機能として、以下が挙げられます。
簡単なデータ変換のイメージを以下に示しておきます。
Copyright © ITmedia, Inc. All Rights Reserved.