- 博客(82)
- 资源 (1)
- 收藏
- 关注
原创 docker-compose启动Rocket MQ及其GUI
"请输入您的Linux服务器IP地址 [默认: 192.168.213.8]: "1、创建脚本文件setup-rocketmq.sh。2、设置脚本文件为可执行权限。4、切换目录,执行yml文件。5、查看是否启动成功。
2025-08-06 16:25:13
374
原创 docker-compose快速部署启动file beat+ELK
1、创建一个脚本文件setup-elk.sh。4、执行切入文件夹执行对应yml文件。2、设置添加该脚本文件为可执行。5、查看是否启动成功。
2025-08-06 16:21:49
320
原创 Flowable31动态表单-----------------------终章
这是所有工作的基础。我们创建一个名为 leave-process.bpmn20.xml 的文件。核心节点与 formKey 设置:申请请假 (User Task):负责人: 由流程发起人自己处理,所以用 ${initiator}formKey: leave-apply-form (这是我们给前端Vue组件起的名字)领导审批 (User Task):负责人: manager (为简化,我们写死;实际项目中会是动态的)
2025-07-19 14:39:18
1436
原创 Flowable30跳过表达式----------------持续更新中
跳过表达式(Skip Expression) 是 Flowable 提供的一种机制,它允许你在流程执行到某个活动(如用户任务、服务任务等)时,通过一个表达式来动态决定是否要“跳过”这个活动。简单来说,你在一个任务上配置一个表达式。在流程准备执行这个任务之前,Flowable 会先计算这个表达式的值:如果表达式的计算结果为 true,那么这个任务就会被自动跳过,流程直接沿着后续的路径继续执行,就好像这个任务已经瞬间完成了一样。
2025-07-17 18:24:32
1108
原创 Flowable29多人会签动态完成条件-------------------持续更新中
在多实例活动(如多人会签)中,completionCondition 是一个可以配置的表达式。Flowable 在每个实例任务完成时都会对这个表达式进行求值。如果表达式求值结果为 true,那么多实例活动就会立即结束,所有其他未完成的实例任务都会被删除,流程继续向下流转。如果表达式求值结果为 false,流程会继续等待其他实例任务的完成。如果所有实例任务都已完成,但该条件从未为 true,那么多实例活动也会正常结束。
2025-07-16 18:52:35
1220
原创 Flowable28多实例的加签减签------------持续更新中
首先要明确,Flowable 的核心是基于 BPMN 2.0 标准的,而这个标准本身并没有明确定义“加签”和“减签”这两个操作。因此,我们实现这些功能,本质上是利用 Flowable 提供的灵活 API,通过一些技巧来“模拟”出这种效果。最常用且最规范的实现方式是基于“多实例任务”(Multi-instance Task)。多实例任务:允许一个任务节点为多个人员创建任务。它可以是:并行(Parallel):为列表中的每个人同时创建一个任务,所有人可以同时审批。
2025-07-16 18:32:19
1118
原创 Flowable27多实例(多人会签)-----------持续更新中
多人会签”的官方术语是 “多实例活动”(Multi-Instance Activity)。它允许一个任务节点(如用户任务、服务任务等)被执行多次,通常是分配给不同的处理人。多人会签是工作流中非常常见的场景,例如:专家评审:一份技术方案需要3位专家同时评审。部门联合审批:一份预算申请需要财务部、行政部、人事部的负责人共同审批。投票表决:一个决议需要委员会半数以上成员同意。Flowable 的多实例活动主要分为两大类:并行会签 和 串行会签。
2025-07-15 18:49:34
1499
原创 Flowable26待签、待办、转办、委派-------------持续更新中
待签”指的是一个任务已经被创建,但还没有分配给一个具体的人,而是分配给了一组人或多个候选人。操作效果:任务被完成,从运行时任务表 (ACT_RU_TASK) 中删除,记录到历史任务表 (ACT_HI_TASKINST)。任务的原始办理人(Owner)仍然是这个任务的负责人,但他/她需要另一个人(Assignee)的协助来完成部分工作。被委派人处理完毕后,需要将任务“归还”给原始办理人,由原始办理人最终完成(Complete)该任务。签收/认领任务 (Claim):将任务从任务池中拿出来,分配给自己。
2025-07-15 09:59:46
1405
1
原创 Flowable25子流程-------------持续更新中
子流程是一个包含其自身活动、网关和事件的流程片段,它本身作为父流程中的一个单一活动存在。从父流程的视角看,整个子流程就是一个黑盒子,有唯一的入口和出口。使用子流程能带来巨大的好处:降低复杂度(Abstraction): 你可以将一个复杂的业务流程分解成几个高阶的步骤,每个步骤都是一个子流程。这使得主流程图非常清晰、易于理解。你可以先关注“做什么”(主流程),再深入到“怎么做”(子流程)。
2025-07-11 15:34:08
943
原创 Flowable24服务任务脚本任务-----------持续更新中
脚本任务是一个自动化的流程节点,当流程执行到该节点时,Flowable 引擎会调用内置的脚本引擎(遵循 JSR-223 规范)来执行预定义的一段脚本。服务任务是一个自动化的活动,当流程执行到该节点时,Flowable 引擎会调用预定义的逻辑。可以把它想象成流程中的一个“便签贴”,上面写着一段小程序,流程执行到这里时,引擎就会拿出这个便签贴,现场解释并执行上面的代码。动态逻辑注入: 脚本是文本,理论上可以存储在数据库或配置文件中,在运行时动态加载,实现比 Java 类更灵活的逻辑变更。这时应使用异步执行。
2025-07-11 11:55:08
1112
原创 GeminiCli安装使用
Gemini CLI 是 google 推出的基于 Gemini 2.5 Pro 模型的开源命令行界面工具,和 claude code 体验比较接近,但是是开源的,源码开放在 https://github.com/google-gemini/gemini-cli,已经有 25.1K star,377 个 issue,1.7K Fork, 77个 Pull requests (截止2025-6-25日晚),非常活跃,采用的是 Apache 2.0 许可证。
2025-07-11 10:15:37
498
原创 Flowable23手动、接收任务----------持续更新中
手动任务(manualTask)是 BPMN 2.0 规范中定义的一种特殊任务类型。它的核心思想是:这个任务是由流程引擎之外的人或系统来完成的,流程引擎本身对这个任务的执行过程一无所知,也不需要进行任何干预。你可以把它想象成一个“占位符”或者“提醒项”。当流程执行到手动任务时,它会:停下来,进入等待状态。不创建任何像用户任务(User Task)那样的待办事项。等待外部通过 API 调用来手动**“告知”**流程引擎:“嘿,这个手动任务已经完成了,你可以继续往下走了。
2025-07-10 17:45:14
971
原创 Flowable22变量监听器---------------持续更新中
变量监听器(Variable Listener)。这个功能并非 BPMN 2.0 的标准规范,而是 Flowable 引擎提供的一个强大扩展,专门用于响应流程变量的变化。可以把它理解为流程中的一个 “后台数据哨兵” 或 “数据变更审计员”。它在后台默默工作,一旦发现某个(或某些)流程变量被创建、更新或删除,它就会立即执行预定义的逻辑。变量监听器的核心是 “事件驱动的后台动作”。它与条件事件最大的不同在于:变量监听器不影响流程的路径。它不会使流程暂停、继续或跳转。
2025-07-10 15:13:35
879
原创 Flowable21条件事件------------持续更新中
这是一个非常典型的企业内部流程。员工提交报销,经理审批。但现实中,经常发生一种情况:员工提交的报销单缺少发票或信息不全。传统处理方式的痛点:直接驳回: 经理直接驳回申请,员工需要重新填写所有信息,发起一个全新的流程,体验很差。线下沟通: 经理通过聊天工具或邮件让员工补充材料,流程在系统中一直处于“待审批”状态,不透明,容易遗忘。使用条件事件的优化方案:经理可以选择“退回补充材料”,流程将自动暂停,等待员工重新上传材料。
2025-07-10 11:51:51
1143
原创 Flowable20补偿事件-------------持续更新中
想象一个生活中的场景:在线预订一次旅行。这个流程包含三个步骤:预订机票(成功)预订酒店(成功)预订租车(失败,比如信用卡额度不足)现在,租车失败了,但机票和酒店已经订好了。整个旅行计划泡汤了,你不能只放着订好的机票和酒店不管。你必须执行“反向操作”来撤销之前的成功步骤:取消机票预订取消酒店预订在 Flowable (以及 BPMN 2.0 规范) 中,这种为已经成功完成的活动执行“反向操作”的机制,就叫做补偿(Compensation)。
2025-07-10 11:16:08
1108
原创 Flowable19升级事件-----------持续更新中
你可以把它想象成在工作中遇到的一个情况:你正在处理一个任务,但遇到一个不确定但又没到完全卡死地步的问题,于是你发了一封邮件给你的经理寻求建议,同时你继续进行任务中其他可以处理的部分。它的核心特点是默认不中断主流程的执行**。非中断(默认且最常用): 当它捕获到升级信号后,会启动一条并行的分支来执行处理逻辑(例如通知经理),但原有的活动(如“经理审批”)并不会被中断,仍然可以继续执行。triggeredByEvent=“true” 表明这是一个事件子流程,它没有常规的流入顺序流,而是由其内部的启动事件触发。
2025-07-10 10:30:24
950
原创 Flowable18取消事件------------持续更新中
作用: 当流程执行到事务子流程内部的这个“取消结束事件”时,它会立即中断子流程当前的执行,并抛出一个“取消”信号。回滚完成后,流程从 cancelBoundaryEvent 引出的路径继续执行,即 notifyUserOfFailureTask(通知用户下单失败),然后流程结束。改变流程路径: 流程将从这个边界事件引出的路径继续往下执行,通常这条路径会通向一些处理失败的逻辑,比如“通知用户订单失败”、“记录失败日志”等。作用: 它的唯一作用就是等待并捕获其所附着的事务子流程内部抛出的“取消”信号。
2025-07-10 10:12:38
860
原创 Flowable17错误事件---------------持续更新中
try 块:就是那个可能会出问题的活动(通常是一个服务任务 Service Task)。throw new Exception():就是从服务任务的代码中抛出一个特定的业务错误。catch (SpecificException e) 块:就是附加在服务任务边界上的错误边界事件 (Error Boundary Event),它专门捕获这个特定的业务错误,并把流程引向一个预定义的“异常处理”路径。
2025-07-09 17:36:17
686
原创 Flowable16信号事件----------------持续更新中
信号事件就像一个公共广播系统。当一个信号被“抛出”(Throw)时,它不是发给某一个特定的流程实例,而是向整个 Flowable 引擎广播一个通知。所有正在等待这个信号的流程实例(们)都会同时“捕获”(Catch)到它,并继续执行。这是一种 一对多 (One-to-many) 的通信模式。
2025-07-09 16:46:41
1217
原创 Flowable15消息事件----------------------持续更新中
在绘制事件之前,最好先定义好你要使用的“消息”。在 Flowable-UI 的流程编辑器中,点击画布的空白区域。在右侧的属性面板中,找到并展开 Messages(消息)部分。点击 “Add message…”。在弹出的窗口中,填写 Message ID (例如 message_order_paid) 和 Name (例如 订单已支付消息)。这个 ID 就是我们前面说的 Message Name,是匹配的关键。
2025-07-08 16:38:20
1040
原创 Flowable14定时器事件----------------持续更新中
无论哪种定时器事件,其核心都是配置一个“时间规则”。Flowable 支持标准的 BPMN 2.0 格式,主要有三种:特定日期 (Time Date - ISO 8601)格式:YYYY-MM-DDTHH:MM:SS含义:在某个精确的日期和时间点触发。示例:2025-01-01T00:00:00 表示在2025年元旦零点触发。用途:用于一次性的、已知的未来时间点。时间周期 (Time Duration)格式:P[n]Y[n]M[n]DT[n]H[n]M[n]S。
2025-07-07 17:34:27
1818
原创 Flowable13事件----------------持续更新中
在 Flowable(以及其遵循的 BPMN 2.0 规范)中,事件是流程模型的核心组成部分。它表示在流程执行过程中发生的事情。事件不是一个“任务”或“活动”,它更像是一个触发器或一个信号,它能启动流程、结束流程、改变流程路径或对外部刺激做出反应。理解事件的关键在于,它们代表了业务流程中那些“等待”和“响应”的时刻。
2025-07-07 10:59:15
960
原创 Flowable12基础流程实战资金申请------------持续更新中
ps:由于只写了一个工作流业务所以很多代码没有提取成公共代码,若是你的项目中引入工作流,简易先写一个service封装一下基本的工作流操作。当然也可以加上一个监听器来控制一下日志的输出或者根据业务干一些其他的事情。到这就完事了,目前功能只是简单的操作,基本可以完成大部分线性业务。如下是一个资金申请.bpmn20.xml,我们将要完善后端代码。现在根据我们前11章学的内容,练习一个小Demo来串通一下。那么接下来将要完善一下后台代码是如何实现的。xml文件就不写了,纯纯的crud。
2025-07-03 17:10:49
358
原创 Flowable11任务驳回退回-------------------持续更新中
在真实的工作流应用中,除了线性的“同意”和“驳回”,灵活的流程控制能力(如撤销、撤回、退回)是必不可少的。下面,我将详细解释这四种常见流程操作的概念、实现思路以及在 Flowable + Spring Boot 项目中的具体代码实现。首先,我们必须明确这几个词在工作流上下文中的精确含义,因为混淆它们会导致错误的实现。
2025-07-03 11:31:37
2085
原创 Flowable10网关--------------------------持续更新中
网关类型选择路径数量决策依据汇聚行为核心比喻排他网关有且仅有1条连线上的条件,先满足者优先不适用(通常不用于汇聚)if-else并行网关全部无条件,全部分叉等待所有流入分支到达fork-join包容网关1条或多条连线上的条件,满足的都走等待所有被激活的分支到达智能fork-join事件网关有且仅有1条哪个事件先发生不适用“赛跑”在日常开发中,排他网关和并行网关可以满足95%以上的业务需求。请优先掌握这两种。当遇到复杂的“可选并行”场景时,再考虑使用包容网关。
2025-07-02 15:15:41
641
原创 Flowable09Task---------------持续更新中
Task 是Flowable工作流的核心执行单元,它定义了“谁,在何时,需要做什么事”。用户任务 (User Task) 是流程中的人工处理节点,它的生命周期包括创建、分配、查询、认领、完成等一系列标准化操作,这些操作都通过强大的 TaskService API来完成。服务任务 (Service Task) 则是流程中的自动化处理节点,由系统在后台自动完成。
2025-07-02 11:44:06
1284
原创 Flowable08流程变量--------------持续更新中
*流程变量 (Process Variables)。**这是 Flowable (乃至所有BPMN引擎) 中最基本、最重要的概念之一。掌握了它,你就掌握了驱动流程运转的“燃料”。简单来说,流程变量是附加到单个流程实例上的数据。可以将其想象成一个“数据背包”,这个背包会从流程开始的那一刻起,一直跟随着这个流程实例,直到它结束。流程中的每一个节点(无论是自动任务还是人工任务)都可以从这个背包里读取数据,也可以往里面放入新的数据,或者更新已有的数据。这个“背包”里的数据,就是流程变量。
2025-07-02 10:32:09
884
原创 Flowable07用户组--------------------持续更新中
这通常需要您创建自定义的 UserEntityManager 和 GroupEntityManager,并将其注入到 Flowable 的流程引擎配置中。简化版示例(以集成 Spring Security 为例):假设您的 Spring Security 提供了 UserDetailsService 来加载用户信息和角色。
2025-07-01 17:28:36
1123
原创 Flowable06分配用户
任务分配是工作流应用的核心,直接决定了“工作”如何流转到“正确的人”手中。Flowable 提供了非常灵活且强大的任务分配机制,下面我将为您进行详细的解释说明。在 Flowable 中,任务的分配策略是在设计BPMN流程图时,通过设置用户任务 (User Task) 的属性来定义的。概念:最简单的分配方式。直接将任务指派给一个唯一确定的用户。一旦设置了 Assignee,这个任务就有了明确的“主人”,只有这个用户能看到并处理它。
2025-07-01 17:10:38
842
原创 Flowable05员工请假流程的接口开发---------------------持续更新中
操作一个流程的本质,就是通过调用 Flowable 提供的各种 Service API,来与流程引擎进行交互。推进:使用 TaskService 查询 分配给用户或用户组的任务,然后完成它,同时可以传入新的流程变量来影响流程走向。启动:使用 RuntimeService 根据流程定义的 Key 启动一个流程实例,并可以传入初始的流程变量。现在,流程停在了某个用户的待办事项中。下面,我将以我们之前创建的“员工请假流程”为例,分步详解如何操作一个流程。当一个员工想要请假时,我们就需要为他启动一个新的流程实例。
2025-07-01 16:13:20
475
原创 Flowable04流程引擎与Service服务类----------持续更新中
经过上文的介绍,我们已经使用 Flowable Modeler 创建出对应的BPMN流程,并需要导出该文件交由后端项目使用。操作步骤非常直观:首先,在 Flowable UI 中点击 Flowable Modeler 应用,进入该界面后我们会看到所有已创建的流程模型。点击目标流程(如“员工请假流程”),在设计器界面的右上角找到并点击下载 (Download) 按钮,即可将流程定义保存为 .bpmn20.xml 文件。
2025-07-01 15:01:04
1175
原创 Flowable03BPMN------------------持续更新中
经过上文我们已经了解到了flowable的表,那么摆在我们面前的问题就是如何生成BPMN,BPMN里面有什么东西?首先,创建BPMN文件有很多种方式,甚至你可以使用人工智能让它给你创建,但是通常使用idea插件、flowableui等方式。这里我们就采用flowableui的方式生成BPMN文件(ps:若是工作流程不复杂直接ai生成一个就行)。flowableui有window版也有Linux版,这里我为了方便开发就采用的Linux版。
2025-07-01 11:07:09
1004
原创 Flowable02表结构--------------持续更新中
你上传一个 BPMN (BPMN 是一套国际公认的、标准化的图形化语言,专门用来画业务流程图)文件。在 ACT_RE_DEPLOYMENT 中创建一条部署记录。在 ACT_GE_BYTEARRAY 中存储 BPMN 的 XML 内容。在 ACT_RE_PROCDEF 中创建一条或多条流程定义记录。你根据 ACT_RE_PROCDEF 的 KEY 来启动一个新流程。在 ACT_RU_EXECUTION 中创建一条根执行实例(代表流程实例)。
2025-06-30 16:57:07
878
原创 Flowable01SpringBoot项目的引入--------------------每天都会更新,自学中
来到这的人想必已经知道flowable的作用以及用途,下面就直接解释如何在springboot中引入flowable并进行一系列的操作。启动之后我们就会发现数据库中多了60多张表,flowable就是使用这些表完成业务操作的。这样我们项目中就已经初步引入flowable。1、首先引入依赖(根据你的boot版本3选择7,boot2选择6)我这里是boot3。第二篇文章介绍这些表具体有什么作用,核心表是那些。可以关注一下本系列,持续追踪一下。2、修改配置文件yml,添加内容。3、配置线程池,创建一个类。
2025-06-30 16:24:24
718
原创 ELK监控jar
Filebeat 是一个轻量级的日志托运工具(Shipper),它可以安装在您的应用服务器上,专门用来监听文件变化(比如日志文件的新增内容),然后将这些变化发送给 Logstash 或直接发送给 Elasticsearch。至此,您已经成功搭建了一条完整的日志处理流水线:Java App -> Log File -> Filebeat -> Logstash -> Elasticsearch -> Kibana。现在,这个终端会保持运行,每5秒钟就会有一条新的日志被写入 app.log 文件。
2025-06-27 16:06:15
1002
原创 dockercompose快速安装ELK
volumes: 我们为 Elasticsearch 的数据创建了一个名为 es-data 的持久化数据卷,这样即使容器被删除,数据也不会丢失。networks: 我们创建了一个名为 elk-net 的桥接网络,让三个容器可以通过服务名(elasticsearch, kibana, logstash)相互通信。应该能看到 Kibana 的欢迎界面。Output: 将数据发送到名为 elasticsearch 的主机的 9200 端口,并根据日期创建索引(例如 logstash-2025.06.26)。
2025-06-26 16:19:02
1194
原创 Bean named ‘formService‘ is expected to be of type ‘org.flowable.engine.FormService‘ but was actuall
flowable
2025-03-05 11:36:34
195
原创 jdk多版本来回切换不生效
将%JAVA_HOME%/bin提到最前头,就解决了。但是安装完17后发现怎么切换版本都是17,如图。但是需要注意的是jdk11以上就没有jre了。本人电脑安装了两个jdk1.8跟17。解决思路也很简单,就是找到path。
2024-10-10 12:04:52
426
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