四、项目中Camunda的使用

公文流程

保存

//省略其他业务逻辑......
//获取公文的工作流程类型
String processDefinitionKey=docDTO.getDocDocType().getDocType().getWorkflowId();
//启动流程
//将工作流程类型作为流程实例id,公文id 作为流程中业务id        
this.runtimeService.startProcessInstanceByKey(processDefinitionKey,doc.getId());
//省略其他业务逻辑......

保存

发送

//构建流程实例变量
Map<String,Object> vars=new HashMap<String,Object>();
vars.put("action", "doSend");//当前公文动作 发送
this.executeWorkFlow(operateInfo, docDTO, vars);
//流程实例key
String processDefinitionKey=docDTO.getDocDocType().getDocType().getWorkflowId();
//创建流程任务查询对象
TaskQuery tq=this.taskService.createTaskQuery();
//设置查询条件  流程实例key
tq.processDefinitionKey(processDefinitionKey);
//设置业务id
tq.processInstanceBusinessKey(docDTO.getId());
//拿到流程任务
List<Task> ts=tq.list();
vars.put("operateInfo", operateInfo);
for (Task t : ts) {//执行完成任务this.taskService.complete(t.getId(),vars);
}

发送
Condition

# 跟上面的 vars.put("action", "doSend") 遥相呼应
${execution.getVariable('action')=='doSend'}
# 发送之后,需要处理我们的业务逻辑
${docBpmnFacade.sendDoc(execution,true)}
//发送公文public void sendDoc(DelegateExecution execution, boolean toFinish) {//业务idString docId=execution.getBusinessKey();//获取公文Doc doc=this.docRepository.getDocById(docId);//当前用户OperateInfo operateInfo=(OperateInfo)execution.getVariable("operateInfo");//其他变量Boolean sendMsg=(Boolean)execution.getVariable("sendMsg");//处理在发送公文之后我们自己的业务逻辑this.docDomainService.sendDoc(operateInfo, doc, toFinish,sendMsg);}

发送消息

发送消息

${docBpmnFacade.sendDocFinishMsgWithProjs(execution,null,'_finish_with_proj')}
//发送公文完成消息public void sendDocFinishMsgWithProjs(DelegateExecution execution, String msgNamePrefix, String msgNameSuffix) {String docId=execution.getBusinessKey();Doc doc=this.docRepository.getDocById(docId);OperateInfo operateInfo=(OperateInfo)execution.getVariable("operateInfo");if(StringUtils.isBlank(msgNamePrefix)) msgNamePrefix="";if(StringUtils.isBlank(msgNameSuffix)) msgNameSuffix="";String msgName=msgNamePrefix+doc.getCreateInfo().getDocCategory()+msgNameSuffix;String relId = (String) execution.getVariable("relId");String eventType = null;//处理 信访 发送公文 监听if(doc.getBasicInfo().getValidRelateProjs().stream().anyMatch(r -> RelateProjConstants.PROJTYPE_CMP_PRC.equals(r.getRelateProj().getProjType()))){eventType = "Handle_CmpSendDoc";}//省略其他逻辑......//向办理记录发送消息for (DocRelateProj relProj : doc.getBasicInfo().getValidRelateProjs()) {String projId=relProj.getRelateProj().getProjId();//拿到流程实例//projId 业务id 这里是公文idProcessInstance prcIns = this.runtimeService.createProcessInstanceQuery().active().leafProcessInstances().processInstanceBusinessKey(projId).singleResult();if(prcIns == null) continue;//获取能够执行的流程实例List<MsgSubscriber> msgSubs = this.commonService.queryMsgSubscribers(prcIns.getProcessInstanceId(), msgName,null);if(CollectionUtils.isEmpty(msgSubs)){msgSubs = this.commonService.queryMsgSubscribers(prcIns.getProcessInstanceId(), "prc_finish",null);}//改为 逐个触发 查询出的事件 执行流程实例Map<String,Object> processVariables=Utils.buildMap("docId", docId, "operateInfo", operateInfo);this.commonService.msgReceived(msgSubs, processVariables);//省略其他逻辑....
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HttpRequest请求模块设计与实现(http模块二)

