zoukankan      html  css  js  c++  java
  • activiti流程引擎使用总结

    场景

    最近在项目中使用到了activiti,用于业务的审核流程管理。
    为了避免与业务过多耦合且能够支撑后续的其他业务流程,所以将activiti单独部署为一个服务,使用feign来调用。其中流程配置的web界面使用alfresco提供的流程配置界面:https://alfresco.com.cn/cn/cos/process-services
    其本质是生成符合bpmn规范的xml文件,并由activiti读取解析并保存到数据库。数据库使用activiti默认的表,没有做相关修改。
    在这里插入图片描述

    问题

    下面是在使用过程中遇到的几个问题:

    1.如何做到对流程做到任意配置而不修改代码

    这也是使用流程引擎的初衷,只需要配置相关步骤,而不修改代码就可以达到配置和修改业务流程的目的。由于某一个流程一定是和业务数据相关联的,那么为了满足可扩展的配置,就需要将业务参数注入到流程中,也就是之注入到流程变量中。关于流程变量,有两种类型,一种是全局的流程变量,这种变量数据存在于整个流程实例中,在任何一个任务节点都可以获取和修改这些值;另一个是局部流程变量,只存在于某个任务节点上。目前只用到了全局流程变量。我们在流程启动时就注入流程所需的变量,这样在配置流程时就可以通过变量名来获取到值,从而控制流程动作和走向。

    2.如何自动完成一些事情

    所谓自动完成一些事情,即不需要人工干预,满足或不满足某个条件时自动完成节点的功能。这种功能即“服务任务”
    在这里插入图片描述
    通过这个服务任务,配置“监听类”或者“表达式”便可以自动完成某些事情,比如修改流程变量的值等等。

    3.如何配置当多个条件满足时才执行任务

    多个条件同时满足,即且的关系,在刚开始时,是使用了一个任务节点,对条件进行判断,然后写入流程变量进行流向控制,这样虽然可以完成功能,但是与代码耦合,不可取。后来使用网关的方式来解决这个问题。网关的作用就是条件控制,它是自动完成的,不要要人工干预。常用的网关有互斥网关和并行网关,分别对应异或操作和与操作。
    在这里插入图片描述
    网关相关参考:https://blog.csdn.net/a67474506/article/details/40428709

    4.如何在流程结束后进行业务处理

    流程结束对应的结束任务,即有一个小圆圈(开始任务也是),结束任务节点有3个事件可以选择:end、start和take,我们选择take事件,并配置其监听类,即可完成业务逻辑的处理。

  • 相关阅读:
    如何完全禁用或卸载Windows 10中的OneDrive
    ASP.NET Web API从注释生成帮助文档
    c#中使用easyUI的DataGrid组件
    第三方分页控件aspnetPager出现问题解决方法
    ActionResult派生类
    Razor引擎的转换数据类型
    ViewData与ViewBag比较
    .net开源后可以查看的源代码
    如何让一个类可以被foreach枚举?
    .NET Framework中Object基类有哪些方法?
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286624.html
Copyright © 2011-2022 走看看