Activiti学习笔记四-开发部署zip格式的流程文件

上章我们学习了bpmn文件的部署,下面我们开始学习部署带有流程图的流程,也就是打包后的zip文件。打包文件我们使用ant脚本来实现,具体的ant知识请自行百度。

      第一步:建立如图的结构目录


为了方便管理脚本,我采用每个bpmn对应一个打包脚本。

       第二步:copy上章设计的bpmn文件并改名为:MyProcessZip.bpmn,对应的编辑器会自动生成png文件

       第三步:编写ant脚本,build.xml脚本内容如下

<span style="font-family:Microsoft YaHei;font-size:18px;"><project name="activiti" default="workflow.package.MyProcessZip">
	<property name="workflow.diagrams" value="../"/>
	<property name="workflow.deployments" value="../../deployments" />
	
    <target name="workflow.package.MyProcessZip">
    	<zip destfile="${workflow.deployments}/simpleProcessZip/myProcessZip.zip"
    		basedir="${workflow.diagrams}/simpleProcessZip" update="true" includes="*.bpmn,*.png">
    	</zip>
    </target>
</project>
</span>

对应的路径请各位修改为自己的文件路径。

       第四步:运行脚本,生成zip文件

       对着build.xml文件点击右键点击run as => Antbuild,控制台会输出脚本运行结果,如果没有异常的话,我们刷新工程,在deployments下的simpleProcessZip路径下可以看到压缩好的zip文件,如下图所示:


到这里,打包zip文件的任务就完成了,下面我们开始部署这个zip文件。

新建一个java文件BpmDefinitionZipTest,继承ActivitiTestCase类,BpmDefinitionZipTest.java文件内容如下:

 

<span style="font-family:Microsoft YaHei;font-size:14px;">package activiti.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;

import javax.annotation.Resource;

import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.task.Task;
import org.junit.Test;

public class BpmPersonProcessZipTest extends ActivitiTestCase{

	@Resource
	private RepositoryService repositoryService;
	@Resource
	private RuntimeService runtimeService;
	@Resource 
	private TaskService taskService;
	@Resource
	private HistoryService historyService;

	@Test
	public void testDeploy(){
		String filePath="/deployments/simplePersonProcess/personProcessZip.zip";
		try {
			InputStream is = Class.class.getClass().getResource(filePath).openStream();
			
			// 部署流程定义1
			//repositoryService.createDeployment().addZipInputStream(new ZipInputStream(is)).deploy();
			
			// 部署流程定义2
			DeploymentBuilder depBuilder = repositoryService.createDeployment().addZipInputStream(new ZipInputStream(is));
			depBuilder.name("personProcessZip").deploy();//自定义的流程名称
			
			// 启动流程实例 
			String procId = runtimeService.startProcessInstanceByKey("myPersonProcess").getId();//这个为流程定义文件中process的Id
			
			/******************第一个任务开始******************************/
			List<Task> taskList = taskService.createTaskQuery().taskCandidateUser("fozzie").list();
			for (Task task : taskList) {
				 
	            System.out.println("Following task is available for fozzie: " + task.getName());
	 
	            // 认领任务这里由gonzo认领,因为gonzo是sales组的成员
	            taskService.claim(task.getId(), "fozzie");
	        }

			//查看gonzo是否能够获取该任务
			taskList = taskService.createTaskQuery().taskAssignee("fozzie").list();
			System.out.println("fozzie当前的任务数:" + taskList.size());
			for(Task task : taskList){
				System.out.println("the task name is :" + task.getName());
				 // 执行(完成)任务
				taskService.complete(task.getId());
			}
			System.out.println("fozzie当前的任务数:" +  taskService.createTaskQuery().taskAssignee("fozzie").count());
			/******************第一个任务结束******************************/
			
			/******************第二个任务开始******************************/
			taskList = taskService.createTaskQuery().taskCandidateUser("gonzo").list();
			for(Task task : taskList){
				 System.out.println("Following task is available for gonzo: " + task.getName());
				 taskService.claim(task.getId(), "gonzo");
			}
			
			//查看kermit是否能够获取改任务
			taskList = taskService.createTaskQuery().taskAssignee("gonzo").list();
			System.out.println("gonzo当前任务数:" + taskList.size());
			for(Task task : taskList){
				System.out.println("the task name is :" + task.getName());
				taskService.complete(task.getId());
			}
			System.out.println("gonzo当前任务数:" +  taskService.createTaskQuery().taskAssignee("gonzo").count());
			
			/******************第二个任务结束******************************/
			
			
			/******************第三个任务开始******************************/
			//获取第三个任务
			taskList = taskService.createTaskQuery().taskCandidateUser("kermit").list();
			for(Task task : taskList){
				 System.out.println("Following task is available for kermit: " + task.getName());
				 taskService.claim(task.getId(), "kermit");
			}
			//查看gonzo是否能够获取改任务
			taskList = taskService.createTaskQuery().taskAssignee("kermit").list();
			System.out.println("kermit当前任务数:" + taskList.size());
			for(Task task : taskList){
				System.out.println("the task name is :" + task.getName());
				taskService.complete(task.getId());
			}
			System.out.println("kermit当前任务数:" +  taskService.createTaskQuery().taskAssignee("kermit").count());
			
			/******************第三个任务结束******************************/
			
			 HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();
			 System.out.println("流程结束时间:" + historicProcessInstance.getEndTime());			
			

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
}
</span>

 

部署时,我们需要用到ZipInputStream来读取文件,部署的时候,由于是zip压缩包,所以需要我们depBuilder.name("myProcessZip").deploy();来给部署的流程设置一个名称,部署完成后,后面的任务处理和bpmn文件是一样的了。

      好了,部署zip格式的流程文件就到这里了。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值