Show Table of Contents
5.2. JBPM エンタープライズ設定
jBPM 設定は、
jbpm.cfg.xml に含まれています。
<jbpm-context>
<service name="persistence"
factory="org.jbpm.persistence.jta.JtaDbPersistenceServiceFactory" />
<service name="message"
factory="org.jbpm.msg.jms.JmsMessageServiceFactory" />
<service name="scheduler"
factory="org.jbpm.scheduler.ejbtimer.EntitySchedulerServiceFactory" />
</jbpm-context>JtaDbPersistenceServiceFactory は、Business Process Manager がJTAトランザクションに参加できるようにします。既存のトランザクションがある場合は、JTAの永続サービスがそのトランザクションに「紐付け」されますが、そうでない場合は新規トランザクションが開始されます。Business Process Manager のエンタープライズ bean はトランザクション管理をコンテナに委譲するよう設定されます。ただし、(Web アプリケーションなど) 有効なトランザクションがない環境においてJbpmContext を作成する場合、新規トランザクションが自動的に開始されます。JTA persistence service factory には、下記の設定可能なフィールドが含まれます。
- isCurrentSessionEnabled
- これが
trueに設定されている場合、Business Process Manager は、作動中のJTAトランザクションに関連付いた現在のHibernate セッションを使います。これはデフォルト設定です (詳細は http://www.hibernate.org/hib_docs/v3/reference/en/html/architecture.html#architecture-current-session を参照してください)。コンテキストセッションの仕組みを活用しアプリケーションの別の箇所で JBPMと同じセッションを使います。これはSessionFactory.getCurrentSession()への呼び出しを使うことで実行します。または、isCurrentSessionEnabled をfalseに設定し、JbpmContext.setSession(session)メソッドを使い当セッションを投入することで、JBPM へ Hibernate セッションを提供します。これにより、JBPM が同アプリケーションの他の部分と同じHibernate セッションを使うようにします。注記
Hibernate セッションは (永続コンテキストなどを使い) ステートレスセッション bean に注入可能です。 - isTransactionEnabled
- これが
trueに設定されると、JBPMはJbpmConfiguration.createJbpmContext()メソッドを使いコミットさせることで、Hibernateのtransaction APIからトランザクションを開始します(JbpmContext.close()が呼び出されると Hibernate セッションは終了します)。警告
Business Process Manager がEARとしてデプロイされている、つまりisTransactionEnabledがデフォルトでfalseに設定されている場合、これは望ましい動作ではありません(詳細はhttp://www.hibernate.org/hib_docs/v3/reference/en/html/transactions.html#transactions-demarcation を参照してください)。
JmsMessageServiceFactory は、Java Message Service インターフェースで公開された信頼性のある通信インフラストラクチャーを活用することで、asynchronous continuation messages をJobListenerBean に配信します。JmsMessageServiceFactoryは以下の設定可能なフィールドを公開します。
- connectionFactoryJndiName
- JNDIの初期コンテキストでのJMS 接続ファクトリ名で、デフォルトは
java:comp/env/jms/JbpmConnectionFactoryとなっています。 - destinationJndiName
- ジョブメッセージが送信されるJMSの宛て先名で、
JobListenerBeanのメッセージ受信元と一致します。デフォルトはjava:comp/env/jms/JobQueueとなっています。 - isCommitEnabled
- Business Process Manager がJava Message Service セッションを
JbpmContext.close()時にコミットすべきか指定します。JMSメッセージサービスが作成するメッセージは、現在のトランザクションがコミットする前に受信されるべきではありません。そのため、このサービスが作成したセッションは常に処理されます。デフォルト値はfalseですが、JTAトランザクション全体でJava Message Service セッションが制御されているため、使用中のconnection factoryがXA対応である場合に適しています。反対に、JMS接続ファクトリがXA対応でない場合、このフィールドをtrueに設定し、Business Process Manager がJMSセッションのローカルトランザクションを明示的にコミットするようにしてください。
EntitySchedulerServiceFactory を使いビジネスプロセスタイマーをスケジュールします。Enterprise Java Bean コンテナ提供の予定イベントに対してトランザクション通知サービス上に構築することで行います。EJBscheduler service factoryには、以下のような設定可能なフィールドがあります。
- timerEntityHomeJndiName
- JNDI初期コンテキストにおける
TimerEntityBeanのローカルホームインターフェース名で、デフォルト値はjava:comp/env/ejb/TimerEntityBeanとなっています。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.