【activiti】工作流入门基础概念

这篇具有很好参考价值的文章主要介绍了【activiti】工作流入门基础概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么使用activiti

状态-------------------------------------------------->引擎engin(业务变动不影响程序的进行)
每个人只能看到个人负责的,流程变更困难 bpmn建模语言

activiti流程步骤

步骤:
1、部署流程
2、定义流程
3、部署流程定义:使用activiti中的API把流程定义存储,在Acitivti执行过程汇总可以查询定义的内容,通过数据库来存储业务流程
4、启动流程实例:ProcessInstance,启动流程实例代表开始一次业务流程的运作。【提交某个申请后-开启流程-推动审批进行】
5、用户查询待办任务(task):系统业务已经交给了activiti管理,通过activiti就可以查询当前流程执行到哪个步骤,
6、用户办理任务:用户查到待办任务后,办理某个业务【如果业务办理还需要其他用户办理,就可以由activiti帮我们把工作流程往后面推动】
7、流程结束:任务办理没有下一个任务节点后,流程实例就执行完成了。

表结构分四种:

表结构:
re:流程定义,流程静态资源
ru:runtime任务
hi:历史信息
ge:通用属性

//示例:
SELECT * FROM act_re_deployment #流程定义部署表,记录流程部署信息
SELECT * FROM act_re_procdef #流程定义表,记录流程定义信息
SELECT * FROM act_ge_bytearray #资源表 (文件存储地方)

四个重要的服务类

ProcessEngine:HistoryService,RepostoryService,RuntimeService,TaskService,ManagementService(开发维护使用)

bpmn设计:id(定义的文件后缀前的东西) name assignee(审批人) 流程设计 id name
bpmn文件:definnitions配置—>process(多个也可,正常一个)定义的工作流程---->bpmndi画布图形
图png

流程定义:ProcessDefinition是BPMN文件定义的一个具体的业务流程,
流程实例:ProcessInstance则是指一个具体的业务流程
某人发起什么就会实例化什么 不同流程实例之间按时互相不影响的 【定义部署后就形成了流程实例,数据库就存在了】

BusinessKey

BusinessKey:在ru_execution表中----------> 【绑定业务ID】
流程发起后,审批人在此之前要知道相关审批单信息【请假时间、请假理由】是如何绑定到流程中呢?

挂起

挂起:就是说每月最后一天不处理出差申请,这个流程暂停至此
流程定义挂起,该流程下就不能启动新的流程定义
如果是激活状态,改为挂起状态。参数一:流程定义id 参数2:是否暂停 参数3:暂停的时间
repositoryService.suspendProcessDefinitionById( , , );

流程实例挂起,则此流程不再执行,如果进行完成操作将报错
runtimeService.suspendProcessInstanceById( instanceId );

概念:
之前我们已经测试了如何删除一个流程,有很多时候,我们只是需要暂时停止一个流程,过一段时间就要恢复。
例如月底不接受报销审批流程,年底不接受借贷审批流程,或者非工作日不接受售后报销流程等,这个时候,就可以将流程进行挂起操作。
挂起后的流程就不会再继续执行。

挂起任务?不可以

流程变量:

之前定义的请假流程并没有用到流程变量,每个步骤都是非常固定的,但是当我们需要实现一些复杂的业务流程,
比如请假3天以内由部门经理审批,3天以上需要增加总经理审批这样的流程时,就需要用到流程变量

注意:

【和之前介绍的业务关键字有些相似,都可以携带业务信息,并且可以通过activiti的api查询出来。但在使用中应减少流程变量中的业务信息】
流程变量的类型是Map<String,Object>。
所以,流程变量比业务关键字要强大很多。变量值不仅仅是字符串,也可以是POJO对象。
但是当需要将一个POJO对象放入流程变量时,要注意这个对象必须要实现序列化接口serializable
Map<String,Object> variables = new HashMap<>();
流程变量作用域:Global和Local两种 使用:${ 流程变量 } ${ 流程变量<3 }

  • Global变量:
    这个是流程变量的默认作用域,表示是一个完整的流程实例。(定义一个变量,在这整个流程中会传递下去)
    Global变量中变量名不能重复,如果设置了相同的变量名,后面设置的值会直接覆盖前面设置的变量值。

    • 启动流程时设置变量
      在启动流程实例时设置流程变量,这时流程变量的作用域是整个流程实例。相当于是Global作用域。核心代码:
      ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(key, map);
    • 任务办理时设置变量
      在完成任务时设置流程变量,该流程变量只有在该任务完成后其它结点才可使用该变量,
      它的作用域是整个流程实例,如果设置的流程变量的key在流程实例中已存在相同的名字则后设置的变量替换前边设置的变量。
      核心代码:taskService.complete(task.getId(), map); 任务完成交给的下一个人
      注意:这种方式设置流程变量,如果当前执行的任务ID不存在,则会抛出异常,流程变量也会设置失败。
    • 通过当前流程实例 设置………………
  • Local变量:
    Local变量的作用域只针对一个任务或一个执行实例的范围,没有流程实例大。
    Local变量由于作用在不同的任务或不同的执行实例中,所以不同变量的作用域是互不影响的,变量名可以相同。
    Local变量名也可以和Global变量名相同,不会有影响。

    ………………

网关:精细控制流程走向

