ドキュメント管理サポート
v3.2からJSR-170(Java Contents Repository:JCR)のサポートをするようになりました。jBPMのマニュアルにも一応、RIのApache Jackrabbitを紹介している。で、何ができるかというとjBPMのコンテキスト(process instance)にドキュメントも保存/管理できますよーというお話。ユースケースとしてはドキュメントの承認管理プロセスをあげています。JSR170でもマルチバージョンで管理できる仕様になっているので、ちょうどいいということでのサポート。
でもね....
使い方としてはこんな感じ
ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("doc"); JcrService jcrService = (JcrService) jbpmContext.getServices() .getService(Services.SERVICENAME_JCR); Session session = jcrService.getSession(); Node rootNode = session.getRootNode(); Node processInstanceNode = rootNode.addNode("sample"); Node documentNode = processInstanceNode.addNode("doc"); ContextInstance contextInstance = processInstance.getContextInstance(); contextInstance.setVariable("doc", documentNode);
です。見てわかるとおりJCRの知識が必要です。。。またJcrServiceがJCRに依存しています。つまりjBPMはJCRライブラリが必須です。なぜBPELサポートのようにjarを切り抜かなかったんだー!!しかもJackRabbitはそのままじゃ使いづらい、jdbcコネクションプールもjackrabbit内部で管理していたり。中でもってるSession(XASessionImpl)がXAResourceをimplしていて、全体的に結合度は非常に高いつくりになっている。
まともに動くんだろうか、テストクラスみて更に不安になった。。。