Skip to content

マガジン(米国翻訳) | ニュースレター(日本)のトップ

レッドハットニュース
レターの新規御登録

バックナンバー


第15号(2007年12月)
JBoss

記事:JBoss jBPMの利用のススメ



〜 業務フローをアプリケーションで実装する最も簡単な方法 〜

● 業務フローの実装
みなさんは、業務フローをどのようにシステムとして実装していますか?
  当然のことではありますが、業務システムを構築するためには、まず、最初に業務分析のフェーズがあります。業務分析では、As-ISの業務を洗いだし、To-BEの業務とその業務フロー、および業務で使う情報をデータ項目として分類していきます。
それらの成果物からシステムの概要設計や詳細設計、そして、システムの実装という大きな流れになります。
 さて、このようなシステム開発の状況を考えたとき、To-BEで検討された業務フローをシステム化しなければなりませんが、システムとしての実装方式は、どのような方式が考えられるでしょうか?

各サブシステム間で扱うデータをバッチやストアドプロシージャーで必要なテーブルに移送することで対応 テーブルに業務フローの状態を示すフラグを定義し、アプリケーションで制御する アプリケーションのプログラムロジックのIf-THEN-ELSEで記述している

スクラッチから構築される業務アプリケーションでは、上述のような実現方式をはじめとした、かなり柔軟性に欠けた実装が多いのではないでしょうか? データのマスタ登録や更新など機能でない限り、システムの大小に関わらず業務フローは何らかの方式で実装しなければなりません。もう少し柔軟な実現方式は、ないものでしょうか?

● BPM(Business Process Management)を使う
柔軟な実現方式は、あります。BPM(Business Process Management)を提供する製品を利用すれば、業務フローをBPM製品が提供する機能に「業務プロセス」という方式で定義することで、実装する業務ロジックから、その多くを切り離すことができます。業務フローは、BPM製品と呼ばれる製品側の機能に任せることで、その柔軟性を確保することができます。
そのような観点の期待から最近は、BPM製品というものが非常に注目を浴びています。昨今では、多くのベンダからBPM(Business Process Management)製品がリリースされており、導入を考えておられる方や実際に検証・開発で利用されている開発者の方も多くいらっしゃることでしょう。

● 本当に必要な機能だけでよいBPM製品
 BPMは、業務プロセスの「分析」「設計」「実行」「モニタリング」「改善・再構築」といったマネジメントサイクルを適応した業務フロー全体を最適化するためのツールとして位置づけられることが多いため、非常に多くの機能を提供しており、かつ、複雑で高価な製品が多いという側面もあります。実際、いくつかのベンダのBPM製品は、多機能で見栄えの良いグラフィカルユーザインタフェース(GUI)を持ち、中には、ほとんどの機能がGUIからの設定で実現してしまい、ほとんど開発する必要がないケースもあります。もちろん、これらの製品が顧客の要求に合致すれば、すばらしい効果を発揮するのでしょう。

 しかし、ビジネスプロセスはユーザ毎に異なるため、定形化プロセスをどうしてもカスタマイズ(つまり開発作業)する必要が発生します。また、いざ利用してみると本当に必要な機能が備わっていなかったり、カスタマイズするとなると膨大な手間と時間がかかったり、開発には独自仕様言語や手法を習得する必要があったりするなど様々な問題があるのが本当のところではないでしょうか?最終的には「一部の機能しか使えなかった」ということもよくある話でしょう。中には、いっそのこと、自分達で作ってしまった方が早いのではないかと思われたことはないでしょうか?

 そうです。自分達で作ってしまった方が早く、かつ、実際の業務に柔軟で、コストも安くできることも多くあります。しかし、冒頭で検討した従来の実現方式では柔軟性を欠いてしまいます。業務フローの定義や実行、その変化を柔軟性を担保できるような便利なプログラムライブラリが欲しいところです。このような開発者の悩みを解決してくれる便利なライブラリがJBoss jBPM です。前置きが長くなりましたがJBoss jBPMは、これまでのような高価で複雑かつ柔軟性に欠いたBPM製品に不満をお持ちだった開発者の方に打って付けなツールといえます。

