這個禮拜一直在研究jbpm4.4,沒事寫寫東西希望能對看帖的人一些幫助。。。
好了廢話不多說了 下面就跟我一起把jbpm整合到ssh2框架中吧!!!
整合前,很有必要先對JBPM有個感性的認識。JBPM在管理流程時,是需要數據庫表的支持的,因爲底層的邏輯有那麼複雜。默認下載下來的配置,使用的是內存數據庫。實際應用中,我們就需要連接到我們的數據庫裏來。所以要事先建好相關的表,相應的sql文件在/jbpm-4.4/install/src/db下,當然,你也可以使用hibernate的hibernate.hbm2ddl.auto自動建表,本人建議自己用建表語句。
研究過JBPM的人都知道,JBPM在操作流程時,一切都是基於ProcessEngine對象,所以整合的思路很簡單,只要我們能讓Spring創建出ProcessEngine,整合就算是邁出一大步,我們先在spring配置文件(applicationContext.xml)里加入如下代碼:
<!--jbpm4.4工作流 -->
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
<property name="jbpmCfg" value="jbpm.cfg.xml" />
</bean>
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
在這裏創建processEngine 對象,在這裏用到spring-jbpm4.cfg.xml,它的內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>
<process-engine-context>
<string name="spring.cfg" value="spring-jbpm4.xml" />
</process-engine-context>
<import resource="jbpm.default.cfg.xml" />
<import resource="jbpm.tx.spring.cfg.xml" />
<import resource="jbpm.jpdl.cfg.xml" />
<import resource="jbpm.bpmn.cfg.xml" />
<import resource="jbpm.identity.cfg.xml" />
<import resource="jbpm.businesscalendar.cfg.xml" />
<import resource="jbpm.console.cfg.xml" />
<!--
<import resource="jbpm.jobexecutor.cfg.xml" />
-->
</jbpm-configuration>
看到這裏,或許你又會問:spring-jbpm4.cfg.xml裏又引用了那麼多的文件,這些文件在哪裏?這些文件,你不用擔心,他們都在jbpm.jar文件裏,這不是我們管的事。
到這裏,算完了嗎?還沒有!前面說過,JBPM要數據庫表的支持才能工作,JBPM又是使用Hibernate操作數據庫,就不免要配置Hibernate的表與實體的映射文件,如下:
<property name="mappingLocations">
<list>
<value>classpath:jbpm.execution.hbm.xml</value>
<value>classpath:jbpm.history.hbm.xml</value>
<value>classpath:jbpm.identity.hbm.xml</value>
<value>classpath:jbpm.repository.hbm.xml</value>
<value>classpath:jbpm.task.hbm.xml</value>
</list>
</property>
如果用的是mysql數據庫的話那麼就要把hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
否則的話會出現問題的
哈哈,到此,整合所需要做的配置,就是這些了,關鍵一步走完了,是不是很簡單呢?
下面一步,就是jar包的添加,如果你已經整合了SSH2,那麼你只需要再添加jbpm.jar, juel-api.jar,juel-engine.jar,juel-impl.jar,mail.jar即可
注:如果您用的是tomact6.0以上版本的話就必須把juel-api.jar,juel-engine.jar,juel-impl.jar這三個jar包添加到tomact的lib裏刪除原來的el-api.jar
如果你還是用的是tomact5的話就直接把這些jar添加到項目的lib下就可以了
我們部署到tomcat跑一下,看是否能成功。跑起來後,我們再做下測試,新建一個action,看代碼裏能否獲取到processEngine對象。
public class TestAction extends ActionSupport
{
private ProcessEngine processEngine;
public ProcessEngine getProcessEngine()
{
return processEngine;
}
/**
* 測試是否整合成功
*/
public String testJbpm()
{
System.out.println("整合成功");
System.out.println("processEngine: "+processEngine);
return SUCCESS;
}
public void setProcessEngine(ProcessEngine processEngine)
{
this.processEngine = processEngine;
}
}
哈哈。整合完畢!