jBPMはタスク指向。

この前書いたことの延長。jBPMはProcessInstanceが基本で、更に人の介入が必要なもの(画面入力など.XPDLでいうFinish Mode=manual)に関してはTaskInstanceがあって、それをDBに持っている。

jBPMはここからAPI経由で情報を取得することで、現在、進行中(タスク)の一覧を把握し、それに紐づくProcessInstanceのidを引っ張ってこれる.
後はアプリケーションを実行して、そのProcessInstanceからTokenを取得して、signal送って先に進める。このタスクベースっていうところがまず、現行のシステムではあまりないので、とっつきにくいかもしれないけど、(jBPMではJSFコンポーネントとして提供)、ひとついいところがある。このtaskの一覧(id付き)からprocessInstance拾ってアプリケーションを実行して、よければsignal送る。Exceptionの場合は先に進めない、っていうのをAOPで外だしできる.Service層にProcessInstance(jBPM API)が汚染しないようにできる。実際はそんなに簡単じゃないけど、split,join,sub process,contextVariableを考慮するとね。Service層書く人はjBPM APIとか知らなくてOK.