activiti5.22 springboot 流程引擎 实战全过程

activiti5.22 springboot 流程引擎 实战全过程一.背景现在很多项目流程上比较复杂,业务上不复杂,对于这种项目,引入流程引擎会比较合适,流程有流程引擎去做管理,让设计更合理,开发更简单。市面上有很多款流程引擎,本人选用了使用率比较广的流程引擎activiti。activiti现在最高版本已经到7,springboot最高版本是6,由于网络上5.22版本资料最多,所以选用了5.22版本作为项目集成。二.activi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一. 背景

    现在很多项目流程上比较复杂,业务上不复杂,对于这种项目,引入流程引擎会比较合适,流程有流程引擎去做管理,让设计更合理,开发更简单。市面上有很多款流程引擎,本人选用了使用率比较广的流程引擎activiti。

    activiti现在最高版本已经到7,springboot最高版本是6,由于网络上5.22版本资料最多,所以选用了5.22版本作为项目集成。

二. activiti自带表介绍

    activiti5.22 springboot 流程引擎 实战全过程

    不同版本的activiti自带表是不一样的,其实我们也不用去关心不同版本的activiti需要那些表,只要配置好数据源,系统启动的时候,会去检查数据库是否包含这些数据库表,如果没有会自动去创建这些表。下面先介绍简单介绍一下,这些表的含义。

表含义介绍博客(引用):https://blog.csdn.net/jack_eusong/article/details/79411053

表关系图介博客(引用):https://blog.csdn.net/claram/article/details/73277358

表前缀说明

ACT_RE RE表示Repository资源库,保存流程定义,模型等设计阶段的数据。
ACT_RU RU表示Runtime运行时,保存流程实例,任务,变量等运行阶段的数据。
ACT_HI 表示History历史,保存历史实例,历史任务等流程历史数据。
ACT_ID ID表示Identity身份,保存用户,群组,关系等组织机构相关数据(Activiti中的组织机构过于简单,仅用于演示。) 。
ACT_GE GE表示General通用,属于一些通用配置。
其他 ACT_EVT_LOG和ACT_PROCDEF_INFO没有按照规则来,两者分别属于HI和RE。

PDM模型

流程表

这里写图片描述

历史数据表

这里写图片描述

用户表、组表

这里写图片描述

这里写图片描述

 

日志表:
1. act_evt_log                        存储事件处理日志,方便管理员跟踪处理。
通用数据表
2. act_ge_bytearray               二进制数据表,一些文件存在这个表。
3. act_ge_property                属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录
历史数据表
4. act_hi_actinst                    历史节点表
5. act_hi_attachment             历史附件表
6. act_hi_comment                历史意见表
7. act_hi_detail                      历史详情表,提供历史变量的查询
8. act_hi_identitylink              历史流程人员表
9. act_hi_procinst                  历史流程实例表
10.act_hi_taskinst                 历史任务实例表
11.act_hi_varinst                   历史变量表
用户组织表
12.act_id_group                    用户组信息表
13.act_id_info                       用户扩展信息表
14.act_id_membership         用户与用户组对应信息表
15.act_id_user                      用户信息表
资源流程规则表
16.act_procdef_info              流程定义信息
17.act_re_deployment          部署信息表
18.act_re_model                   流程设计模型部署表
19.act_re_procdef                 流程定义数据表  
运行时数据库表
20.act_ru_event_subscr       监听表
21.act_ru_execution             运行时流程执行实例表
22.act_ru_identitylink           运行时流程人员表,主要存储任务节点与参与者的相关信息
23.act_ru_job                       运行时定时任务数据表
24.act_ru_task                     运行时任务节点表
25.act_ru_variable               运行时流程变量数据表

三. activiti与springboot集成

    项目通过maven构建,所以去要引入activiti相关jar。

<dependency>
    <groupId>org.activiti</groupId>
	<artifactId>activiti-spring-boot-starter-basic</artifactId>
	<version>5.22</version>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
		
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

    在定义activiti配置

@Component
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
    @Override
    public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
        processEngineConfiguration.setActivityFontName("宋体");
        processEngineConfiguration.setLabelFontName("宋体");
        processEngineConfiguration.setAnnotationFontName("宋体");
        
        processEngineConfiguration.setDbIdentityUsed(false);
        processEngineConfiguration.setDatabaseSchemaUpdate("true");
    }
    
}

