一. 背景
现在很多项目流程上比较复杂,业务上不复杂,对于这种项目,引入流程引擎会比较合适,流程有流程引擎去做管理,让设计更合理,开发更简单。市面上有很多款流程引擎,本人选用了使用率比较广的流程引擎activiti。
activiti现在最高版本已经到7,springboot最高版本是6,由于网络上5.22版本资料最多,所以选用了5.22版本作为项目集成。
二. activiti自带表介绍
不同版本的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。
代码语言:javascript复制<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配置
代码语言:javascript复制@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文件夹下面的所有资源文件
代码语言:javascript复制spring:
activiti:
check-process-definitions: false
以上就是springboot和activiti的集成了,启动springboot后,activiti也会相应的运行起来。
四. activiti画图工具的集成
1. 可以在eclipse中集成Activiti Designer插件,然后可以进行画图
/*************************************************************************************************************************/
一、在线安装
从《Activiti实战》了解到可以通过如下方式安装
打开Eclipse -> Help -> Install New SoftWare-> Add
然后按照如下对话框输入:
http://www.activiti.org/designer/update/
后续下一步下一步即可,可能是我的网络状况不好,后续在从Activiti官网下载组件的时候总是提示失败,试了好几次都不行,所以就考虑是不是可以通过离线的方式来安装插件。
二、离线安装
由于上述在线安装方式不可行,所以开始寻找离线方式。百度一下,这种方式是可行的,只要实现下载好对应的离线包,可以是jar或者zip格式的。然后发现
http://www.activiti.org/designer/archived/ 内有各个版本的离线包下载,于是下载了5.18版本的离线包,然后还是在上述对话框中,只是不再输入url,而是改为选择已经下来的zip离线包,如下:
然后下一步下一步安装即可。
这里有一个问题需要注意,由于我在第一步中已经使用在线的方式安装过,所以即使我这里选择了离线包,后续安装的时候eclipse还是会尝试从网络上去下载,所以需要在Install New SoftWare 对话框中选择 “Avaible Software Suits”,在弹出的对话框中选中刚才http路径的那个资源,把他删了,然后再来使用离线方式安装,此时才会真正使用离线安装包。
/*************************************************************************************************************************/
星号内是引用插件安装博客(引用):https://www.cnblogs.com/strinkbug/p/4876819.html
2. 可以引入官方的画图工具,然后进行画图
官方的画图工具集成博客(引用):http://jmysql.com/activiti/126.html
由于引用博客经常会打不开,博主自己简单写了一个
activiti5.22 springboot 集成画图官方工具
个人建议引入官方画图工具,这样画图信息是存在activiti自有表中,如果要发布也是比较简单的,直接点击发布即可。
点击发布过,会在流程资源中出现相应的资源信息
如果在其他途径画的图,比如eclipse,可以把相应的资源文件直接导入即可
五. 官方画图工具的集成
上面给出了官方画图工具集成的博客,这里有几个地方需要注意的,如果权限组件没有集成spring-security,需要排除相关引用
代码语言:javascript复制<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)
代码语言:javascript复制/**
* @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.cn/179886.html原文链接:https://javaforall.cn