开源ERP技术整合系列--第17篇

用日志记录“开源软件”的诞生

【点亮星标】----祈盼着一个鼓励

博主开源地址:

码云:https://gitee.com/redragon/redragon-erp

GitHub:https://github.com/redragon1985/redragon-erp

为什么选择Activiti

最常用的工作流引擎Activiti和JBPM,我当初是如何选择的呢?要考虑学习成本、现有功能、兼容性、版本稳定性、可扩展性等等。

(1)Activiti的创始人Tom Baeyens是JBPM之前版本的核心人物,从这个层面出发Activiti工作流引擎的是站在巨人的肩膀上打造的,肯定会积累很多之前的经验,并解决很多之前遇到的问题。

(2)Activiti使用了我们更常用的技术,例如IOC、AOP、MyBatis、WebService、Restful,核心引擎则是基于之前版本的PVM,接口设计优雅;而JBPM完全舍弃了之前的引擎,基于JBoss的Drools Flow实现,接口层面的设计十分混乱。

(3)Activiti做了更多的扩展功能,比如相对完整的表单设计,流程的热部署、更加丰富的IDE插件。

Acitviti框架

下面来说说Activiti框架的核心功能

1、7个接口:工作流引擎可以想象成一个服务端,部署好以后,是需要客户端的调用才能实现对工作流程的操作。

  • RepositoryService:提供一系列管理流程部署和流程定义的API。
  • RuntimeService:在流程运行时对流程实例进行管理与控制。
  • TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。
  • IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户等。
  • ManagementService:提供对流程引擎进行管理和维护的服务。
  • HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。
  • FormService:表单服务。

2、28张表:表记录了用户信息、流程信息、历史信息等各种数据

资源库流程规则表
act_re_deployment 部署信息表
act_re_model 流程设计模型部署表
act_re_procdef 流程定义数据表
运行时数据库表
act_ru_execution 运行时流程执行实例表
act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
act_ru_task 运行时任务节点表
act_ru_variable 运行时流程变量数据表
历史数据库表
act_hi_actinst 历史节点表
act_hi_attachment 历史附件表
act_ih_comment 历史意见表
act_hi_identitylink 历史流程人员表
act_hi_detail 历史详情表,提供历史变量的查询
act_hi_procinst 历史流程实例表
act_hi_taskinst 历史任务实例表
act_hi_varinst 历史变量表
组织机构表
act_id_group 用户组信息表
act_id_info 用户扩展信息表
act_id_membership 用户与用户组对应信息表
act_id_user 用户信息表
通用数据表
act_ge_bytearray 二进制数据表
act_ge_property 属性数据表存储整个流程引擎级别的数据

3、BPMN业务流程模型:可以通过流程图的方式配置业务流程、分支、条件等,最终生成引擎可识别的xml文件

BPMN2.0是一套建立工作流程模型的标准。下面说几个重点的元素和符号。

(1)事件:常用的是开始事件、结束事件,用于标识流程的开始和结束

(2)活动:常用的是任务,用于描述流程节点中的一项工作

(3)网关:常用包括并行网关、排他网关,并行即同时流转多个分支,排他即只流转其中一个分支

与SpringBoot整合

(1)修改POM添加依赖

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

(2)将BPMN2.0规范的XML文件拷贝到项目目录下:/resources/processes

(3)构建表结构,修改springBoot主配置文件application.properties

spring.activiti.database-schema-update=true

设置成true以后,会在项目启动的时候自动创建Activiti表结构,首次数据表建好后建议改成false

(4)Activiti相关配置,修改springBoot主配置文件application.properties

#保存历史数据得级别,分为none、activity、audit(默认)、full
spring.activiti.history-level=full
#是否校验流程文件,默认校验resources下的processes文件夹里的流程文件
spring.activiti.check-process-definitions=false
#修改默认的流程文件存储位置
spring.activiti.process-definition-location-prefix=classpath:/processes/

(5)通过注解方式访问常用接口

@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private IdentityService identityService;
@Autowired
private RepositoryService repositoryService;
@Autowired
private ProcessEngine processEngine;
@Autowired
private HistoryService historyService;

后记

如果您对我们正在做的开源软件感兴趣,欢迎各种形式的合作,作为贡献者或直接加入我们!让我们一起打造一套开源的企业级信息化解决方案。

【码云】或【GitHub】搜索“赤龙ERP”点击星标,亦可加入我们! 让我们从小开始做点伟大的事!与开发者交流 kzca2000

