好久没更新blog了,不是我忙,就是有点懒...哈哈,我写的文章水平比较菜,所以没任何人评论
好了,吐槽了一番觉得心情顿时开朗了,那么,接下来就进入正题把
JBPM,学技术首先知道这个技术是做什么用的,否则学起来你就会没头没脑了...
这里,个人的解释不是很全面,大家可以在网上搜索一下...知道个大概意思就行了
那么,如何使用JBPM进行开发呢?
首先,导入相关的JBPM的JAR包文件,如果不知道导入那些个JAR包就全部导入,我刚学JBPM就是全部导入的...
JAR文件导入后,我么首先创建JBPM的相关表把,JBPM总共18张表
@Test
public void createTable18(){
org.hibernate.cfg.Configuration cf = new org.hibernate.cfg.Configuration();
//加载jbpm.hibernate.cfg.xml
cf.configure("jbpm.hibernate.cfg.xml");
SessionFactory sf = cf.buildSessionFactory();
System.out.println("sf:"+sf);
}
这样我么就可以创建JBPM的表了...
表创建完毕之后,我么就开始进行JBPM的开发了,JBPM在牛,它也离不开一个对象,它叫做 “流程引擎”
创建流程引擎的核心对象
/**调用流程引擎,这是JBPM操作业务的核心*/
ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();
有了它,我么才可以操作其它的...
引擎已经有了,那么JBPM还有几个Service对象,它们分别是
管理部署对象和流程定义的service 管理与执行对象和流程实例相关的service 管理与任务的service 这么几个service
首先,我么需要先部署对象,那么如何部署呢?
在部署之前我么需要创建jbpm的xml文件,可以进行设置流程,
那么,下面就开始部署流程把
/**一:部署流程定义*/
@Test
public void deployeProcessDefinition(){
String deploy = processEngine.getRepositoryService() //管理部署对象和流程定义的service
.createDeployment() //创建部署对象
.addResourceFromClasspath("helloword/helloword.jpdl.xml") //加载资源文件
.addResourceFromClasspath("helloword/helloword.png") //加载资源文件
.deploy(); //完成部署
System.out.println("部署对象ID:" + deploy); //部署表的主键
}
当执行这段代码的时候,那么就在你的数据库中产生了相对应的数据了
JBPM4_DEPLOYMENT:
存放流程定义的部署记录。
JBPM4_DEPLOYPROP:
根据流程部署对象,存放已部署的流程定义的具体属性。(key,id,版本)
JBPM4_LOB:
存储流程定义相关的部署信息 (配置文件、图片)
(存放当发布一个png和xml文件后的流程定义后的记录)
部署完成之后,下面我么就需要启动一个流程实例
/**二:启动流程实例*/
@Test
public void startProcessInstance(){
String key = "helloword";
ProcessInstance pi = processEngine.getExecutionService() //管理与执行对象和流程实例相关的service
.startProcessInstanceByKey(key); //使用流程定义的key启动流程实例,因为它可以按照最新版本的流程定义启动
System.out.println("流程实例ID:" + pi.getId()); //流程实例表的主键
System.out.println("流程定义ID:" + pi.getProcessDefinitionId()); //helloword-1
}
我么可以到数据库中查看表
4、JBPM4_EXECUTION:
主要是存放JBPM4的执行信息,Execution机制代替了JBPM3的Token机制
执行完成之后,下面我么可以查看个人任务
/**三:查看我的个人任务*/
@Test
public void findMyPersonalTaskList(){
//指定任务办理人
//String userId = "张三";
String userId = "审批【总经理】";
List<Task> tasks = processEngine.getTaskService() //管理与任务的service
.findPersonalTasks(userId); //查询办理人的个人任务
if(tasks != null && tasks.size() > 0){
for(Task task : tasks){
System.out.println("任务ID:"+task.getId()); //任务表的主键
System.out.println("任务名称:"+task.getName()); //流程图的Name
System.out.println("任务的办理人:"+task.getAssignee()); //连线名称 System.out.println("任务处在当前的活动名称:"+task.getActivityName());
System.out.println("任务的创建时间:"+task.getCreateTime());
System.out.println("执行对象ID:"+task.getExecutionId()); //流程实例表主键
}
}
}
我么可以到数据库中查看
JBPM4_TASK:任务表
存放需要人来完成的任务Activities(活动),需要人来参与完成的任务Activity 被称为Task
最后一步,完成个人任务
/**四:完成我的个人任务*/
@Test
public void completeMyTask(){
String taskId = "30001"; //任务表主键
processEngine.getTaskService() //任务service
.completeTask(taskId); //指定任务ID完成任务
System.out.println("完成当前任务:任务ID是:"+taskId);
}
这个时候,你的任务就会被完成,完成之后如果有下一个节点将会指向下一个人的任务了...
在完成之后,我么可以去历史表查看相对应的数据
那么到底是看哪些历史表的数据呢?
JBPM4_HIST_PROCINST:
存放流程实例(Process Instance)的历史记录
JBPM4_HIST_TASK:
存放任务(Task)的历史信息
JBPM4_HIST_ACTINST:
存放活动(Activity Instance)的历史记录
JBPM4_HIST_DETAIL:
好的,今天就到此结束把...下次在见