4.Activiti流程定义部署

通过调用activiti的api将流程定义的bpmn和png两个文件一个一个添加部署到activiti中,也可以将两个文件打成zip包进行部署。

单个文件部署方式 分别将bpmn文件和png图片文件部署。

java 复制代码
@Test
public void testDeployment(){
    //1.创建ProcessEngine
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    //2.获取RepositoryService
    RepositoryService repositoryService = processEngine.getRepositoryService();
    //3.使用Service进行流程部署,定义一个流程名字,把bpmn文件和png文件部署到数据库
    Deployment deploy = repositoryService.createDeployment()
            .name("出差申请流程")
            .addClasspathResource("bpmn/evection.bpmn")
            .addClasspathResource("bpmn/evection.png")
            .deploy();
    //4.输出部署信息
    System.out.println("流程部署ID:"+deploy.getId());
    System.out.println("流程部署名称:"+deploy.getName());

}

压缩包部署方式

将evection.bpmn和evection.png压缩成zip包。

java 复制代码
@Test
	public void deployProcessByZip() {
		// 定义zip输入流
		InputStream inputStream = this
				.getClass()
				.getClassLoader()
				.getResourceAsStream(
						"bpmn/evection.zip");
		ZipInputStream zipInputStream = new ZipInputStream(inputStream);
		// 获取repositoryService
		RepositoryService repositoryService = processEngine
				.getRepositoryService();
		// 流程部署
		Deployment deployment = repositoryService.createDeployment()
				.addZipInputStream(zipInputStream)
				.deploy();
		System.out.println("流程部署id:" + deployment.getId());
		System.out.println("流程部署名称:" + deployment.getName());
	}

执行此操作后activiti会将上边代码中指定的bpm文件和图片文件保存在activiti数据库。

操作数据表

流程定义部署后操作activiti的3张表如下:

act_re_deployment 流程定义部署表,每部署一次增加一条记录

act_re_procdef 流程定义表,部署每个新的流程定义都会在这张表中增加一条记录

act_ge_bytearray 流程资源表

接下来我们来看看,写入了什么数据:

sql 复制代码
SELECT * FROM act_re_deployment #流程定义部署表,记录流程部署信息
sql 复制代码
SELECT * FROM act_re_procdef #流程定义表,记录流程定义信息

结果: 注意,KEY 这个字段是用来唯一识别不同流程的关键字

sql 复制代码
SELECT * FROM act_ge_bytearray #资源表 

注意:

act_re_deployment和act_re_procdef一对多关系,一次部署在流程部署表生成一条记录,但一次部署可以部署多个流程定义,每个流程定义在流程定义表生成一条记录。每一个流程定义在act_ge_bytearray会存在两个资源记录,bpmn和png。

建议:一次部署一个流程,这样部署表和流程定义表是一对一有关系,方便读取流程部署及流程定义信息。

相关推荐
Yeats_Liao2 小时前
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
java·后端·架构
梨子同志2 小时前
Docker
后端
woxiangkaile2 小时前
kernel6.1 新增驱动
后端
高明珠3 小时前
麒麟 V10 SP1 踩坑:`./startup.sh` 报“解释器错误: 权限不够“,根因是 KySec
后端
用户8358086187913 小时前
基于Redis的分布式锁优化实践:从Redlock到自适应自旋的实现与思考
后端
掘金者阿豪3 小时前
想让短视频自动生产?用MoneyPrinterTurbo搭一个远程可控的AI创作平台
后端
梨子同志4 小时前
开发工具
前端·后端
梨子同志4 小时前
Java
后端
像我这样帅的人丶你还4 小时前
Java 后端详解(六):Maven 与本地开发指南
前端·后端