工作流引擎Activiti与SpringBoot2整合--开源软件诞生17的更多相关文章

  1. 工作流引擎Activiti使用总结

    http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html 1.简单介工作流引擎与Activiti 对于工作流引擎的 ...

  2. 工作流引擎Activiti使用总结(转)

    1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统,当然基本都是有工作流的支持,不过当时使用 ...

  3. 工作流引擎Activiti

    背景: 在计算机尚未普及时,许多工作流程采用手工传递纸张表单的方式,一级一级审批签字, 工作效率非常低下,对于数据统计以及生成报表的功能,需要经过大量的手工操作才能实现. 随着电脑的普及,这些工作的参 ...

  4. SpringBoot2搭建基础架构——开源软件诞生4

    技术框架篇--第4篇 用日志记录“开源软件”的诞生 赤龙ERP开源地址: 点亮星标,感谢支持,加微信与开发者交流 kzca2000 码云:https://gitee.com/redragon/redr ...

  5. JAVA开源软件的技术选型--开源软件诞生2

    技术准备--第2篇 用日志记录“开源软件”的诞生 赤龙ERP开源地址,点亮星标,支持一下,万分感谢 码云:https://gitee.com/redragon/redragon-erp github: ...

  6. SSO单点登录可以自己实现吗?--开源软件诞生10

    ERP与SSO的恩怨情仇--第10篇 用日志记录“开源软件”的诞生 赤龙 ERP 开源地址: 点亮星标,感谢支持,与开发者交流 kzca2000 码云:https://gitee.com/redrag ...

  7. ERP与EHR系统的恩怨纠葛--开源软件诞生13

    ERP中需要EHR的存在吗--第13篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon ...

  8. ERP订单管理的操作与设计--开源软件诞生19

    赤龙ERP订单模块讲解--第19篇 用日志记录"开源软件"的诞生 [点亮星标]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redragon/r ...

  9. ERP中HR模块的操作与设计--开源软件诞生26

    赤龙ERP的EHR功能讲解--第26篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/red ...

随机推荐

  1. VUE+ElementUI创建项目

    1.官网下载node,安装node.js环境 安装完成后进入cmd,输入node -v和npm -v查看node和npm是否安装成功及对应的版本 2.全局安装vue-cli:cnpm install ...

  2. android开发之使edittext输入弹出数字软键盘。亲测可用。手机号登陆注册常用。

    <EditText android:id="@+id/edit_digit_input" android:layout_width="wrap_content&qu ...

  3. 2020最新Servlet+form表单实现文件上传(图片)

    servlet实现文件上传接受 这几天学了一点文件上传,有很多不会,在网查了许多博客,但是最新的没有,都比较久了 因为我是小白,版本更新了,以前的方法自己费了好久才弄懂,写个随笔方便以后查找 代码奉上 ...

  4. iOS NSNotification通知

    通知中心(NSNotificationCenter) 通知(NSNotification) 一个完整的通知一般包含3个属性:(注意顺序) - (NSString *)name;  通知的名称 - (i ...

  5. 【python】超有用的集合类collections,不来了解一下?

    在使用Python的过程中,一定是离不开数据结构的, 也就是List-列表,Tuples-元组,Dictionaries-字典. 那实际应用中我们更多的还是要去操作这些结构里的数据.比如,在列表后面添 ...

  6. My Github Repository

    最近在Github上整了个Repository来保存打过的比赛的代码,包括Codeforces,Google Code Jam和Google Kick Start等,之后应该也会搞一点刷题的代码. 之 ...

  7. 持续部署入门:基于 Kubernetes 实现滚动发布

    前言 软件世界比以往任何时候都更快.为了保持竞争力,需要尽快推出新的软件版本,而不会中断活跃用户访问,影响用户体验.越来越多企业已将其应用迁移到 Kubernetes. 在 Kubernetes 中有 ...

  8. 跟着兄弟连系统学习Linux-【day09】

    day10-20200609 p29.软件包管理-rpm命令管理-安装升级与卸载 [rpm -ivh 包全名]安装 -i(安装) -v (显示详细信息)-h (显示安装进度) 会一步步依赖,比较麻烦, ...

  9. Python之 最全 Conda、pip 管理环境和安装包、更换源、解决HttpError等一些列问题

    在Anaconda中conda可以理解为一个工具,也是一个可执行命令,其核心功能是环境管理与包管理.所以对虚拟环境进行创建.删除等操作需要使用conda命令. conda install 和 pip ...

  10. 20190923-08Linux压缩和解压类 000 016

    gzip/gunzip 压缩 1.基本语法 gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件) gunzip 文件.gz (功能描述:解压缩文件命令) 2.经验技巧 (1)只能压缩文 ...