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。

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

相关推荐
wo_jack1 小时前
C++ 入门笔记(十六):第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效
c++·后端·面试·stl·vector
量化分析码农2 小时前
【Python量化波动率实战 02】波动率会传染:EWMA 指数加权给近期行情更大话语权
后端
GISer_Jing3 小时前
如何学习Agent
后端·langchain
JWASX4 小时前
【Go】map 源码解析 - group
后端·golang·map·源码分析
量化分析码农5 小时前
【Python量化波动率实战 01】波动率是怎么算的:年化、滚动与区间估计一次讲清
后端
特立独行的猫A5 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
金銀銅鐵5 小时前
从一个类名到一张类图:用反射自动生成 PlantUML
java·后端·uml
追逐时光者6 小时前
一款基于 .NET 开源、免费的数据库自治诊断平台
后端·.net
追逐时光者6 小时前
让 GitHub Copilot 更懂你的 .NET 代码风格:一份精简实用的 Copilot Instructions
后端·.net
小满zs7 小时前
Go语言第十八章(架构设计)
后端·go