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。

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

相关推荐
念念清晰几秒前
000-OpenJDK17 源码构建:MacOS环境(M芯片)
java·后端
来福猿29 分钟前
SpringCloud Config 源码分析:配置拉取、刷新与多环境管理
后端·spring·spring cloud
IT_陈寒2 小时前
React组件莫名重渲染?你可能忘了这个小细节
前端·人工智能·后端
用户9888321871743 小时前
给 .NET 网络调用设定“预算”:用 CancellationTokenSource.CancelAfter 处理超时取消
后端
清风儿3293 小时前
一块不会说话的电表,把我们折腾了半个月
后端
预知同行3 小时前
深入解析 MoE 混合专家模型:从 Router 到 All-to-All 的架构全景与生产实践
后端·架构
upala3 小时前
【仓颉语言入门 · 第二篇 第 8 课】
后端
weiwin1233 小时前
MAF 入门(8):多模态实战——让 Agent 看懂图片、处理混合内容
人工智能·后端
弈栈录4 小时前
流式对话接口设计:SSE、WebSocket 与断线重连
后端
Java内核笔记4 小时前
Spring AI 生产级 Chat 接口:6 个开关、13 个坑,其中 2 个开关根本没生效
java·人工智能·后端