首先是jbpmConfiguration对象的创建:
static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
public void testJbpm(){
//然后我们把processDefinition里面相关的对象持久化到数据库里面去。
//流程定义文件里面有很多个概念,他有node,有transition,还有processDefinition,那么我们不需要一个
//一个保存,jbpm把保存这么多对象的方法封装成一个接口,叫做deployProcessDefinition。我们只要调用这个
//方法,传一个processDefinition对象,我们就能将他们存入到数据库里面去。
//这个首先第一步我们要得到一个processDefinition对象,然后我们把他部署到流程中去。
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("testJBPM/testJbpm.xml");
//我们要存就必须获得一个session对象,而jbpm已经把session对象封装到一个JbpmContext对象里面了。
//那么这个jbpmContext对象是怎么得到的呢,我们要先有一个jbpmConfiguration对象,我们要对数据库进行
//操作的时候一定要有jbpmConfiguration这个对象,用他来创建一个类似于hibernate当中的session一样的
//对象——jbpmContext。他是我们对数据库所有的操作的一个接口。
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try{
//然后部署的操作已经由jbpmContext给我们创建好了,我们只需要调一下他的一个方法就可以了。
jbpmContext.deployProcessDefinition(processDefinition);
}finally{
//最后我们还要对他close一下,就像我们用hibernate的时候要close session一样。
jbpmContext.close();
}
}
}
第二步我们也做完了,那么现在我们开始做第三步,也就是说,我们流程定义文件写好了,现在我们的系统当中有了这样一个报销流程。
那么就开始实际的去用她吧,一个人小报销了,那么她就要写一个报销的申请,但是这个 报销的申请写完了存到数据库当中了还不能算完了,应该和我们的这个流程关联起来啊,那么她应该怎么去关联呢,我们在建立这个申请单这个类的时候应该定义一 个processInstanceId属性,她是一个long型的。
记录这我们的这个流程实例的id,那么什么是流程实例 (processInstance)呢,她是我们工作流当中第二重要的概念,他和流程定义的关系就相当于对象和类之间的关系,类是一个抽象的东西,她定义 完了是什么也干不了的,要想用她内部定义的东西我们就要new出一个实例来,当然这个里面也是这样的。
那么也就是说,当我们创建这个报销申请的时候我们就要先根据这个流程‘new’出一个流程实例来存到数据库当中,然后在把她的id传给报销申请对象然后再将这个报销申请对象存到数据库当中。