当前位置: 首页 > wzjs >正文

西宁网站开发公司互联网项目

西宁网站开发公司,互联网项目,武汉通官网网站建设,什么网站做兼职最好Flowable工作流的原理可以概括为以下几个步骤: 1. 流程定义:使用BPMN 2.0规范进行流程定义,将业务过程可视化地描述出来。Flowable提供了可视化的流程设计工具,方便用户进行流程定义。 **生成符合BPMN 2.0规范的流程文件的方式有…

Flowable工作流的原理可以概括为以下几个步骤:

1. 流程定义:使用BPMN 2.0规范进行流程定义,将业务过程可视化地描述出来。Flowable提供了可视化的流程设计工具,方便用户进行流程定义。

**生成符合BPMN 2.0规范的流程文件的方式有很多,此处列举两种方式:

1.使用Flowable自带的Flowable-UI来生成BPMN文件:

首先下载官方demo代码:https://github.com/flowable/flowable-engine/releases
解压后找到flowable-rest.war和flowable-ui.war两个war包,放到tomcat里面运行起来。
成功运行后,访问本地地址 http://localhost:8080/flowable-ui
在网页中找到“新建流程”,定义好相关名称,就可以开始创建流程了:
在这里插入图片描述
在这里插入图片描述
详细绘制步骤可参考:https://blog.csdn.net/java_mindmap/article/details/135027471
绘制完成后,保存,然后下载,即可获得:

在这里插入图片描述

这样一个bpmn20标准的流程图文件。

2.使用IDEA插件“Flowable BPMN visualizer”来生成BPMN文件:

IDEA插件市场中搜索Flowable BPMN visualizer安装该插件。
在这里插入图片描述

安装完成后,在文档目录下右键新建,即可创建bpmn20标准的流程图文件:
在这里插入图片描述

创建好文件后,右键点击即可对流程进行编辑
在这里插入图片描述

具体操作可参考:https://blog.csdn.net/Demo_00/article/details/135413840

2. 流程部署:将流程定义文件部署到Flowable引擎中,引擎解析流程定义并生成执行实例。

新建一个springBoot项目或者在原有的springBoot项目中引入Flowable框架:

<!-- flowable -->
<dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>6.7.1</version>
</dependency>

在数据库连接中添加配置:
&nullCatalogMeansCurrent=true
然后将上一步下载的流程图文件放到项目中:
在这里插入图片描述

然后使用代码将流程注册到流程引擎中,即可使用:

@Test
public void deploy(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();Deployment deploy = repositoryService.createDeployment().addClasspathResource("processes/leave.bpmn20.xml").name("请假流程...").category("请假") // 分类.tenantId("dpb") // 租户id.deploy();System.out.println("deploy.getId() = " + deploy.getId());System.out.println("deploy.getName() = " + deploy.getName());System.out.println("deploy.getCategory() = " + deploy.getCategory());
}

3. 任务分配:根据流程实例的执行情况,将任务分配给相应的参与者。Flowable支持多种任务分配方式,如手动分配、自动分配等。

发起一个流程:

Map<String, Object> map = new HashMap<>();
map.put("day", 5);
map.put("user1", "小明");
ProcessInstance studentLeave = runtimeService.startProcessInstanceByKey("leave", map);
Task task = taskService.createTaskQuery().processInstanceId(studentLeave.getId()).singleResult();
taskService.complete(task.getId());

处理第一阶段流程:

// 领导审批
List<Task> teacherTaskList = taskService.createTaskQuery().taskCandidateGroup("a").list();
Map<String, Object> teacherMap = new HashMap<>();
teacherMap.put("outcome", "通过");
for (Task teacherTask : teacherTaskList) {taskService.complete(teacherTask.getId(), teacherMap);
}

处理第二阶段流程:

List<Task> principalTaskList = taskService.createTaskQuery().taskCandidateGroup("b").list();
Map<String, Object> principalMap = new HashMap<>();
principalMap.put("bosspass", "通过");
for (Task principalTask : principalTaskList) {taskService.complete(principalTask.getId(), principalMap);
}

查询整个流程的流转过程:

List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery().processInstanceId(studentLeave.getId()).finished().orderByHistoricActivityInstanceEndTime().asc().list();
for (HistoricActivityInstance activity : activities) {System.out.println(activity.getActivityName());
}

运行结束:

在这里插入图片描述

实际案例

以告警图片识别并下发巡查任务流程为例:
首先设计并导出流程文件:
在这里插入图片描述

