笔者以前用的jbpm3.1.2。。。
使用jbpm的hibernate自己链接数据库,修改hibernate.cfg.xml数据库链接部分
- <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
- <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
- <property name="hibernate.connection.url">jdbc:jtds:sqlserver://localhost:1433/bizfocus52;user=sa;password=sa</property>
- <property name="hibernate.connection.username">sa</property>
- <property name="hibernate.connection.password">sa</property>
放在WEB-INF下的classes中。。。
然后将jbpm的jar和jbpm所依赖的jar文件拷到你的工程的lib下面。。
就可以用jbpm了。。。
如果你想用jbpm的time服务。。。那么需要在web.xml中添加如下的配置
- <servlet>
- <servlet-name>JbpmThreadsServlet</servlet-name>
- <servlet-class>org.jbpm.web.JbpmThreadsServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>JbpmThreadsServlet</servlet-name>
- <url-pattern>/threads</url-pattern>
- </servlet-mapping>
现在,升级到3.2.3
同样把hibernate.cfg.xml做一些修改。。。(注意:两个版本的所引用的mapping文件不一样,先删除以前的,然后修改新的)
放在classpath下面。。。
同时把jbpm.cfg.xml也放在classpath中。。
把jbpm的jar文件jpdl文件放在lib中。。一切没有问题。。
其实后面才是我想要说的。。
关于jbpm的提供的源码jpdl。。。
里面没有带build.xml文件。。。自己建立了一个。。。
用ant一下。发现少了包(commons-fileupload-1.0.jar和jackrabbit-core-1.3.3.jar)
注:jackrabbit-core-1.4.6.jar这个去替换jackrabbit-core-1.3.3.jar报错。。看来jackrabbit-core-1.3.3.jar是兼容3.3.2的jbpm。。
另外。。感觉3.1.2和3.2.3所用的jdk的版本不一样。。
3.2.3中。。。
- package org.jbpm.jpdl.el.impl;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- public class BeanMethod {
- Method method;
- public BeanMethod(Method method) {
- this.method = method;
- }
- public Object invoke(Object object) throws InvocationTargetException, IllegalArgumentException, IllegalAccessException {
- log.debug("invoking expression method '"+method.getName()+"'");
- return method.invoke(object,null);
- }
- private static Log log = LogFactory.getLog(BeanMethod.class);
- }
第19行代码:return method.invoke(object,null);
编译不能通过。。
第19行代码:return method.invoke(object);
编译通过。。。
另外关于3.2.3的time服务,是否需要配置servlet。。尚未试验。。大家可以试试。。
另外:有个问题好像是jbpm的bug。。。
用当前任务实例,取上个任务节点(同一个流程实例中)的用户(actor-id),总是找不到。。。
tasks.getPreviousActorId();
获取的是null。。。。我觉得是jbpm的一个bug