13.3. Spring

Spring XML 設定ファイルを使用すると、ナレッジベースやセッションを Spring 環境で簡単に定義、設定できるようになります。これにより、セッションへのアクセスや Spring アプリケーション内からのプロセスの呼び出しが可能になります。
以下の Spring の設定ファイルの例では、クラスパスからロードされるプロセス定義を 1 つ持つナレッジベースをもとに、新しいセッションを設定しています。

例13.2 Spring 設定ファイルの例

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jbpm="http://drools.org/schema/drools-spring"       
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                           http://drools.org/schema/drools-spring org/drools/container/spring/drools-spring-1.2.0.xsd><jbpm:kbase id="kbase"><jbpm:resources><jbpm:resource type="BPMN2" source="classpath:HelloWorld.bpmn2"/></jbpm:resources></jbpm:kbase><jbpm:ksession id="ksession" type="stateful" kbase="kbase" /></beans>

   
  
    
      
    
  

  


以下のコードでは、上記の Spring 設定をロードして、セッションを取得し、プロセスを開始します。
ClassPathXmlApplicationContext context = 
    new ClassPathXmlApplicationContext("spring-conf.xml");
StatefulKnowledgeSession ksession = (StatefulKnowledgeSession) context.getBean("ksession");
ksession.startProcess("com.sample.HelloWorld");
ドメインオブジェクトの 1 つにセッションを注入できる点 (例: 設定ファイルに以下のコード断片を追加) にも留意してください。
<bean id="myObject" class="org.jbpm.sample.MyObject"><property name="session" ref="ksession" /></bean>
  

結果、セッションはドメインオブジェクトに注入され、セッションに直接アクセスできるようになります。例:
public class MyObject {
  private StatefulKnowledgeSession ksession;
  public void setSession(StatefulKnowledgeSession ksession) {
    this.ksession = ksession;
  }
  public void doSomething() {
    ksession.startProcess("com.sample.HelloWorld");
  }
}