camunda工作流引擎流程定义部署 流程定义查询 激活流程实例
camunda工作流引擎流程定义部署 流程定义查询 激活流程实例
1.通过xml字符串部署流程定义
/*** 通过xml字符串部署流程定义* @param processModelVo* @return* @throws IOException*/@PostMapping("/addProcessMode")public AjaxResult addProcessMode(@RequestBody ProcessModelVo processModelVo) throws IOException {System.out.println(processModelVo.getXml());String str = processModelVo.getXml();String path = "D:\\bootproject\\RuoYi-Vue\\ruoyi-admin\\src\\main\\resources\\BPMN\\";String name = IdUtil.simpleUUID() + ".bpmn";String fileName = path + name;createFile(fileName, str);FileInputStream fileInputStream = new FileInputStream(fileName);Deployment deploy = repositoryService.createDeployment().addInputStream(processModelVo.getName() + ".bpmn", fileInputStream).name(processModelVo.getName()).deploy();System.out.println(deploy.getId());fileInputStream.close();File file = new File(fileName);if (file.delete()) {System.out.println("Deleted the file: " + fileName);} else {System.out.println("Failed to delete the file.");}//log.info("流程部署成功,id:{},name:{}",deploy.getId(),deploy.getName());System.out.println(deploy.getId());return StrUtil.isNotEmpty(deploy.getId()) ? AjaxResult.success("添加成功") : AjaxResult.error();}public boolean createFile(String fileName, String str) throws IOException {File file = new File(fileName);if (!file.exists()) {file.createNewFile();// 能创建多级目录}FileWriter fw = null;try {//创建字符输出流对象,负责向文件内写入fw = new FileWriter(fileName);//将str里面的内容读取到fw所指定的文件中fw.write(str);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (fw != null) {try {fw.close();return true;} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return false;}
2.使用camunda的rest api查询部署的流程定义
http://localhost/dev-api/engine-rest/process-definition?pageNum=1&pageSize=10
3.通过流程定义id启动实例
/*** 启动流程实例* /flowTask/startProcess** @param ychDemoQjsq* @return*/@PostMapping("/startProcess")public AjaxResult startProcess(@RequestBody YchDemoQjsq ychDemoQjsq) {//请假流程String processDefinitionKey = "Process_1";//不检验租户权限ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();processEngine.getProcessEngineConfiguration().setTenantCheckEnabled(false);//这设置发起人或审批人Map<String, Object> variables = new HashMap<String, Object>();variables.put("start", SecurityUtils.getUsername());identityService.setAuthenticatedUserId(SecurityUtils.getUserId().toString());ProcessInstance processInstance = runtimeService.startProcessInstanceById(ychDemoQjsq.getProcessInstanceId(), variables);//业务表单的保存ychDemoQjsq.setCreateBy(SecurityUtils.getUsername());ychDemoQjsq.setCreateTime(new Date());ychDemoQjsq.setProcessId(processInstance.getId());iYchDemoQjsqService.insertYchDemoQjsq(ychDemoQjsq);Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).active().singleResult();taskService.complete(task.getId(), variables);return AjaxResult.success();}
camunda工作流引擎流程定义部署 流程定义查询 激活流程实例相关推荐
- Camunda工作流引擎三
本篇继续拓宽对 Camunda 工作流的学习! <Camunda 工作流引擎一> <Camunda 工作流引擎二> 提要 文章目录 提要 正文 组任务 网关 排他网关 并行网关 ...
- Camunda 工作流引擎 demo
CamundaDemo 本Demo采用springBoot和camunda内嵌的方式. 在SpringBoot中加入ca ...
- Camunda工作流引擎一
实习工作中需要用到工作流引擎,去实现业务审批流的功能模块,由于 Flowable 不支持 MariaDB (重要原因之一),所以项目中选择了 Camunda 工作流引擎. 由于没有接触过工作流引擎,所 ...
- Activiti7工作流引擎:进阶篇(九) 内嵌子流程 SubProcess
知识传送门 >>>>>>>>>>>>>>>>>>> 为什么普通人要想成佛就得经过九九八 ...
- Camunda工作流引擎之bpmn设计器定制
在 Vue.js应用中,基于 bpmn-js. 定制 vue-bpmn-modeler 前段时间,由于公司业务需要工作流引擎,但是由于之前的工作流引擎是第三方付费的,又遇到客户需要本地地方部署,所以需 ...
- Camunda工作流引擎简记
本文转载自玩转Camunda之实战篇-赶紧收藏起来吧_哔哩哔哩_bilibili 其中部分内容,经过本人修改 一.工作流相关介绍 BPM(BusinessProcessManagement),业务流程 ...
- RoadFlow工作流引擎安装与部署
从官方网站 http://roadflow.net 下载RoadFlow解压后得到如下文件夹(此图为WebForm文件夹,MVC类似): 还原数据库: 数据库备份文件位于db文件夹下的:WEBFORM ...
- 工作流引擎设计之退回任务定义
退回(Rollback Work Item) 退回是针对本人(工作流参与者)的"待办任务"的操作,即参与者主动退回待办任务列表中的任务. 为什么要退回? 参与者接受任务后,发现不应 ...
- Activiti7工作流引擎:基础篇(六) 任务监听器和流程监听器
知识传送门 >>>>>>>> 你只有一定要,才一定会得到. 一:任务监听器TaskListener 任务监听器是处理业务逻辑的重要的地方,当任务创建.设 ...
最新文章
- POJ-2948 Martian Mining 动态规划
- AnsroidStudio中提示:Failed to find configured root that contain
- kubesphere3.0的安装完整文档
- 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板
- 捷达vs7测试_捷达VS7——品质硬核!
- 第七章信息系统安全工程考试要点及真题分布
- PHP结合Redis来限制用户或者IP某个时间段内访问的次数
- OpenCV系列(一)之图像平滑
- redis主从,哨兵回忆手册
- 升级python(2.7-3.6.2)
- [linux]redhat7.6 安装telnet
- 苹果Mac文件自动化整理工具:Hazel
- Oracle数据把持和控制言语详解-1
- 日志管理系统之保存日志到数据库
- 汇编语言学习:如何理解“物理地址=段地址X16+偏移地址”
- 谷歌地球二次开发基础平台
- win10网络诊断为DNS服务器未响应,Windows10网络诊断DNS服务器未响应的解决办法
- socks5 python_用Python写socks5服务器端
- 【JetBrain】JetBrain系列软件设置背景图
- 贪婪洞窟2服务器维护,贪婪洞窟211月30日更新维护公告 贪婪洞窟211月30日更新了那些内容...
热门文章
- Redis Cluster集群配置
- linux图形界面切换账户,linux图形界面和字符界面相互转换
- 14.实战+补充知识+PS增强+DW(到此 前端工程师【基础篇】 完结)
- 企业激励的3种模式分析与运用
- 解释linux中的三种重定向,Linux重定向及反弹shell详解
- error: cannot bind non-const lvalue reference of type
- html-withimg-loder
- (二十二)岁月无声 - 6
- 【区块链 | Uniswap】3.剖析DeFi交易产品之Uniswap:V2下篇
- 用终端来给屏幕下个雪❄️吧!