ドキュメント管理サポート

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していて、全体的に結合度は非常に高いつくりになっている。

まともに動くんだろうか、テストクラスみて更に不安になった。。。