Flowable中6种部署方式

1. addClasspathResource

src/main/resources/processes/LeaveProcess.bpmn20.xml

Deployment deploy = repositoryService.createDeployment()
        .name("请假审批")
        .addClasspathResource("processes/LeaveProcess.bpmn20.xml")
        .deploy();

2. addInputStream

InputStream is = new FileInputStream("/Users/xxx/processes/LeaveProcess.bpmn20.xml");
        Deployment deploy = repositoryService.createDeployment()
                .name("请假审批")
                .addInputStream("LeaveProcess.bpmn20.xm", is)
                .deploy();

3. addZipInputStream

zip中可以同时包含bpmn文件和png文件,也可以只有bpmn文件。

InputStream zip = new FileInputStream("/Users/xxx/Temp/LeaveProcess.zip");
        Deployment deploy = repositoryService.createDeployment()
                .name("请假审批")
                .addZipInputStream(new ZipInputStream(zip))
                .deploy();

4. addBytes

byte[] 可以从数据库中读取,也可以从文件中获取,也可以从字符串中获取。

InputStream is = new FileInputStream("/Users/mengday/Temp/springboot-flowable/src/main/resources/processes/LeaveProcess.bpmn20.xml");
byte[] bytes = new byte[is.available()];
is.read(bytes);
is.close();

Deployment deploy = repositoryService.createDeployment()
        .name("请假审批")
        .addBytes("LeaveProcess.bpmn20.xml", bytes)
        .deploy();

5. addString

可以直接使用bpmn文件中的内容来部署,文件内容可以前端传参,也可以保存到数据库中获取。

String text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
  "<definitions xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:flowable=\"http://flowable.org/bpmn\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:omgdc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:omgdi=\"http://www.omg.org/spec/DD/20100524/DI\" typeLanguage=\"http://www.w3.org/2001/XMLSchema\" expressionLanguage=\"http://www.w3.org/1999/XPath\" targetNamespace=\"http://www.flowable.org/processdef\">\n" +
    "  <process id=\"HelloWorld\" name=\"HelloWorld\" isExecutable=\"true\">\n" +
    "    <startEvent id=\"start\"/>\n" +
    "    <userTask id=\"UserTask1\" name=\"提交\"/>\n" +
    "    <endEvent id=\"end\"/>\n" +
    "    <sequenceFlow id=\"sid-82f14707-cd94-46d1-aec7-39fef470fbb8\" sourceRef=\"start\" targetRef=\"UserTask1\"/>\n" +
    "    <sequenceFlow id=\"sid-e1bab619-907a-40ac-a3ea-234896b048d6\" sourceRef=\"UserTask1\" targetRef=\"end\"/>\n" +
    "  </process>\n" +
    "  <bpmndi:BPMNDiagram id=\"BPMNDiagram_HelloWorld\">\n" +
    "    <bpmndi:BPMNPlane bpmnElement=\"HelloWorld\" id=\"BPMNPlane_HelloWorld\">\n" +
    "      <bpmndi:BPMNShape id=\"shape-7af2fe47-7aa1-4914-b067-6cc4ca20f0b5\" bpmnElement=\"start\">\n" +
    "        <omgdc:Bounds x=\"-40.0\" y=\"60.0\" width=\"30.0\" height=\"30.0\"/>\n" +
    "      </bpmndi:BPMNShape>\n" +
    "      <bpmndi:BPMNShape id=\"shape-b82b6f62-7593-4152-bd56-b237310e14e4\" bpmnElement=\"UserTask1\">\n" +
    "        <omgdc:Bounds x=\"40.000004\" y=\"57.5\" width=\"54.999996\" height=\"35.0\"/>\n" +
    "      </bpmndi:BPMNShape>\n" +
    "      <bpmndi:BPMNShape id=\"shape-b13a4cf4-5071-41bb-8e6d-97bcc6bb0064\" bpmnElement=\"end\">\n" +
    "        <omgdc:Bounds x=\"145.0\" y=\"60.0\" width=\"30.0\" height=\"30.0\"/>\n" +
    "      </bpmndi:BPMNShape>\n" +
    "      <bpmndi:BPMNEdge id=\"edge-8c366281-90fb-43b6-b462-1ff3a6f14027\" bpmnElement=\"sid-82f14707-cd94-46d1-aec7-39fef470fbb8\">\n" +
    "        <omgdi:waypoint x=\"-10.0\" y=\"75.0\"/>\n" +
    "        <omgdi:waypoint x=\"40.0\" y=\"75.0\"/>\n" +
    "      </bpmndi:BPMNEdge>\n" +
    "      <bpmndi:BPMNEdge id=\"edge-e0337398-70b4-46b5-8c0d-5bba82f50332\" bpmnElement=\"sid-e1bab619-907a-40ac-a3ea-234896b048d6\">\n" +
    "        <omgdi:waypoint x=\"95.0\" y=\"75.0\"/>\n" +
    "        <omgdi:waypoint x=\"145.0\" y=\"75.0\"/>\n" +
    "      </bpmndi:BPMNEdge>\n" +
    "    </bpmndi:BPMNPlane>\n" +
    "  </bpmndi:BPMNDiagram>\n" +
    "</definitions>\n";