将流程注册到系统中:

	@Testpublic void deployImg(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();Deployment deploy = repositoryService.createDeployment().addClasspathResource("processes/img.bpmn20.xml").name("告警图片审核巡查流程...").category("告警") // 分类.tenantId("dpb") // 租户id.deploy();System.out.println("deploy.getId() = " + deploy.getId());System.out.println("deploy.getName() = " + deploy.getName());System.out.println("deploy.getCategory() = " + deploy.getCategory());}

模拟巡查任务流转过程:

@Testvoid TestImg() {// 发起请假Map<String, Object> map = new HashMap<>();map.put("img", "https://obs-dzwlproject.obs.cn-south-1.myhuaweicloud.com/group/GX0153/20210526104731.png");map.put("robot", "xxlJob");map.put("robotFlow", "通过");ProcessInstance studentLeave = runtimeService.startProcessInstanceByKey("task", map);Task task = taskService.createTaskQuery().processInstanceId(studentLeave.getId()).singleResult();taskService.complete(task.getId());// 运营中心审核List<Task> teacherTaskList = taskService.createTaskQuery().taskCandidateGroup("server").list();Map<String, Object> teacherMap = new HashMap<>();teacherMap.put("serverFlow", "通过");for (Task teacherTask : teacherTaskList) {taskService.complete(teacherTask.getId(), teacherMap);}// 市级管理分配任务--指派给张三List<Task> principalTaskList = taskService.createTaskQuery().taskCandidateGroup("manager").list();Map<String, Object> principalMap = new HashMap<>();principalMap.put("managerPassFlow", "通过");principalMap.put("user", "张三");for (Task principalTask : principalTaskList) {taskService.complete(principalTask.getId(), principalMap);}// 开始巡查任务---张三发现不是自己区域的任务List<Task> userTaskList = taskService.createTaskQuery().taskCandidateUser("张三").list();Map<String, Object> userMap = new HashMap<>();userMap.put("userBackFlow", "转办");for (Task userTask : userTaskList) {taskService.complete(userTask.getId(), userMap);}// 市级管理分配任务--重新指派给李四List<Task> principalTaskList1 = taskService.createTaskQuery().taskCandidateGroup("manager").list();Map<String, Object> principalMap1 = new HashMap<>();principalMap1.put("managerPassFlow", "通过");principalMap1.put("user", "李四");for (Task principalTask : principalTaskList1) {taskService.complete(principalTask.getId(), principalMap1);}// 开始巡查任务---李四巡查任务List<Task> userTaskList1 = taskService.createTaskQuery().taskCandidateUser("李四").list();Map<String, Object> userMap1 = new HashMap<>();userMap1.put("userBackFlow", "巡查");for (Task userTask : userTaskList1) {//获取违规图片地址String img = (String) taskService.getVariable(userTask.getId(), "img");System.out.println("巡查员获取违规图片地址:"+img);taskService.complete(userTask.getId(), userMap1);}// 查看历史List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery().processInstanceId(studentLeave.getId()).finished().orderByHistoricActivityInstanceEndTime().asc().list();for (HistoricActivityInstance activity : activities) {System.out.println(activity.getActivityName());}}

执行完成,打印当前流程执行记录:
在这里插入图片描述

http://www.dtcms.com/wzjs/219586.html

相关文章:

  • 关于优化网站建设的方案网店代运营的套路
  • 投稿网站源码世界网站排名查询
  • 网站的滚动新闻怎么做苏州关键词搜索排名
  • 2018什么语言做网站比较好如何在互联网推广自己的产品
  • 做网站那个php好用怎么在百度上做推广
  • 网站建设宣传党建营销方案案例
  • 党建网站安全建设网络营销swot分析
  • 官方网站建设的意义网络营销方案ppt
  • 月编程做网站google登录入口
  • 做彩票网站电话多少模板网站建站哪家好
  • 网站建设第一步做什么推广互联网推广
  • wordpress后台用户名佛山seo整站优化
  • 虚拟主机安装网站html简单网页代码
  • 做韩国网站有哪些东西吗精准营销通俗来说是什么
  • 智慧团建网站密码格式沈阳网站制作优化推广
  • 淘客网站咋做培训心得体会范文
  • 无锡 做网站做企业网站建设的公司
  • 有系统源码可以做网站吗正规专业短期培训学校
  • 网站开发怎么兼容浏览器百度手机助手最新版下载
  • 关键词优化难度查询网站查询工具seo
  • 南京外贸网站建设公司简述网络营销与传统营销的整合
  • 做pc端网站平台国际军事新闻最新消息今天
  • 杭州网站建设蒙特seo怎么优化关键词排名
  • 做地方门户网站的排名营销网站优化推广
  • 班级网站建设模板上海网站推广服务公司
  • 自己做的网站 能收索么模板建站流程
  • 罗湖网站设计公司哪家好宁德市人力资源和社会保障局
  • 浙江省建设部网站好的搜索引擎推荐
  • 什么是网站建设中的专用主机如何在网上推广产品
  • 天涯武汉论坛武汉外包seo公司