
activiti
文章平均质量分 86
activiti工作流相关内容分享
小董亮出你的8块腹肌吧!
专注后端技术分享!!!
展开
-
activiti学习之系列文章
activiti学习之使用eclipse画流程图原创 2021-10-09 10:54:48 · 209 阅读 · 0 评论 -
activiti学习之定时相关
源码 ,需要自行更换对应的设计xml。本文看下工作流定时相关的功能。正常节点流转是立马执行的,使用TimeCatchingEvent就可以达到延迟节点流转的效果,比如对于用户下单购买了商品,会在每天固定的时间统一发货,毕竟不可能有下单就发货是吧?TimeCatchingEvent对应的节点如下:我们设计的流程如下:对应的xml如下:启动流程后,并且完成了下单的任务后,并不会立即生成发货任务,而是会等到设置的时间到达之后才会执行。对应的表是ACT_RU_TIMER_JOB:当某个任务超时未处原创 2025-02-24 17:05:57 · 686 阅读 · 0 评论 -
activiti学习之强制结束任务
写在前面在一些场景下需要不正常走完所有的流程节点就结束流程,本文看下如何实现。1:正文类似于流程退回,只需要断开当前任务对应节点的对外连接的线,然后找到结束节点,并连接到结束节点,再执行任务,就可以直接跳转到结束节点,也就结束任务了,如下:上图流程对应的xml如下:<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmln原创 2024-12-12 17:42:42 · 852 阅读 · 0 评论 -
activiti学习之自定义网关判断逻辑
在实际的业务场景中,activiti所提供的基于uel表达式的网关表达式往往无法满足我们的需求,所以我们就需要根据具体的业务来定义自己的表达式,那么就需要自定义表达式的解析逻辑。本文就来看下如何实现。原创 2024-12-06 17:01:57 · 598 阅读 · 0 评论 -
activiti学习之模拟聊天机器人(含结束监听)
写在前面本文来模拟实现一个聊天机器人。就是可以一直不厌其烦的跟你唠嗑!1:需求开发一个机器人聊天程序,如果是用户不说再见,则要一直跟用户聊下去。2:开发2.1:设计流程当用户不说再见时就设置callEnd=2,此时会继续聊天:当用户说再见时时就设置callEnd=1,此时就结束聊天:xml如下:<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN原创 2024-12-05 14:18:32 · 1096 阅读 · 0 评论 -
activiti学习之springboot版本(从0到1完成流程)
源码。2:正文2.1:生成数据库第一次启动项目时如果时没有表则会自动创建,创建后还需要执行如下的sql们:一共25张表:模型对应到实际的业务功能就是流程列表,像下图这种:代码:这里只是为了演示就固定写死了,正常应该是页面传过来的。成功后,会在ACT_RE_MODEL表创建一条记录:选择某个模型后,将进入流程设计页面,设计后,就可以保存了,此时前端需要将设计的xml传给后端,如下:正常模型id和xml都是前端给的,保存成功后会在ACT_GE_BYTEARRAY表生成一条记录,并外键到ACT原创 2024-12-04 14:32:50 · 1005 阅读 · 0 评论 -
activiti学习之在任务节点增加监听器
写在前面本文我们一起来看下如何在任务节点增加监听器。1:测试1.1:流程设计效果图监听器的设置和源码如下:public class CsdnUserTaskTaskListner implements TaskListener { @Override public void notify(DelegateTask delegateTask) { /* String EVENTNAME_CREATE = "create";原创 2021-10-24 10:59:41 · 1765 阅读 · 0 评论 -
activiti学习之在连线上增加监听器
写在前面在某些场景下可能需要在线上增加监听器,本文一起来看下如何通过在线上增加监听器实现流程开始和结束的感知。1:测试1.1:流程设计效果图如下是设置的监听器以及对应的类源码:public class CsdnLineFromStartNode implements ExecutionListener { @Override public void notify(DelegateExecution execution) throws Exception {原创 2021-10-23 20:15:26 · 658 阅读 · 0 评论 -
activiti学习之监听流程实例的开始和结束
写在前面activiti的监听器分为全局监听器,连线监听器,节点监听器,本文要监听流程实例的开始和结束需要通过全局监听器来实现,依赖的接口是org.activiti.engine.delegate.ExecutionListener,源码如下:public interface ExecutionListener extends Serializable { // 流程实例开始 String EVENTNAME_START = "start"; // 流程实例结束 String EVENT原创 2021-10-22 18:20:32 · 2836 阅读 · 0 评论 -
activiti学习之通过监听器设置办理人
写在前面在实际的业务中,任务办理人往往是动态选择的,因此不能写死,一般我们可以使用占位符的方式来设置办理人,但是除此之外还可以通过使用监听器的方式来动态设置办理人,下面一起来看下。1:测试1.1:流程设计效果图如下是设置的任务create时监听事件:监听器源码如下:public class SetAssigneeTaskListener implements TaskListener { @Override public void notify(DelegateTask原创 2021-10-22 15:31:46 · 1540 阅读 · 2 评论 -
activiti学习之补偿边界事件
写在前面考虑这样的场景,前面已完成节点的操作,当后续流程发生了某些异常情况时需要进行一些额外的补偿操作,比如银行转账,转出银行的转出操作和转入银行的转入操作都已经完成了,假设后续还有一个对此次转账的审核环节,该环节审核失败,需要取消这次转账,就需要转出银行取消转出,转入银行取消转入,此时就可以考虑使用补偿边界事件,因为是边界事件,所以是依附于具体的流程节点,补偿边界事件的触发需要依赖于补偿中间事件,从程序的角度可以理解为是补偿中间事件抛出异常,补偿边界事件捕获该异常执行补偿操作。用来触发补偿边界事件的补原创 2021-10-22 13:35:32 · 810 阅读 · 0 评论 -
activiti学习之事件子流程
写在前面事件子流程一般和错误开始节点一种特殊的开始节点,发生了指定的错误才开始一起使用,当主流程中发生了特定的错误后触发,开始执行子流程,从xml的结构上来看其实就是多了一个errorEventDefinition属性,如下是普通开始节点和错误开始节点的比较:<startEvent id="startevent2" name="Start"></startEvent><startEvent id="errorstartevent1" name="Error start"原创 2021-10-21 18:51:15 · 716 阅读 · 0 评论 -
activiti学习之子流程
写在前面子流程作为主流程的一部分存在,拥有独立的开始节点和结束节点,即可以单独作为一个完整的流程来使用,当一个流程比较复杂时,可以考虑使用子流程来进行包裹,下面来一起看下。1:测试1.1:流程设计效果图说明子流程使用了错误结束节点,错误结束节点也是一种结束节点,只不过我们使用最多的是普通的结束节点,结束时静默结束,而错误结束节点是在结束时会抛出一个错误编码,如下时我们设置的要抛出的错误编码:然后在子流程边界定义了一个 错误边界事件 ,来捕获错误编码,让流程流转到主流程继续处理,如下原创 2021-10-21 17:43:13 · 4096 阅读 · 0 评论 -
activiti学习之消息中间事件
写在前面消息中间事件,通过发送消息让流程继续流转,作为流程中的一个节点存在,和用户任务节点,服务任务节点等处于平级位置,类似于信号边界事件。1:测试1.1:流程设计效果图如下是消息的定义和设置:xml<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/原创 2021-10-21 16:48:49 · 801 阅读 · 0 评论 -
activiti学习之错误边界事件
写在前面如果是希望在服务任务,即程序执行过程中发生了某种类型的错误时将执行流流转到用户任务节点,让人工参与处理错误,此时就可以使用错误边界事件,下面我们来一起看下如何使用。1:测试1.1:流程设计效果图服务任务节点执行的类如下:public class MyErrorBoundaryDelegate implements JavaDelegate, Serializable { public static ThreadLocal<String> threadLocal原创 2021-10-21 15:09:45 · 858 阅读 · 0 评论 -
activiti学习之信号边界事件
写在前面考虑这样的场景,用户提交了工单,该工单等待审批,但是用户发现部分信息填写错误,需要重新填写,此时就可以通过信号边界事件完成,下面来看下如何实现。1:测试1.1:流程设计效果图如下是定义信号和使用信号:xml<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.原创 2021-10-21 14:44:36 · 719 阅读 · 0 评论 -
activiti学习之定时器边界事件
写在前面考虑这样的场景,某个任务先交给小A处理,如果是小A在指定的时间内没有完成任务,则自动将任务交给小B处理,小A不需要继续完成该任务,对于这种场景就可以考虑使用定时器边界事件来完成,下面来一起看下。1:测试1.1:流程设计效果图如下设置定时时间:xml<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xm原创 2021-10-19 18:40:36 · 2550 阅读 · 0 评论 -
activiti学习之手动任务
写在前面手动任务和服务任务效果一样,都是自动执行,都可以定义要执行的类,不同之处在于,服务任务执行的类其实就是在执行任务,而手动任务只是作为一种曾经执行过的标记,具体的应用场景目前我还不知道,想要监听其执行的话可以设置监听器listener。1:测试1.1:流程设计效果图如下是设置执行开始的监听器:监听器源码:package com.jh.activiti;import org.activiti.engine.delegate.DelegateExecution;import o原创 2021-10-17 20:29:48 · 674 阅读 · 0 评论 -
activiti学习之服务任务
写在前面对于工作流,我们使用最多的是用户任务节点,用户任务节点就是给用户来生成任务的,需要人来手动的处理,而与之对应的还有服务任务节点,这种类型的节点需要人手动的参与而是程序来执行,即执行某个类的某个方法,这个类一般是org.activiti.engine.delegate.JavaDelegate的子类。下面我们一起来看下如何使用。1:测试1.1:设计流程效果图其中设置任务节点执行的类设置如下:类定义如下:package com.jh.activiti;import org.ac原创 2021-10-17 16:55:18 · 1172 阅读 · 0 评论 -
activiti学习之兼容网关
写在前面排它网关在多个条件同时满足时,只会选择第一个满足条件,并行网关是无条件的执行所有的执行流,而兼容网关可以看做是二者的结合,有几个满足条件的执行流,就执行几个满足条件的执行流。1:测试1.1:流程设计效果图xml<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w原创 2021-10-16 20:46:34 · 436 阅读 · 0 评论 -
activiti学习之并行网关
写在前面并行网关用于处理流程并发的场景,可以将流程分发到多个执行流程,也可以让多个执行流程合并为一个执行流(但不是必须一起使用),也就是说并行网关有两种行为,分叉和合并。下面我们来一起看下。假设学生请假同时由班长和班主任审批,等到班长和班主任都审批完成后,由校长审批,通过这里场景来进行演示其使用。1:测试1.1:流程世界效果图xml<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://ww原创 2021-10-16 17:29:25 · 1273 阅读 · 0 评论 -
activiti学习之排他网关
写在前面在一些场景中可能不同的条件就流转到不同的节点来执行,比如请假,当请假天数小于等于2天,则直属领导审批,当请假天数大于2天小于等于5天时就部门负责人审批,当请假天数大于5天就董事长审批,这种场景就可以通过排他网关来实现,经过网关,网关会判断哪条流出的线是符合条件的,进而通过该线流转。1:测试1.1:流程设计效果图以下是在网关连接的线上设置的条件,以days>2days<=5为例,具体参考xml文件:xml<?xml version="1.0" encodi原创 2021-10-16 16:26:51 · 2011 阅读 · 0 评论 -
activiti学习之多实例任务
写在前面在实际的业务场景中可能一个节点同时需要多个人来办理,比如开会签到的场景,或者是投票的场景,此时就需要使用到多实例任务,下面我们一起来看下。1:测试1.1:设计流程效果图多实例节点"多实例任务节点"设置如下图:xml<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://原创 2021-10-12 19:15:50 · 1164 阅读 · 0 评论 -
activiti学习之设置条件表达式
1:场景分析可能存在这样的场景,当一个任务节点处理时,录入了不同的信息,需要流转到不同的任务节点,假设请假如果是同意的话则继续流转到下一个审批人,如果是拒绝的话则直接结束。2:测试2.1:流程设计效果图注意设置了同意的流向作为默认的流向,即当条件都不满足是使用该流向。对应的xml信息如下:<userTask id="usertask1" name="第一个请假审批" default="agreeFlowId" activiti:assignee="小赵"> <原创 2021-10-11 15:53:19 · 4748 阅读 · 0 评论 -
activiti学习之多个候选人
写在前面这种方式是在设计流程时指定候选人,在xml中的任务节点对应的属性是activiti:candidateUsers(不同于办理人,办理人是activiti:assignee),如activiti:candidateUsers="admin1,admin2,admin3",下面我们来看下这种方式如何获取指定的候选人并指定一个作为任务的办理人。1:测试1.1:设计流程效果xml<?xml version="1.0" encoding="UTF-8"?><defi原创 2021-10-11 12:31:13 · 2726 阅读 · 0 评论 -
activiti学习之任务分配
写在前面实际场景中,在发起流程或者是提交流程时,一般都会给出一组用户列表,供选择下一步骤的办理人,这个时候就需要进行任务的动态分配,本文我们来分析如何实现这个功能。1:占位符方式在activiti中支持${xxx}占位符的方式来设置办理人,只需要在设计流程时将办理人按照占位符的方式来指定,在运行期,通过 变量来动态设置。1.1:流程图效果其中指定用户任务节点是设置的指定的用户admin,变量任务节点设置的是占位符方式的任务执行人${user}。xml<?xml versio原创 2021-10-11 10:56:51 · 927 阅读 · 0 评论 -
activiti学习之变量
写在前面Activiti中变量类型分为流程变量和任务变量,变量的设置又分基本类型设置,JavaBean类型设置,下面将分别讲解。1:测试使用的流程xml:<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x原创 2021-10-10 11:54:46 · 912 阅读 · 0 评论 -
activiti学习之回退实现
1:创建流程使用 eclipse工作流插件 画图,如下是效果:也可以直接使用如下的xml:<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSch原创 2021-10-09 15:27:56 · 5695 阅读 · 10 评论 -
activiti学习之基础环境搭建
写在前面本文介绍在spring环境中使用activiti。原创 2021-10-09 11:02:05 · 467 阅读 · 0 评论 -
activiti学习之使用eclipse画流程图
写在前面尽管IDEA是当今java开发的主流idea,但是其工作流插件不是特别友好,因此这里选用eclipse中的工作流插件,下面我们一起看下如何在eclipse中配置工作流插件,以及如何进行简单的的使用。...原创 2021-10-09 10:53:48 · 1098 阅读 · 0 评论