Deployment deploy = repositoryService.createDeployment()
        .name("请假审批")
        .addString("HelloWorld.bpmn20.xml", text)
        .deploy();

6. addBpmnModel

通过Java代码来创建xml中的对象。

// StartEvent -flow1-> UserTask -flow2-> EndEvent
SequenceFlow flow1 = new SequenceFlow();
flow1.setId("flow1");
flow1.setName("start-userTask1");
flow1.setSourceRef("start");
flow1.setTargetRef("userTask1");

SequenceFlow flow2 = new SequenceFlow();
flow1.setId("flow2");
flow1.setName("userTask1-end");
flow1.setSourceRef("userTask1");
flow1.setTargetRef("end");

StartEvent startEvent = new StartEvent();
startEvent.setId("start");
startEvent.setOutgoingFlows(Arrays.asList(flow1));

UserTask userTask1 = new UserTask();
userTask1.setId("userTask1");
userTask1.setName("提交");
userTask1.setIncomingFlows(Arrays.asList(flow1));
userTask1.setOutgoingFlows(Arrays.asList(flow2));

EndEvent endEvent = new EndEvent();
endEvent.setId("end");
endEvent.setIncomingFlows(Arrays.asList(flow2));


BpmnModel bpmnModel = new BpmnModel();
Process process = new Process();
process.setId("HelloWorld");
process.setName("请假审批");
process.addFlowElement(startEvent);
process.addFlowElement(flow1);
process.addFlowElement(userTask1);
process.addFlowElement(flow2);
process.addFlowElement(endEvent);
bpmnModel.addProcess(process);

Deployment deploy = repositoryService.createDeployment()
        .name("自定义BpmnModel")
        .addBpmnModel("HelloWorld", bpmnModel)
        .deploy();

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/278119.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简述计算机⽹络七层模型和各⾃的作⽤?

这张图大家看下就好了&#xff0c;慢慢学习了解上面的东西就好&#xff0c;在面试中需要回答以下内容&#xff1a; 物理层&#xff1a;主要负责通过物理媒介传输⽐特流&#xff0c;如电缆、光纤、⽆线电波等。物理层规定了物理连接的规范&#xff0c;包括电缆的类型、接⼝的规范…

苹果Mac电脑甘特图管 EasyGantt最新 for mac

EasyGantt提供直观的界面&#xff0c;让用户能够轻松创建具有时间轴视图的甘特图。你可以添加并排列任务、设置任务的开始和结束日期、调整任务之间的依赖关系等。 任务管理&#xff1a;软件允许你添加、编辑和删除任务&#xff0c;设定任务的优先级和状态&#xff0c;并为每个…

Decorator装饰模式(单一责任)

Decorator&#xff08;装饰模式&#xff1a;单一责任模式&#xff09; 链接&#xff1a;装饰模式实例代码 解析 目的 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”&#xff0c;由于继承为类型引入的静态特质&#xff0c;使得这种扩展方式缺乏灵活性&#xff…

web前端 JQuery下拉菜单的案例

浏览器运行结果&#xff1a; JQuery下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/17LXZigLQ8yau0toTGj4P_Q?pwd4332 提取码&#xff1a;4332 代码&#xff1a; <!doctype html> <html> <head> <meta charset"UTF-8"><…

超详细YOLOv8图像分类全程概述:环境、训练、验证与预测详解

目录 yolov8导航 YOLOv8&#xff08;附带各种任务详细说明链接&#xff09; 搭建环境说明 数据集准备 项目目录结构展示 不同版本性能对比 模型参数和性能解释 模型对比 训练 执行训练示意代码 训练参数说明 训练正常执行示意 训练结果文件解释 weights args.yaml…

GoogleNet

时间&#xff1a;2014 网络中的亮点&#xff1a; 引入了Inception结构&#xff08;融合不同尺度的特征信息&#xff09;使用11的卷积核进行降维以及映射处理添加两个辅助分类器帮助训练丢弃全连接层&#xff0c;使用平均池化层&#xff08;大大减少模型参数&#xff09; Alex…

高光回眸:阿里云容器服务如何全面助力精彩亚运

作者&#xff1a;刘佳旭 谢乘胜 贤维 引言 2023 年&#xff0c;第 19 届杭州亚运会在杭州成功举办。在亚运之光和科技之光的交相辉映下&#xff0c;这届亚运会成为亚运史上首届“云上亚运”&#xff0c;用云计算创造了历史&#xff0c;赛事核心系统和转播全面上云&#xff0c…

如何使用Spoofy检测目标域名是否存在欺骗攻击风险

