背景
对于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等框架,支持微服务 下载后,
- 构建数据库,有脚本,直接跑一个 5.6mysql没有问题
- 修改数据库链接,
- 竟然需要redis,启动下本地redis
- 然后,run一下
- 前端是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());}
下一步,对于每个符号,可以方便的学习和折腾了。两手抓,一手是应用,一手是内核,不是很快就成为业务专家、流程专家、技术专家。 能不香吗?