实战环境-Activiti7从入门到专家(4)

背景

对于activiti7 已经有了感性认知,并且已经获得了源代码,梳理了核心的API。后面还有大量的内容,包括BPMN规范的落地,但是我们不能只停留在理论层次,需要从实际罗德的内容展开,因此需要构建实战环境。

目标

那么接下来需要有两个动作,第一,深入代码逻辑中,从BPMN的实现技术对其进行深入掌握,如果需要,修改其代码,完善自己扩展;第二,利用掌握的activiti7来构建流程引擎,完成中国特色的业务数字化平台其中流程建设的部分。

实战环境

activiti7开发环境

既然是技术研究,那么需要下载最新的代码,其实我们称之为7,这个develop,的版本是8+的最新版本,我们也称之为activiti7 开发环境,因为7是相对稳定的,但是研究的代码时最新的,为了持续的跟进。

这个开发环境一个是我们走读代码,另外一个目的就是为了扩展自己的服务和个性化需求,所以,需要编译通过代码,需要用最新的jdk oracle22,另外开发语言level强制要求设置为21.

build以后,我们需要在这个地方着手

官方提供了例子,代码一坨坨的,默认应该用的是H2的数据库,是内存模式。这个玩意国内用的少,懒得去研究,但是他们的接口应该是一致的,会用就行,特别是Test要能跑起来,我们还得在这上面折腾。

业务生产环境

比较难的是选一款国内的,要求是:简单易懂,activiti7,不要太老,所以在码云上就开始搜找,符合这个要求的不多,很多都是2,3年以前的代码,并且封装的ruoyi,真是一坨坨,我们的核心是熟练使用掌握activiti的api,让后封装一套自己高大上的中国特色的流程引擎。

功夫不负有心人,还真有这么一款,并且实现了不少的代码,有点意思: 网址是 z6-bpm: z6-BPM工作流系统,遵循BPMN2.0协议,基于Activiti7进行开发,前后端分离。支持多种审批动作,比如会签、加签、退回、驳回等。支持多种处理规则,比如按人员、角色、岗位、部门等。内置流程设计器、表单设计器、任务办理、流程监控等。后端采用Spring Boot+My Batis+Security+Oauth2.0+Redis等框架,支持微服务 下载后,

  1. 构建数据库,有脚本,直接跑一个 5.6mysql没有问题
  2. 修改数据库链接,
  3. 竟然需要redis,启动下本地redis
  4. 然后,run一下
  5. 前端是vue2。? ,常规的跑一起,就能设计流程了

麻雀虽小,五脏俱全,nice

万事俱备,可以开始解构各类内容了,

act_re_deployment 这个表里key_字段自己加了个 first 的key,这个作者可能对于activiti,掌握的不是很深入,这个字段竟然没有存值,对于数据结构,以后会逐一分解。

于是乎来一段小代码,跑一跑,

@Test
public void GetDeployInfos() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();System.out.println("duster>>");RepositoryService repositoryService = processEngine.getRepositoryService();//  查询流程部署Deployment deployment = repositoryService.createDeploymentQuery().deploymentKey("first").singleResult();System.out.println(deployment.getName());//  查询流程定义ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();//  流程定义是否被挂起/暂停boolean suspended = processDefinition.isSuspended();System.out.println(processDefinition.getName());System.out.println(processDefinition.getId());System.out.println(processDefinition.getDeploymentId());}

下一步,对于每个符号,可以方便的学习和折腾了。两手抓,一手是应用,一手是内核,不是很快就成为业务专家、流程专家、技术专家。 能不香吗?

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

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

相关文章

WD西部数据正式通知客户:HDD与NAND继续涨价!

人工智能(AI)市场的快速增长引发了对数据存储的巨大需求。加之去年因市场环境因素导致HDD制造商减产,自去年下半年以来,高容量HDD供不应求,致使整体HDD价格显著上涨。据TechNews援引的行业消息指出,自去年第…

[每日算法 - 阿里机试] leetcode739. 每日温度

入口 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/daily-temperatures/descr…

windows安装charles抓包iphone

安装charles抓包iphone charles基础介绍windows安装 charles基础介绍 Charles 是在 PC 端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了在做移动开发中调试端口外&#xf…

不允许在constexpr函数中进行声明

这是我用pycharm在windows系统下复现sfm深度学习网络(Deep Two-View Structure-from-Motion Revisited)遇见的问题,复现时有段代码pytorch扩展cuda/c,pycharm中出现C标准相关的报错如下: 在网上查找很久无果,后面通过…

nginx配置实例-高可用主备模式