JBoss jBPMとは
 誤解を恐れずに言うならば、jBPMはBPM製品として必要かつ最低限でありながらも、十分な機能を備えたPure Javaワークフローライブラリと言うほうが特徴を的確にとられることが出来るのではないかと思います。
 実際、jBPMはJavaライブラリとして提供されており、Java SE環境をはじめ、JBoss Enterprise Application PlatformはもちろんBEA WebLogic ServerやIBM WebShpereのようなJava EEアプリケーションサーバで動作させることが可能です。jBPMのCoreライブラリとしては主に、事前に定義された業務プロセスを読み込み、実行、および管理を行う機能を持ちます。これらの機能を利用するためにjBPMが提供しているJavaのAPIを業務アプリケーションから利用することが可能です。jBPMが提供するAPIは、Pure Javaなライブラリです。Javaエンジニアであれば抵抗なく利用できるAPIが提供されています。従ってスムーズに開発に入ることができ、業務アプリケーションにある業務フローを柔軟にシステム化することができます。

JBoss jBPM アーキテクチャ
jBPMのアーキテクチャは、前述したjBPM Coreライブラリ、業務プロセスのレポジトリおよびランタイム情報の永続化する際に利用されるjBPM DB、業務プロセスを安易に定義するためのプロセスデザイナの3つに大きく分かれます。



業務プロセスは、プロセスデザイナと呼ばれるEclipse のプラグインとして提供されるGUIツールを利用することで定義できます。そして、定義されたプロセスはその実行時に各ノードから定義されているオブジェクトやサービスを呼び出しながら、そのプロセスの状態を進めていきます。もちろん、プロセスの状態は永続化されていますので、長時間にわたる業務プロセスを実行することも可能です。また、クラスタ環境での動作もサポートしています。また、業務アプリケーションやデータベース、他システムの状態の変化を検知し、任意のタイミングで業務プロセスを起動するようなイベント駆動型の仕組みも提供しています。さらに、定義された業務プロセスが、業務フローの変更に伴ってプロセスの流れを変更しなければならない事態になってもJBoss jBPMが管理する業務プロセスは、複数のバージョンを同時に実行できるため、既に進捗中の業務プロセスには全く影響を与えずに新しい業務プロセスを定義、実行を開始することも可能です。当然ではありますが、実行中のプロセスを管理するためのGUIも提供しています。

JBoss jBPM の特徴的な機能
JBoss jBPMは、PureなJavaライブラリであるにもかかわらず、下記のような強力な機能も提供しています。

機能一覧リスト
業務プロセスの実行とコンテキスト管理(永続化)
業務プロセスのバージョニング
タスク管理とタスクの割り当て
イベントハンドリングによる非同期連携
ビジネスカレンダに対応したスケジュール処理
業務プロセス分析のための情報取得機能
GUIデザイナーによる業務プロセス作成
ツールによる業務プロセスの検証
例外のハンドリング
認証、認可とスイムレーン機能

 上記の機能をご覧頂いて気づいて頂いたでしょうか?業務プロセスをシステム化していくための必要機能は、ほぼすべて網羅しています。逆に余計な機能は提供していません。すべては、業務アプリケーションを記述するJavaのプログラムからAPI経由でアクセスできます。jBPMは、アプリケーションの設計者や開発者にとって非常にわかり安く、柔軟にカスタマイズできる拡張性を持っています。

JBoss jBPM は、レッドハットからどのようにサポートされるのでしょうか?
既に述べたようにJBoss jBPMは、Java SE環境でも動作するPure Javaで記述されたエンタープライズ向けのフレームワークとして提供されます。つまり、動作する環境は、Java SEであるため、JBoss Enterprise Application Platform だけでなく、BEA WebLogic Server や IBM WebSphere Application Server のような基盤で利用される場合においても、レッドハットからサブスクリプションを提供することは可能です。JBoss jBPMのサポートを受けることのできるサブスクリプションの種類は、以下の通りです。
詳細は、次のURLをご覧ください。
http://www.jp.redhat.com/jboss/faq1.html#18

開発サブスクリプション:
 Red Hat Developer Professional サブスクリプション
 Red Hat Developer Enterprise サブスクリプション

製品サブスクリプション:
 JBoss jBPM サブスクリプション

レッドハットでは、これらのサブスクリプションを驚くほどの低価格で提供しています。
詳細は、こちら(http://www.jp.redhat.com/contact/) からお問い合わせください。

最後に
 ここまで読み進めていただいた方の中には既にお気づきの方もいらっしゃることと思いますが、JBoss jBPMは、業務アプリケーションの中の業務フローを実現するためのワークフローエンジンだけでなく、様々なシステムをサービスとして統合していくための環境、つまり、SOA実現のためのサービスオーケストレーションツールとしても利用することが可能です。「あのシステムのあの部分にこのjBPMがはまるのではないか?」と考えられた方がいらっしゃれば、jBPMの利用を是非お勧めいたします。

レッドハット株式会社/ニュースレター編集部