processEngineConfiguration.setDbIdentityUsed(false);     

这段代码表示是否使用activiti自带用户组织表,如果是,这里为true,如果不是,这里为false。由于本项目使用了视图的方式代替了原有的用户组织表,所以这里设置为false,这样启动就不用去检查用户组织表是否存在。

processEngineConfiguration.setDatabaseSchemaUpdate(“true”);

这段代码表示启动的时候是否去创建表,如果第一次启动这里必须设置为true

然后再springboot全局配置文件application.yml 配置,表示关闭验证自动部署,不关闭每次启动都会去部署resources/processes文件夹下面的所有资源文件

spring:    
  activiti:
    check-process-definitions: false

以上就是springboot和activiti的集成了,启动springboot后,activiti也会相应的运行起来。

四. activiti画图工具的集成

1. 可以在eclipse中集成Activiti Designer插件,然后可以进行画图

/*************************************************************************************************************************/

一、在线安装

从《Activiti实战》了解到可以通过如下方式安装

打开Eclipse -> Help -> Install New SoftWare-> Add

然后按照如下对话框输入:

activiti5.22 springboot 流程引擎 实战全过程

http://www.activiti.org/designer/update/

后续下一步下一步即可,可能是我的网络状况不好,后续在从Activiti官网下载组件的时候总是提示失败,试了好几次都不行,所以就考虑是不是可以通过离线的方式来安装插件。

二、离线安装

由于上述在线安装方式不可行,所以开始寻找离线方式。百度一下,这种方式是可行的,只要实现下载好对应的离线包,可以是jar或者zip格式的。然后发现

http://www.activiti.org/designer/archived/   内有各个版本的离线包下载,于是下载了5.18版本的离线包,然后还是在上述对话框中,只是不再输入url,而是改为选择已经下来的zip离线包,如下:

activiti5.22 springboot 流程引擎 实战全过程

然后下一步下一步安装即可。

这里有一个问题需要注意,由于我在第一步中已经使用在线的方式安装过,所以即使我这里选择了离线包,后续安装的时候eclipse还是会尝试从网络上去下载,所以需要在Install New SoftWare 对话框中选择 “Avaible Software Suits”,在弹出的对话框中选中刚才http路径的那个资源,把他删了,然后再来使用离线方式安装,此时才会真正使用离线安装包。

activiti5.22 springboot 流程引擎 实战全过程

/*************************************************************************************************************************/

星号内是引用插件安装博客(引用):https://www.cnblogs.com/strinkbug/p/4876819.html

activiti5.22 springboot 流程引擎 实战全过程

2. 可以引入官方的画图工具,然后进行画图

官方的画图工具集成博客(引用):http://jmysql.com/activiti/126.html

由于引用博客经常会打不开,博主自己简单写了一个

activiti5.22 springboot 集成画图官方工具

activiti5.22 springboot 流程引擎 实战全过程

个人建议引入官方画图工具,这样画图信息是存在activiti自有表中,如果要发布也是比较简单的,直接点击发布即可。

activiti5.22 springboot 流程引擎 实战全过程

点击发布过,会在流程资源中出现相应的资源信息

activiti5.22 springboot 流程引擎 实战全过程

如果在其他途径画的图,比如eclipse,可以把相应的资源文件直接导入即可

activiti5.22 springboot 流程引擎 实战全过程

五. 官方画图工具的集成

    上面给出了官方画图工具集成的博客,这里有几个地方需要注意的,如果权限组件没有集成spring-security,需要排除相关引用

