zoukankan      html  css  js  c++  java
  • 工作流引擎Activiti与SpringBoot2整合--开源软件诞生17

    开源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个接口:工作流引擎可以想象成一个服务端,部署好以后,是需要客户端的调用才能实现对工作流程的操作。

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

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

    工作流引擎Activiti与SpringBoot2整合
    资源库流程规则表 
    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文件

    工作流引擎Activiti与SpringBoot2整合

    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;

    后记

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

    带你了解不一样的【赤龙ERP】:https://www.redragon-erp.com(赤龙官网查看企业数字化解决方案)

  • 相关阅读:
    使用fiddler2抓取手机发出的请求信息
    HTML转义字符集合
    spm3安装和使用
    JSP
    Servlet
    Struts2
    java多线程-消费者和生产者模式
    java异常处理机制(try-catch-finally)
    java内部类
    java上转型和下转型(对象的多态性)
  • 原文地址:https://www.cnblogs.com/redragon/p/13775413.html
Copyright © 2011-2022 走看看