版本 :jbpm 3.1.4.jar,spring2.0,hibernate3.0 ,jboss4.0GA
1.下载spring-modules-jbpm31.jar放入WEB-INF/lib/下,文件下载地址:https://springmodules.dev.java.net/servlets/ProjectDocumentList?folderID=8839&expandFolder=8839&folderID=0,对于jbpm包中的jbpm-identity-3.1.4.jar不是必须。
2.配置spring配置文件:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingLocations">
<list>
<value>classpath:resources/**/*.hbm.xml</value>
<!-- JBPM hbm file -->
<value>classpath*:/org/jbpm/**/*.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<!-- jbpm 所使用的cache 不加会报org.hibernate.HibernateException: Could not instantiate cache implementation-->
<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
</props>
</property>
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://localhost:1433;database=dbtest">
</property>
<property name="username" value="sa"></property>
<property name="password" value=""></property>
<property name="maxActive" value="200"></property>
<property name="maxIdle" value="50"></property>
<property name="maxWait" value="60000"></property>
<property name="removeAbandoned" value="true"></property>
<property name="removeAbandonedTimeout" value="30"></property>
</bean>
<bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
<property name="sessionFactory" ref="sessionFactory" />
<property name="configuration" value="classpath:jbpm.cfg.xml" />
</bean>
<bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
<property name="jbpmConfiguration" ref="jbpmConfiguration"/>
</bean>
<!--workflowInstance为要使用jbpm的类-->
<bean id="workflowInstance" class="com.sunway.workflow.impl.WorkflowInstanceImpl">
<property name="jbpmTemplate" ref="jbpmTemplate" />
</bean>
3.使用jbpm,hibernate,spring集成时,需要使用jbpm.cfg.xml文件,该文件的内容可以从jbpm 3.1.4.jar的/org/jbpm/default.jbpm.cfg.xml的找到,具体内容可以根据个人情况而定,因为已经集成三部分内容,需要将该文件中的<string name="resource.hibernate.cfg.xml" value="hibernate.cfg.xml" />去掉,最终文件内容如下:
<jbpm-configuration>
<jbpm-context>
<service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory" />
<service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
<service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
<service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
<service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
</jbpm-context>
<!-- <string name="resource.hibernate.cfg.xml" value="hibernate.cfg.xml" />-->
<string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties" />
<string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties" />
<string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties" />
<string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml" />
<string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml" />
<string name="resource.parsers" value="org/jbpm/jpdl/par/jbpm.parsers.xml" />
<string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml" />
</jbpm-configuration>
注:如果自己的类中有的类名字与jbpm中的类名字冲突,则会报重复引入类的错误异常,虽然是在不同的包,暂时没有搞清什么问题,最终把类的名字改了,排除错误异常。