开源ERP技术整合系列--第17篇git
用日志记录“开源软件”的诞生github
【点亮星标】----祈盼着一个鼓励spring
博主开源地址:数据库
最经常使用的工做流引擎Activiti和JBPM,我当初是如何选择的呢?要考虑学习成本、现有功能、兼容性、版本稳定性、可扩展性等等。less
(1)Activiti的创始人Tom Baeyens是JBPM以前版本的核心人物,从这个层面出发Activiti工做流引擎的是站在巨人的肩膀上打造的,确定会积累不少以前的经验,并解决不少以前遇到的问题。ide
(2)Activiti使用了咱们更经常使用的技术,例如IOC、AOP、MyBatis、WebService、Restful,核心引擎则是基于以前版本的PVM,接口设计优雅;而JBPM彻底舍弃了以前的引擎,基于JBoss的Drools Flow实现,接口层面的设计十分混乱。spring-boot
(3)Activiti作了更多的扩展功能,好比相对完整的表单设计,流程的热部署、更加丰富的IDE插件。学习
下面来讲说Activiti框架的核心功能
一、7个接口:工做流引擎能够想象成一个服务端,部署好之后,是须要客户端的调用才能实现对工做流程的操做。
二、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 属性数据表存储整个流程引擎级别的数据
三、BPMN业务流程模型:能够经过流程图的方式配置业务流程、分支、条件等,最终生成引擎可识别的xml文件
BPMN2.0是一套创建工做流程模型的标准。下面说几个重点的元素和符号。
(1)事件:经常使用的是开始事件、结束事件,用于标识流程的开始和结束
(2)活动:经常使用的是任务,用于描述流程节点中的一项工做
(3)网关:经常使用包括并行网关、排他网关,并行即同时流转多个分支,排他即只流转其中一个分支
(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