<dependency>
	            <groupId>org.activiti</groupId>
	            <artifactId>activiti-modeler</artifactId>
	            <version>5.22</version>
	            <exclusions>
	                <exclusion>
				      <groupId>org.springframework.security</groupId>
				      <artifactId>spring-security-config</artifactId>
				    </exclusion>
				    <exclusion>
				      <groupId>org.springframework.security</groupId>
				      <artifactId>spring-security-crypto</artifactId>
				    </exclusion>
				    <exclusion>
				      <groupId>org.springframework.security</groupId>
				      <artifactId>spring-security-web</artifactId>
	                </exclusion>
	            </exclusions>
	        </dependency>
	
	        <dependency>
	            <groupId>org.activiti</groupId>
	            <artifactId>activiti-diagram-rest</artifactId>
	            <version>5.22</version>
	            <exclusions>
	                <exclusion>
				      <groupId>org.springframework.security</groupId>
				      <artifactId>spring-security-config</artifactId>
				    </exclusion>
				    <exclusion>
				      <groupId>org.springframework.security</groupId>
				      <artifactId>spring-security-crypto</artifactId>
				    </exclusion>
				    <exclusion>
				      <groupId>org.springframework.security</groupId>
				      <artifactId>spring-security-web</artifactId>
	                </exclusion>
	            </exclusions>
	        </dependency>

且,springboot启动的时候,需要加上@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

/**
 * @author yuyi (1060771195@qq.com)
 */
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@EnableAsync
@EnableTransactionManagement //启用事务
@ComponentScan(basePackages = "yui")
@EnableDubboConfig
public class ActivitiWebApplication {

    public static void main(String[] args) {
        ApplicationContext app = SpringApplication.run(ActivitiWebApplication.class, args);
        SpringContextUtils.setApplicationContext(app);
    }
    
}

总结

    流程引擎使用的时候会带来便利性,但是使用不当也会带来复杂度。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179886.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Centos7配置IP地址和DNS

    Centos7配置IP地址和DNS1.配置IP地址终端上输入ifconfig,找出网卡名称进入配置目录,找出对应网卡配置文件cd/etc/sysconfig/network-scripts/ls编辑配置文件vimifcfg-ens33修改成如下信息TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROU…

    2022年4月30日
    49
  • j2ee是什么,包括哪些技术_什么是J2EE

    j2ee是什么,包括哪些技术_什么是J2EEjava自学网www.java7.com从整体上讲,J2EE是使用Java技术开发企业级应用的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。适用于企业级应用的J2EE,提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。  主要包括以下这些技术:  1)Servlet  Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页面。与传统的CGI和..

    2022年10月11日
    0
  • coreseek,Sphinx,elasticsearch,xunsearch 什么关系

    coreseek,Sphinx,elasticsearch,xunsearch 什么关系

    2022年2月10日
    55
  • 视频一键识别生成字幕

    视频一键识别生成字幕前不久我介绍了通过视频生成字幕的技术原理(博客、B站),我现在把这个功能打包成一个易于操作的界面,如下图所属:操作非常的简单,打开程序后,点击上面【打开要识别的视频按钮】,就会弹出下图的打开文件对话框,选择需要生成字幕的视频:稍等片刻,待程序识别并生成完成后就弹出如下保存对话框,填写要保存的字幕文件名就可以了:最后生成类似如下的文件就可以在你的视频编辑软件中进行合并了。软件下载…

    2022年6月8日
    21
  • java编程代码都是背下来的吗_向学弟学妹们介绍自己的大学

    java编程代码都是背下来的吗_向学弟学妹们介绍自己的大学同学们好,今天二哥是来还债的,记得先拖到文末点个赞再回来细细的读,好不好!最近一段时间,我一直在学习Java虚拟机和字节码方面的知识,为的就是有朝一日成为真正牛逼的技术大佬!不知道大家有没有这种感觉,就是一开始学习编程的时候,真心不想看底层的东西,就想直接上来撸代码,但时间久了以后,总感觉缺点啥~~~~于是我开始阅读《深入理解计算机系统》、《图解TCP/IP》、《深入理解Java虚拟机》这些偏底层的书籍,看得烦了,就去刷我之前给大家推荐过的两个视频课,《哈佛大学的CS50》和《计算机科学速成

    2025年6月20日
    0
  • log4j pattern详解_标题的含义和作用ppt

    log4j pattern详解_标题的含义和作用pptConversionPattern参数的格式含义格式名含义%c输出日志信息所属的类的全名%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-ddHH:mm:ss},输出类似:2002-10-18-22:10:28%f输出日志信息所属的类的类名%l输出日志事件的发生位置,即输出日志信息的语句处于它所在…

    2022年8月22日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号