目录 什么是高可用? 解决的问题? 双机热备方案 keepalived是什么? 故障转移机制 环境准备 一、实现过程 1.1安装keepalived 安装好以后,将keepalived程序开启,并且加入到开机启动项中 1.2修改主机(…

winform入门篇3 -- 手工创建窗口

手工创建窗口 Form, 窗口 可以手工创建一个窗口类 class MyFrom : Form { } 1.创建一个windows 窗体应用 这样就自动创建了一个窗体应用Form1 现在不使用这个自动创建的,手工写一个 2.手动创建 1.删除Form1.cs 2.添加 新建MyForm 类 让该类继承Form 在构造…

Covalent Network(CQT)推出以太坊质押迁移计划,以增强长期结构化数据可用性、塑造万亿级 LLM 参数体系

作为 Web3 领先的链上数据层,Covalent Network(CQT)宣布了其将质押操作从 Moonbeam 迁移回以太坊的决定。此举是 Covalent Network(CQT)走向以太坊时光机(EWM)的第一步,EWM 是一个为…

Python | 超前滞后分析

Nino SST Indices (Nino 12, 3, 3.4, 4; ONI and TNI) 有几个指标用于监测热带太平洋,所有这些指标都是基于海表温度(SST)异常在一个给定的区域的平均值。通常,异常是相对于30年的周期来计算的。厄尔尼诺3.4指数(Nio 3.4 index)和海洋厄尔尼诺指数(Ocea…

golang代码练习样例模版--推荐--测试学习使用的方法

golang代码练习样例模版 以前用的python代码,每次测试都是一个python文件,但是go就是以文件夹为目录为 结构的测试(同一个文件夹下,不能有同名的函数) 大部分时间就是测试,如何对go程序函数进行测试&#…

【java工具-灵活拉取数据库表结构和数据】

需求: 假设我们现在有一个需求,需要快速拉取数据库的某些表建表语句,和数据,平时做备份之类; 我这边自己写了个工具,不多废话,也不整虚的, 直接看代码: package com.…

GitLab教程(一):安装Git、配置SSH公钥

文章目录 序一、Git安装与基本配置(Windows)下载卸载安装基本配置 二、SSH密钥配置 序 为什么要使用代码版本管理工具: 最近笔者确实因为未使用代码版本管理工具遇到了一些愚蠢的问题,笔者因此认为代码版本管理工具对于提高团队…

JR-SMD201-P便携式网络解码器

详细介绍: JR-SMD201-P便携式网络解码器采用1/2U设计,支持AVS/H.265/H.264/MPEG2解码,支持IP输入,支持1080P/1080I/720P/576I/480I多种分辨率,支持DRA/AC3/EAC3/AAC/MPEG等音频。 产品特点 支持输入方式IP 接口丰富&a…

户外骑行存档(图新地球与运动健康App)经验分享

0序 之前天天加班熬夜,身体素质有些下降,在锻炼的过程中喜欢上了骑行,周周骑、天天骑。 骑行会产生很多的轨迹(有很多朋友不喜欢装很多app,就用手机自带的运动健康,也有喜欢专业运动app的,道理…

SQL注入原理与信息获取及常规攻击思路靶场实现

SQL注入原理与信息获取及常规攻击思路靶场实现 很早的时候就写了,权当备份吧 Web程序三层架构 表示层 :与用户交互的界面 , 用于接收用户输入和显示处理后用户需要的数据 业务逻辑层 :表示层和数据库访问层之间的桥梁 , 实现业务逻辑 ,验证、…

BPMN.JS中文教程学习

基础篇 vue bpmn.js 建模BpmnModeler将数据转图形bpmnModeler.importXML // basic.vue<script>// 引入相关的依赖import BpmnModeler from bpmn-js/lib/Modelerimport {xmlStr} from ../mock/xmlStr // 这里是直接引用了xml字符串export default {name: ,components: {…

三维点云:对原始点云数据进行体素化

文章目录 一、原始点云二、对原始点云进行体素化三、结果展示 一、原始点云 &#x1f349;原始点云为.pts文件&#xff0c;内容为x, y, z的坐标 原始点云展示 二、对原始点云进行体素化 使用open3d库实现&#xff0c;如果没有需要在命令行执行pip install open3d import o…

vue vue3 手写 动态加载组件

效果展示 一、需求背景&#xff1a; # vue3 项目涉及很多图表加载、表格加载 #考虑手写一个动态加载组件 二、实现思路 通过一个加载状态变量&#xff0c;通过v-if判断&#xff0c;加载状态的变量等于哪一个&#xff0c;动态加载组件内部就显示的哪一块组件。 三、实现效果…

安装Schedule库的方法最终解答!_Python第三方库

安装Python第三方库Schedule 我的环境&#xff1a;Window10&#xff0c;Python3.7&#xff0c;Anaconda3&#xff0c;Pycharm2023.1.3 Schedule库 Schedule 是一个轻量级、功能强大而灵活的任务调度工具库&#xff0c;用于在指定的时间间隔内执行任务。为用户提供了简单易用的…

kali使用msf+apkhook520+cploar实现安卓手的攻击

学习网络安全的过程中&#xff0c;突发奇想怎么才能控制或者说是攻击手机 边找工作边实验 话不多说启动kali 一、使用msfapktool生成简单的木马程序 首先使用kali自带的msfvenom写上这样一段代码 选择安卓 kali的ip 一个空闲的端口 要输出的文件名 msfvenom -p android/met…

kafka(五)——消费者流程分析(c++)

概念 ​ 消费者组&#xff08;Consumer Group&#xff09;&#xff1a;由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据&#xff0c;一个分区只能由一个组内消费者消费&#xff1b;消费者组之间互不影响。所有的消费者都属于某个消费者组&#xff0c;即消费者…