关于Spoofy Spoofy是一款功能强大的域名安全检测工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以轻松检测单个目标域名或域名列表中的域名是否存在遭受欺诈攻击的风险。 该工具基于纯Python开发&#xff0c;可以根据SPF和DMARC记录来检测和判断目标域名是否可…

智能分析网关V4+太阳能供电模式,搭建鱼塘养殖远程视频监控方案

一、行业背景 传统的鱼塘养殖模式由于养殖区域面积大、管理难度高&#xff0c;经常会出现偷钓者、盗窃鱼苗、非法入侵等监管难题&#xff0c;给养殖户带来了不小的经济损失。为了解决这些问题&#xff0c;搭建鱼塘远程监控系统成为了必要之举。通过远程监控系统&#xff0c;管…

帆软报表中定时调度中的最后一步如何增加新的处理方式

在定时调度中,到调度执行完之后,我们可能想做一些别的事情,当自带的处理方式不满足时,可以自定义自己的处理方式。 产品的处理方式一共有如下这些类型: 我们想在除了上面的处理方式之外增加自己的处理方式应该怎么做呢? 先看下效果: 涉及到两方面的改造,前端与后端。…

java设计模式学习之【模板方法模式】

文章目录 引言模板方法模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用游戏设计示例代码地址 引言 设想你正在准备一顿晚餐&#xff0c;无论你想做意大利面、披萨还是沙拉&#xff0c;制作过程中都有一些共同的步骤&#xff1a;准备原料、加工食物、摆盘。…

医院绩效考核系统源码,java源码,商业级医院绩效核算系统源码

医院绩效定义&#xff1a; “医院工作量绩效方案”是一套以工作量&#xff08;RBRVS&#xff0c;相对价值比率&#xff09;为核算基础&#xff0c;以工作岗位、技术含量、风险程度、服务数量等业绩为主要依据&#xff0c;以工作效率和效益、工作质量、患者满意度等指标为综合考…

Linux中磁盘管理与文件系统

目录 一.磁盘基础&#xff1a; 1.磁盘的结构&#xff1a; 2.硬盘的数据结构&#xff1a; 3.硬盘存储容量 &#xff1a; 4.硬盘接口类型&#xff1a; 二.MBR与磁盘分区&#xff1a; 1.MBR的概念&#xff1a; 2.硬盘的分区&#xff1a; 为什么分区&#xff1a; 2.表示&am…

传感器原理与应用复习--磁电式与霍尔传感器

文章目录 上一篇磁电感应传感器工作原理应用 霍尔传感器工作原理基本特性应用 下一篇 上一篇 传感器原理与应用复习–电容式与压电式传感器 磁电感应传感器 工作原理 导体在稳恒均匀磁场中&#xff0c;沿垂直磁场方向运动时&#xff0c;产生的感应电势为 e B l v e Blv …

C++系列-第1章顺序结构-3-输出类cout

C系列-第1章顺序结构-3-输出类cout 在线练习&#xff1a; http://noi.openjudge.cn/ https://www.luogu.com.cn/ 总结 本文是C系列博客&#xff0c;主要讲述输出类cout的用法 cout介绍与基本用法 在C中&#xff0c;cout 是用于输出&#xff08;打印&#xff09;数据的工具&…

[Github-bot]帮助处理issue和PR的github-bot

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 在看一些开源项目时,会发现一些帮忙处理issue和PR的bot,这些bot都是基于Github的AppsGitHub Apps overview - GitHub Docs GitHub Apps GitHub应用程序是扩展GitHub功能的工具。GitHub应用程序可以在GitHub上做一些…

【数据结构】快速排序(4种方式实现)

前言&#xff1a;前面我们学习了几种相对比较简单的排序&#xff0c;今天我们要一起学习的是快速排序&#xff0c;我们将通过四种方式来模拟实现快排。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:数据结构 &#x1f448; &#x1f4a…

CleanMyMac X 4.14.6中文版2024年最新必备的Mac系统清理工具

CleanMyMac X 4.14.6中文版是一款专业的Mac系统清理软件&#xff0c;可一键智能扫描清理mac系统日志缓存磁盘垃圾和多余语言安装包&#xff0c;快速释放电脑内存&#xff0c;轻松管理和升级Mac上的应用。同时CleanMyMac X 破解版可以强力卸载恶意软件&#xff0c;修复系统漏洞&…

SourceTree的安装和使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装&#xff1a;二、使用步骤1.获取地址2.放入sourceTree 3.点击推送 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 简单讲解一…

【盘点】再见2023年,年度总结

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容事业AI大模型交互式问答图文视频生成功能型应用生成 行情危机感 爱情情绪价值会撩沟通 生理价值颜值相貌、身材体态、审美穿搭关于男性与女性间的那份本能需求生育 物质价值 &#x1f4e2;文章总结&#x1f4e5;博主目标 &…