线条联系已将无法支持,复杂流程需要用网关【排他网关,并行网关,包含网关,事务网关】
  1. ExlusiveGateway排他网关:决定接下来走哪一条线,如果从网关出去的线所有条件都不满足系统则抛出异常。
    所有条件满足的话,会选择“id”小的那一条去走

  2. ParallelGateway并行网关:允许将流程分成多条分支,也可以把分支汇聚到一起,并行网关的功能是基于进入和外出顺序流的。
    fork分支:并行后的所有外出顺序流,为每个顺序流都创建一个并发分支
    join汇聚:所有到达并行网关,在此等待的进入分支,直到所有进入顺序流的分支都到达以后,流程就会通过汇聚网关。
    注意:每一条分支都会走,条件会被忽略,技术经理和财务经理都会执行,会汇聚,才会完成后续的流程

  3. InclusiveGateway包含网关:可以看作是排他和并行的结合体

  4. 事务网关:不常用

组任务分配:

  • 多个经理找哪个经理批(在候选人中任选一个)
    taskService.claim(taskId, candidateUser_定 义任务领取人) //拾取任务
  • 退还任务:把负责人设置为null
    taskService.setAssigine(taskId,null)

抄送:

抄送:抄送是指将你的审批抄送给【需要了解审批内容但不具备决定权】的人。

activiti工作流获取流程定义中所有的节点:

将xml定义文件解析成BpmnModel对象,使用BpmnModel的 getMainProcess()获取一个Process对象,
该对象实际是一个继承自BaseElement、FlowElementContainer的节点容器,通过 getFlowElements()获取当前流程定义文件中所有的节点对象文章来源地址https://www.toymoban.com/news/detail-588067.html

到了这里,关于【activiti】工作流入门基础概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot项目集成activiti工作流引擎

    一、一种较为简单,只需要使用idea的插件来画流程图。(我所使用的的插件是Activiti BPMN visualizer) 二、另一种就是可以使用(在线流程设计器)或者(页面设计器部署到自己项目中)来画流程图。 本文是将流程设计页面部署到了项目中 一、使用idea的插件来画流程图。  二

    2024年02月10日
    浏览(30)
  • Spring Boot + Activiti 结合,实现工作流

    Activiti是一个工作流引擎,Activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由Activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,Activiti流程就是数据库表

    2023年04月13日
    浏览(69)
  • Activiti7 工作流非原流程终止

    正常工作流,需要经过 node1、node2 才能结束。 现在要求已经开启的流程,目前停留在 node1,可以提前终止。 一般根据实际需要,可以有几种做法: 新绘制流程图,新增 node1 结束的流程分支,替换原流程 SQL 的方式,将该流程的数据,手动修改为终止的状态 代码动态修改流程

    2023年04月16日
    浏览(26)
  • 若依框架SpringBoot+Activiti工作流的使用

    使用简介:本技术点主要是针对类审批的业务流程的建模,可以有:任务发布(即流程开始)到一级一级的审批到最终结束(即流程结束)一整套完备的模型 1、idea下载activiti插件 ider以前版本下载actiBPM,但是新版ider这个插件已经被淘汰,已经被下面这个替代     2、单独起

    2024年02月11日
    浏览(30)
  • Activiti7工作流引擎:在线流程编辑器Activiti Modoler5.x

    有的时候我们的流程图需要业务人员自己绘制,然后使用自己绘制的流程图,此时就需要一个在线流程图编辑器需要集成到我们的web系统中。Activiti Modoler是Activiti官方推出的在线流程编辑器。 https://github.com/Activiti/Activiti/tree/5.x 将整个项目下载下来。不同版本的目录结构区别

    2024年02月09日
    浏览(40)
  • 【业务功能篇36】Springboot+activiti7 工作流引擎

    业务场景:前段时间总结的有一个告警工单流程,我们都是直接自己建表,状态节点,操作节点,都是自定义设计的,而到后面会有很多的工单流程,比如创建一个遗留问题电子流,指定处理人进行分析闭环,等等多种电子流,后期重复的开发工作以及维护工作会越来越多。

    2024年02月12日
    浏览(35)
  • SpringBoot整合Activiti实现工作流的低代码系统(附源码+文档)

    activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。工作流表单

    2024年04月09日
    浏览(34)
  • 后端面试话术集锦第 九 篇:Activiti工作流面试话术

    这是后端面试集锦第九篇博文—— Activiti 工作流面试话术❗❗❗ 工作流这块儿,实际在工作中使用的时候, Activiti 用的居多,当然还有一些其他的工作流引擎。 在网上看了也大概看了一下,其他的像 JBPM 以及 workflow 等用的情况来讲不是很多。 所以说 Activiti 目前来讲用的比

    2024年02月10日
    浏览(31)
  • SpringBoot整合Activiti实现工作流的低代码系统(附源码和配套文档)

    activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。工作流表单

    2024年03月15日
    浏览(56)
  • 【业务功能篇38】上篇:Springboot+activiti7 工作流引擎 增加网关组件、Assignment分配权限

    在前面的一篇文章中,简单举例了一个 工单电子流,【业务功能篇36】Springboot+activiti7 工作流引擎_studyday1的博客-CSDN博客仅有一个子任务,这种一般是针对比较简单的一个遗留问题记录场景,今天再介绍一个,相对比较复杂的流程,多个处理,审批节点任务,通过排他网关组

    2024年02月13日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包