最近工作项目中需要用到工作流。于是找到了jbpm。关于jbpm的一些概念就不说了
1) 首先下载jbpm,这里我选择了jbpm4.4 从官网上可以下载 http://sourceforge.net/projects/jbpm/files/
下载完了之后,打开文件目录
doc: 文档说明
example:项目例子
install:安装的所需 , 如eclipse插件,数据库脚本
lib:依赖包
src:源码
2) 下载完了,开始吧 jbpm插件安装到eclipse中
Help-install new Software
3) 插件安装好了, 开始配置jbpm数据库 , 我用的sqlserver,数据库JBPMTEST 。
4) 数据库建好。新建一个java项目,导入jbpm 目录下lib的jar包以及 jbpm.jar到自己的项目环境中
5) 然后copy jbpm目录下jbpm-4.4examplessrc 下的
导入到自己项目中的src下
6) 最后修改一下 jbpm.hibernate.cfg.xml 这个配置文件,修改下数据库配置信息,这里需要注意一个属性
<property name="hibernate.hbm2ddl.auto">create-drop</property>
值为create-drop 会自动把数据库原先jbpm表删掉再新建
至此 ,jbpm配置也算搞定了 。下面开始写代码进行test吧
项目结构
建一个 test 的 jpdl 流程定义文件 ,JBPMTEST为程序入口进行测试
发布流程,
ProcessEngine engine;
public JBPMTEST() {
engine=new Configuration().getProcessEngine();
}
public void setUp(){
engine.getRepositoryService().createDeployment()
.addResourceFromClasspath("com/aoy/resource/jbpm/test.jpdl.xml").deploy();
}
查询已发布的流程
public void pdList(){
List<ProcessDefinition> definitions = engine.getRepositoryService().createProcessDefinitionQuery().list();
for (int i = 0; i < definitions.size(); i++) {
System.out.println(definitions.get(i).getDeploymentId());
System.out.println(definitions.get(i).getDescription());
System.out.println(definitions.get(i).getId());
System.out.println(definitions.get(i).getName());
}
}
启动流程实例
public void testStartProcessInstance(){
Map instanceVariables = new HashMap();
instanceVariables.put("leaver", "小明"); //请假者
instanceVariables.put("leaveDays", 7); //请假天数
instanceVariables.put("reason", "老婆生孩子"); //请假事项/原因
//启动流程实例
ProcessInstance processInstance
=engine.getExecutionService().startProcessInstanceByKey("test", instanceVariables);
System.out.println("流程实例"+processInstance.getId()+"创建!");
System.out.println(processInstance.getKey());
System.out.println(processInstance.getName());
System.out.println(processInstance.getProcessDefinitionId());
System.out.println(processInstance.getState());
System.out.println(processInstance.getPriority());
}
查询已经启动的流程实例
public void piList(){
List<ProcessInstance> pis=engine.getExecutionService().createProcessInstanceQuery().list();
for (ProcessInstance processInstance : pis) {
// System.out.println(processInstance.getIsProcessInstance());
System.out.println(processInstance.getId());
System.out.println(processInstance.getExecutionsMap());
}
mark 一下 初步了解 ,待续。。。