jbpm管理流程定义
2016-09-18 21:21
357 查看
jbpm工作的过程是创建工作流引擎,部署流程定义,启动流程实例。那么流程定义又是如何管理的呢?
要管理流程定义,首先得了解什么是流程定义,流程定义即ProcessDefinition。工作流程是执行一项工作的步骤,是一个规则,那么流程定义就是用来定义或者描述这个规则的对象。
jbpm工作流需要数据库中十八张表来管理工作流执行过程中的数据,涉及到流程定义的表有以下几张:
JBPM4_DEPLOYMENT:部署表,用来描述一次部署
JBPM4_LOB:仓库表,存放了流程定义文档(xml,png)
JBPM4_DEPLOYPROP:部署属性表
流程定义管理的过程分为几部分:
1、部署流程定义
2、查询流程定义
3、删除流程定义
4、查看流程图
addResourceFromClasspath(resource):从classpath下添加,流程图画好后,会生成一个xml文件和一个png文件,把他们放到classpath下,可以直接用该方法读取文件部署。
addResourceFromInputStream(resource,inputstream):添加一个文件,使用InputStream添加文件,只能添加一个文件。
addResourceFromZipInputStream(inputstream):添加一个zip文件,里面可以有多个文件,也可以有文件夹。
查询部署时可以查询所有部署,也可以根据ID查询某一个部署。查询部署是从JBPM4_DEPLOYMENT表中得到的。
查询流程定义也分为几种情况:
流程定义管理这些内容中,重要的是部署和删除流程定义,这是在系统中经常用到的方法。至于查看流程定义和查看流程图,相对来说次要一点。
要管理流程定义,首先得了解什么是流程定义,流程定义即ProcessDefinition。工作流程是执行一项工作的步骤,是一个规则,那么流程定义就是用来定义或者描述这个规则的对象。
jbpm工作流需要数据库中十八张表来管理工作流执行过程中的数据,涉及到流程定义的表有以下几张:
JBPM4_DEPLOYMENT:部署表,用来描述一次部署
JBPM4_LOB:仓库表,存放了流程定义文档(xml,png)
JBPM4_DEPLOYPROP:部署属性表
流程定义管理的过程分为几部分:
1、部署流程定义
2、查询流程定义
3、删除流程定义
4、查看流程图
部署流程定义
部署流程定义有三种方式,addResourceFromClasspath(resource):从classpath下添加,流程图画好后,会生成一个xml文件和一个png文件,把他们放到classpath下,可以直接用该方法读取文件部署。
public void testDeployFromClasspath(){ processEngine.getRepositoryService() .createDeployment() .addResourceFromClasspath("qingjia.jpdl.xml") .addResourceFromClasspath("qingjia.png") .deploy(); }
addResourceFromInputStream(resource,inputstream):添加一个文件,使用InputStream添加文件,只能添加一个文件。
public void testDeployFromInputStream(){ InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("qingjia.jpdl.xml"); processEngine.getRepositoryService() .createDeployment() .addResourceFromInputStream("qingjia.jpdl.xml", inputStream) .deploy(); }
addResourceFromZipInputStream(inputstream):添加一个zip文件,里面可以有多个文件,也可以有文件夹。
public void testDeployFromZipinputStream(){ InputStream in = this.getClass().getClassLoader().getResourceAsStream("qingjia.zip"); ZipInputStream zipInputStream = new ZipInputStream(in); processEngine.getRepositoryService() .createDeployment() .addResourcesFromZipInputStream(zipInputStream) .deploy(); }
查询流程定义
查询流程定义也分为两部分,一部分是查询部署,另外一部分是查询流程定义。查询部署时可以查询所有部署,也可以根据ID查询某一个部署。查询部署是从JBPM4_DEPLOYMENT表中得到的。
/** * 查询所有的部署 */ @Test public void testQueryAllDeploy(){ List<Deployment> deploymentList = processEngine.getRepositoryService() .createDeploymentQuery() .list(); } /** * 根据部署ID查询部署 */ @Test public void testQueryDeployByID(){ Deployment deployment = processEngine.getRepositoryService() .createDeploymentQuery() .deploymentId("10001") .uniqueResult(); }
查询流程定义也分为几种情况:
/** * 查询所有的流程定义 */ @Test public void testQueryAllPD(){ List<ProcessDefinition> pdList = processEngine.getRepositoryService() .createProcessDefinitionQuery() .list(); } /** * 根据部署ID查询流程定义 */ @Test public void testQueryPDByDeploymentId(){ ProcessDefinition pd = processEngine.getRepositoryService() .createProcessDefinitionQuery() .deploymentId("30001") .uniqueResult(); } /** * 根据流程定义ID查询流程定义,也就是JBPM4_DEPLOYPROP中的id,一般为“流程定义名称-版本号” */ @Test public void testQueryPDByPDID(){ ProcessDefinition pd = processEngine.getRepositoryService() .createProcessDefinitionQuery() .processDefinitionId("qingjia-2") .uniqueResult(); } /** * 根据流程定义名称查询流程定义,一般为JBPM4_DEPLOYPROP中的OBJNAME_ */ @Test public void testQueryPDByPDKEY(){ List<ProcessDefinition> pdList = processEngine .getRepositoryService() .createProcessDefinitionQuery() .processDefinitionKey("qingjia") .list(); for(ProcessDefinition pd:pdList){ System.out.print("deploymentId:"+pd.getDeploymentId()+","); System.out.print("imageURL:"+pd.getImageResourceName()+","); System.out.print("key:"+pd.getKey()+","); System.out.println("version:"+pd.getVersion()); } }
删除流程定义
如果要删除流程定义,就是删除该次部署,因为jbpm的API没有提供删除流程定义的方法。或者根据流程定义名称获取所有流程定义,然后遍历流程定义获取它的流程部署,然后删除掉流程部署。public void testDeleteDeployment(){ processEngine.getRepositoryService() .deleteDeploymentCascade("10001"); }
查看流程图
/** * 查询流程图 */ @Test public void testShowImage() throws Exception{ InputStream inputStream = processEngine.getRepositoryService() .getResourceAsStream("20001", "qingjia.png"); OutputStream outputStream = new FileOutputStream("c:/processimg.png"); for(int b=-1;(b=inputStream.read())!=-1;){ outputStream.write(b); } inputStream.close(); outputStream.close(); }
流程定义管理这些内容中,重要的是部署和删除流程定义,这是在系统中经常用到的方法。至于查看流程定义和查看流程图,相对来说次要一点。
相关文章推荐
- jBPM4.4之流程定义管理
- JBPM4.4:API风格、管理(部署、删除、更改、查询(文件资源、活动坐标))流程定义
- jBPM4.4之流程定义管理
- java流程管理 之 jbpm流程定义、发布、查看、删除
- JBPM之流程定义管理,流程执行管理
- JBPM学习(2):管理流程定义
- JBPM学习(三):管理流程定义
- Jbpm笔记之一 -- 流程定义管理( 部署和定义查询、删除、查看流程图)
- jBPM流程定义语言(JPDL)
- 用JBoss jBPM管理业务流程
- JBPM的流程定义
- Jbpm3.2 发布定义好的流程文件
- 用JBoss jBPM管理业务流程(转载)
- jBPM工作流程定义
- 关于在表单中启动其它流程的方法|工作流引擎|BPM|JBPM|流程管理
- 一个 jbpm 流程定义,关于回退,定时的综合运用
- jbpm的流程定义版本策略
- Jbpm流程定义的打包和部署
- 传智播客oa学习,部署和管理流程定义
- jbpm的流程定义版本策略