• jbpm4.4 demo2


    package cn.itcast.b_processdefinition;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.List;
    import java.util.Set;
    import java.util.zip.ZipInputStream;
    
    import org.jbpm.api.Configuration;
    import org.jbpm.api.ProcessDefinition;
    import org.jbpm.api.ProcessEngine;
    import org.junit.Test;
    
    /**
     * 管理流程定义有关的操作
     * 
     * <pre>
     * 	部署(添加)
     * 	删除
     * 	查询(查询所有、自定义条件查询)
     * 	获取部署添加的文件信息(查看流程图)
     *  !!没有更新操作!策略为:重新部署 + 版本递增。
     * 
     * </pre>
     * 
     * @author tyg
     * 
     */
    public class ProcessDefinitionTest {
    
    	private ProcessEngine processEngine = Configuration.getProcessEngine();
    
    	// 部署(添加)
    	@Test
    	public void testDeploy() throws Exception {
    		String deploymentId = processEngine.getRepositoryService()//
    				.createDeployment()// 创建一个部署对象
    				.addResourceFromClasspath("helloworld/helloworld.jpdl.xml")// 添加一个要部署的文件
    				.addResourceFromClasspath("helloworld/helloworld.png")// 添加一个要部署的文件
    				.deploy(); // 执行部署操作
    		System.out.println("部署成功:deploymentId = " + deploymentId);
    	}
    
    	// 部署(把多个文件打包为一个zip一起部署)
    	@Test
    	public void testDeploy_zip() throws Exception {
    		// 准备
    		ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream("d:/helloworld.zip"));
    		
    		// 部署
    		String deploymentId = processEngine.getRepositoryService()//
    				.createDeployment()// 创建一个部署对象
    				.addResourcesFromZipInputStream(zipInputStream)// 指定zip流
    				.deploy(); // 执行部署操作
    		System.out.println("部署成功:deploymentId = " + deploymentId);
    	}
    
    	
    	// 删除
    	@Test
    	public void testDelete() throws Exception {
    		// // 删除指定的部署对象,如果有关联的信息,就报错
    		// processEngine.getRepositoryService().deleteDeployment(deploymentId);
    		// // 删除指定的部署对象,如果有关联的信息,就一并删除
    		// processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
    
    		String deploymentId = "40001";
    		processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
    	}
    
    	// 查询流程定义(查询所有、自定义条件查询)
    	@Test
    	public void testFindAllProcessDefinition() throws Exception {
    		// 查询
    		List<ProcessDefinition> list = processEngine.getRepositoryService()//
    				.createProcessDefinitionQuery()//
    				// 过滤条件
    				// .processDefinitionId(processDefinitionId);
    				// .deploymentId(deploymentId)
    				// .processDefinitionKey(key)
    				// .processDefinitionName(name)
    				// 排序条件
    				// .orderAsc(property)
    				// .orderDesc(property)
    				// .orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)//
    				// 执行查询得到结果
    				// .page(firstResult, maxResults)
    				// .list()
    				// .count()
    				// .uniqueResult()
    				.list();
    
    		// 显示
    		for (ProcessDefinition pd : list) {
    			System.out.println("id=" + pd.getId()// 格式为:{key}-{version}
    					+ ", name=" + pd.getName()// .jpdl.xml中根元素的name属性的值。
    					+ ", key=" + pd.getKey()// .jpdl.xml中根元素的key属性的值。如果不写,默认为name属性的值。
    					+ ", version=" + pd.getVersion()// .jpdl.xml中根元素的version属性的值。如果不写,默认的效果为同名称的第一个version为1,以后的就递增。(一般不要写)
    					+ ", deploymentId=" + pd.getDeploymentId()); // 所属的部署对象的id
    		}
    	}
    
    	// 获取部署时添加的文件信息(查看流程图)
    	@Test
    	public void testGetProcessImage() throws Exception {
    		String deploymentId = "90001";
    		String resourceName = "helloworld/helloworld.png";
    
    		// 获取指定的部署对象中的所有的文件名称
    		//使用给定的id 返回所有的资源存储
    		Set<String> nameSet = processEngine.getRepositoryService().getResourceNames(deploymentId);
    		System.out.println("所有的文件:");
    		for (String name : nameSet) {
    			System.out.println("	" + name);
    		}
    
    		// 获取指定的部署对象中的指定名称的文件内容
    		InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, resourceName);
    
    		// 存到d:/中
    		FileOutputStream out = new FileOutputStream("d:/process.png");
    		byte[] buf = new byte[1024];
    		for (int len = -1; (len = in.read(buf)) != -1;) {
    			out.write(buf, 0, len);
    		}
    		in.close();
    		out.close();
    	}
    }
    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <process name="hellokey" key="hellokey" xmlns="http://jbpm.org/4.4/jpdl">
       <start g="115,21,48,48" name="start1">
          <transition g="-71,-17" name="to 提交申请" to="提交申请"/>
       </start>
       <end g="115,353,48,48" name="end1"/>
       <task assignee="员工" g="81,101,117,52" name="提交申请">
          <transition g="-78,-15" name="to 部门经理[审批]" to="部门经理[审批]"/>
       </task>
       <task assignee="部门经理" g="81,185,117,52" name="部门经理[审批]">
          <transition g="-95,-17" name="to 总经理[审批]" to="总经理[审批]"/>
       </task>
       <task assignee="总经理" g="81,269,117,52" name="总经理[审批]">
          <transition g="-47,-17" name="to end1" to="end1"/>
       </task>
    </process>
    

     下载demo

  • 相关阅读:
    SVN服务器搭建和使用(一)
    Python3.x和Python2.x的区别
    myeclipse启动不了的解决方法
    学习第49天
    学习第48天
    学习第47天
    学习第46天
    学习第45天
    学习第44天
    学习第43天
  • 原文地址:https://www.cnblogs.com/a757956132/p/4774909.html
Copyright © 2020-2023  润新知