1.jBPM概要

つらつらとえらそうにやったこと、思ったことを個人的な目線で書いていきますよ。まずはjBPMのサイトはコミュニティ向けということでhttp://www.jboss.org/jbossjbpm/になります。(もしくはhttp://www.jp.redhat.com/jboss/middleware/jbpm/)jboss.orgの方にいくとjBPMの説明として

Multiple process languages embeddable in your Java application

と書いてあっていろいろな箱の絵があります。昔からリーダーのTomさんが言ってたことで実現したかったこと、つまりjBPMの魂ともいえると思うのは以下の2つだと思ってます。

1.Javaらしく簡単にワークフローと付き合おう
2.いろいろあるプロセス言語の基本はすべてState Machine.(状態マシン)

というところです。1.に関してはwicketの魂にも通じるものはあるかと思ってます。wicketのswing likeなオブジェクト指向アプローチなそれです。ワークフローも同じようにせっかくJava使ってるんだからJavaらしくワークフローを制御できなくてどうすんのよ、といったところです。先走って状態を永続化する部分について話するとご存知Hibernateをベースにしています。これは継承戦略などOO的な拡張性を利用者に提供してくれます。あまりやってる人は見かけまんが、プロセスを定義するクラス(ProcessDefinition)を継承してプロジェクト、対象業種用のプロセス定義クラスをextendsして用意してあとはHibernateの継承戦略を使えば簡単に新しいプロセス定義をワークフローとして動かすことができます。あ、Hibernateが難しすぎる、いろいろがんばるわりにはコストと効果が割りにあわないという声が聞こえそうですが、まずはjBPMと付き合う中でどれだけHibernateの知識が必要なのかもこの先書いていければと思っていますです。

2.に関してはワークフロー、BPEL(サービスオーケストレーション)、ページフローなどいろいろな記述があるけど基本は状態管理だよね,統一された基盤があってもいいよね、と。そこらへんがPVMにつながるところです。このPVM(ProcessVirtualMachine)をベースにするのがjBPM 4.0.0.GAになります。早いと年末のクリスマスプレゼントにアルファリリースが間に合うかもしれませんが今はsubversionにはあるけどまだ鋭意開発中といった感じです。

ということでjBPMのkeywordは繰り返しになりますが

★Javaらしく簡単にワークフローと付き合おう
★jPDL、XPDL、BPEL、ページフローなど複数のフロー言語の統一基盤の提供

です。