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"); } }