目录 类功能 类定义 类实现 编译测试 类功能 类定义 // HttpRequest请求模块 class HttpRequest { public:std::string _method; // 请求方法std::string _path; // 资源路径std::string _version…

docker学习进阶

一、dockerfile解析 官方文档&#xff1a; Dockerfile reference | Docker Docs 1.1、dockfile是什么&#xff1f; dockerfile是用来构建docker镜像的文本文件&#xff0c;由一条条构建镜像所需的指令和参数构成的脚本。 之前我们介绍过通过具体容器反射构建镜像(docker comm…

央企与国企在信创国产化趋势下的数字化转型之道

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 3月5日&#xff0c;政府工作报告对大力推进现代化产业体系建设、加快发展新质生产力作出部署&#xff0c;提出“充分发挥创新主导作用&#xff0c;以科技创新推动产业创新&#xff0c;加快推进新型工业化&#x…

c1-第三周

文章目录 1月份2.定义一个整形数组arr2.定义整形栈s3.输入一个字符串包括大小写和数字&#xff0c;将其中的大写英文字母改为小写&#xff0c;并且输出数字个数4.根据下面数据&#xff0c;编程实现要求功能&#xff1a; 9月1.编写程序实现以下功能或问题3.完成以下功能4.对运算…

释机器学习中的召回率、精确率、准确率

准确率和召回率之间通常存在一定的折衷关系——当阈值较高时&#xff0c;分类器的准确率较高&#xff0c;但召回率较低&#xff1b; 当阈值较低时&#xff0c;分类器的召回率较高&#xff0c;但准确率较低 召回率(灵敏度)&#xff1a;对实际为正类的样本&#xff0c;模型能识别…

NHANES数据(复杂调查数据)亚组交互函数1.7(P for interaction)发布-纠正了目前的一个问题

大家好&#xff0c;有粉丝私信我说NHANES数据(复杂调查数据)亚组交互函数1.版本交互函数有点问题&#xff0c;我查看了一下&#xff0c;有个代码调用失效了。就是下面这个&#xff0c;本来我是这样调用数据的 ids<-match.call()$ids应该是由于R版本或者survy包升级后导致这…

事务失效的八种情况!!!!

EnableAspectJAutoProxy(exposeProxy true)&#xff0c;开启AOP&#xff08;面向切面编程&#xff09;代理&#xff0c;并允许通过AopContext类暴露当前代理对象。这样&#xff0c;你可以在任何地方获取到当前代理对象&#xff0c;以便进行一些特殊的操作 &#xff08;应用与第…

NLP评价指标

一、分类任务常见评估&#xff1a; 准确度(Accuracy) 评估预测正确的比例&#xff0c;精确率(Precision) 评估预测正例的查准率&#xff0c;召回率(Recall) 评估真实正例的查全率。如果是多分类&#xff0c;则每个类别各自求P、R最终求平均值。 TP&#xff08;True Positives…

数字孪生技术快速构建智慧光伏电站智能运维系统

前言 光伏即光生伏特&#xff0c;是通过半导体材料实现的光电转化。以太阳能电池板为核心的光伏设施将太阳能直接转化为电能&#xff0c;释放光能这一清洁能源的应用价值。 经过十几年的发展&#xff0c;光伏产业已成为我国少有的形成国际竞争优势、实现端到端自主可控、并有望…

智慧公厕系统架构分析及应用探索

智慧公厕是运用物联网技术和云计算平台&#xff0c;实现对公共厕所的智能管理和优化的未来式公共厕所信息化整体解决方案。该系统由应用层、平台层、传输层和感知层组成&#xff0c;各层相互配合&#xff0c;共同构建一个高效、智能的公厕运营环境。 一、感知层&#xff1a; …

Vue.js+SpringBoot开发城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…

软件杯 卷积神经网络手写字符识别 - 深度学习

文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言…