- 博客(18)
- 收藏
- 关注
原创 SpringBoot整合Liquibase提升数据库变更的可控性、安全性、自动化程度(最详细)
Liquibase是一个开源数据库版本控制工具,能够有效管理数据库变更。它通过维护changeset变更集,实现团队协作开发、自动化部署和环境一致性。主要优势包括:版本管理避免冲突、自动执行变更脚本、支持精准回滚、防止数据库漂移、满足审计需求。SpringBoot整合Liquibase步骤:1)添加依赖和插件配置;2)设置yml文件;3)构建XML文件架构;4)使用generateChangeLog生成初始脚本;5)通过changeSet维护表结构变更。支持多种回滚方式(按数量/标签/时间),并提供分文件管
2025-07-25 17:57:12
1021
原创 使用钉钉开源api发送钉钉工作消息
在工作管理系统场景中,上下级和不同部门之间常常有请假,餐补等流程操作,而这些操作通常需要人员手动进行,这里我们引入一个钉钉的api,可以基于钉钉来发送工作消息通知。
2025-07-24 11:58:25
587
原创 flowable候选人及候选人组(Candidate Users 、Candidate Groups)的应用包含拾取、归还、交接
Flowable中的任务分配机制:候选人/组与办理人摘要:Flowable通过候选人(CandidateUsers)和候选人组(CandidateGroups)实现动态任务分配,将任务预分配给特定用户或角色组。候选人机制支持任务池模式,允许组内成员认领任务,而直接分配(Assignee)则指定具体负责人。关键特点包括:1)解耦流程定义与具体人员;2)支持工作组协同;3)灵活的任务可见性控制。实现方式包括BPMN定义、运行时API设置及任务后修改。典型应用场景涵盖审批流程、工单处理等需要动态分配的业务场景。
2025-05-31 16:36:18
994
原创 flowable中流程变量的概念(作用域)
明确变量应该放在哪个作用域(流程实例、执行流、任务)决定了它的生命周期和谁能访问它。优先使用能满足需求的最小作用域(如任务本地变量),避免不必要的“全局”污染。
2025-05-31 09:30:00
841
原创 flowable监听器及其使用场景
在 Flowable 工作流引擎中,是扩展流程行为的关键机制,它允许开发者在流程执行的特定节点注入自定义逻辑。监听器提供了非侵入式的扩展方式,无需修改流程定义就能增强流程功能。在流程引擎中,和是三种不同粒度的监听器,它们在作用范围、触发时机和使用场景上有显著区别。:绑定到(如ServiceTask、SequenceFlow):绑定到引擎所有事件节点级逻辑 → ExecutionListener任务级操作 → TaskListener系统级监控 → EventListener。
2025-05-30 14:46:15
1455
原创 flowable的基础使用
这里构建一个休假流程,flowable引擎使用BPMN2.0格式定义流程。从流程定义中,可以启动许多流程实例。将流程定义视为许多流程执行的蓝图。在这个特定的例子中,流程定义定义了请假所涉及的不同步骤,而一个流程实例匹配一个特定员工的休假请求。BPMN 2.0以XML格式存储,但它也有可视化部分:它以标准方式定义了如何表示每种不同的步骤类型(人工任务、自动服务调用等)以及如何将这些不同的步骤相互连接。使用的流程定义如下:我们假设流程是通过提供一些信息来启动的,比如员工姓名、请假天数和描述。
2025-05-17 15:04:32
1086
原创 LiteFlow入门使用
利用LiteFlow,你可以将瀑布流式的代码,转变成以组件为核心概念的代码结构,这种结构的好处是可以任意编排,组件与组件之间是解耦的,组件可以用脚本来定义,组件之间的流转全靠规则来驱动。LiteFlow拥有开源规则引擎最为简单的DSL语法。十分钟就可上手。组件可实时热更替,也可以给编排好的逻辑流里实时增加一个组件,从而改变你的业务逻辑。LiteFlow的脚本组件,支持众多脚本语言,完全和Java打通,你可以用脚本来实现任何逻辑。
2025-03-06 20:48:43
1783
原创 美团开源分布式ID框架Leaf
首先根据官网描述:常见生成全局ID的方法:上述每种方案都不符合我们的要求所以我们这里使用Leaf来实现分布式ID,它的描述是“世界上没有两片完全相同的树叶”它分别在上述第二种和第三种方案上做了优化使用美团Leaf有两种实现方案,号段模式:Leaf-segment和雪花算法模式:Leaf-snowflake接下来我们就来说明一下怎么样用Leaf来得到分布式ID:在使用数据库的方案上做了如下改变:原方案每次获取ID都得读写一次数据库,造成数据库压力大。预分配 ID 段号段模式(Segment Mode)通过预
2025-03-02 16:18:25
1268
原创 RBAC模型
角色层次结构允许角色之间存在继承关系,一个角色可以继承另一个角色的权限。包含RBAC 2的所有功能:互斥角色、先决条件角色和角色卡数限制等约束规则,综合管理:可以同时利用角色继承和约束规则,提供最全面的权限管理解决方案。角色继承:一个角色可以继承另一个角色的所有权限。比如,角色B继承角色 A的权限,那么角色B 不仅拥有自己定义的权限,还拥有角色 A的所有权限。权限传递:继承关系是传递的,如果角色C继承角色 B,而角色 B继承角色 A,那么角色C将拥有角色 A 和角色 B 的所有权限。
2025-02-18 14:40:30
1837
原创 Mybatis-Plus使用逻辑删除
逻辑删除是只用某一个字段作为表示位表示是否被删除,例如这张表中的show_stataus,如果是1就代表要显示不删除,如果是0代表不显示,要删除。<4> 这时候调用删除方法就会将逻辑关键字1置为0代表删除。
2024-12-16 14:10:40
349
原创 基于SaToken实现微信小程序登录功能
所谓登录认证,指的就是服务器校验账号密码,为用户颁发 Token 会话凭证的过程,这个 Token 也是我们后续判断会话是否登录的关键所在。
2024-12-16 13:39:25
920
原创 RabbitMQ从基础到进阶
交换机:负责路由和转发消息,没有储存消息的能力这里想要将消息路由到对列就要让交换机和对列产生关系如果支付服务与mq之间的网络交互出现故障,那么这条消息就无法到达mq,最终交易服务就收不到消息。还有一些情况导致发出的消息未被消费。消息的可靠性就是要保证一个消息发出以后至少被消费一次消息出现丢失的可能性有三种:消息发送的时候丢失;mq消息代理时消息丢失;消费者在交易服务时消息丢失;所以保证消息的可靠性要保证这几个方面:发送者的可靠性;MQ的可靠性;消费者的可靠性;延迟消息;
2024-12-15 16:12:32
1083
原创 后端使用JSR303功能进行分组校验
(3、定义一个异常处理类来集中处理所有异常(定义异常处理类时要在类上加上@RestControllerAdvice注解并设置处理哪个包下的异常,@RestControllerAdvice注解里面封装了@ControllerAdvice和@ResponseBody注解,可以将错误的提示信息以json格式返回)(2、给对应表字段的实体类Bean添加上校验注解,并在校验注解上添加上自定义的校验提示信息和分组接口。具体有哪些校验注解可以参考官方文档。这样就可以方便我们处理一些复杂场景。
2024-11-09 14:38:32
256
原创 nacos作为注册中心和配置中心
(2、编写一个接口,告诉springcloud这个接口需要调用远程服务 (创建一个feign包用来存放远程接口)(编写接口:1、在创建的接口上加上@FeignClient("需要调用的服务名")注解告诉springcloud这个接口是个远程客户端,需要调用远程服务。2、将需要调用的服务的方法的完整签名写在接口上,声明接口的每一个方法都是调用哪个远程服务的哪个请求。这样在这个服务中想要调用别的服务,就只需要将这个远程调用接口注入进来就可以使用这个接口调用的远程服务的方法。3、注入对应配置并打开动态更新功能。
2024-10-31 08:57:41
587
1
原创 备赛蓝桥杯-好数
题目要求输入一个整数N并输出从1到这个整数N之间好数的数量。对此我们可以定义一个方法getResult来做一个是否是好数的判断,要判断一个数是否是好数,就要判断这个数的奇数位和偶数位是奇数还是偶数,这里我们定义了一个变量i=1,通过i%2的值来判断当前数N%10是位于奇数位上还是偶数位上,再通过(N%10)%2来判断当前数是奇数还是偶数。每次循环最后再将i++,N向下一位取整,继续对下一位进行判断,直到N=0.
2024-10-25 13:22:58
215
1
原创 备赛蓝桥杯-分布式对列
题目要求输出每次query查询的副节点同步主节点的数量,由于只关注同步的元素数量,所以我们就只需要维护副节点同步主节点元素的数量,而不需要维护同步的具体的数。这样我们就可以通过条件判断(如果输入add就在result[0]++,sync x就在result[x]++,query就进行查询判断操作)来控制,我们收获结果和输出就写在条件query内。因为只需要判断每个副节点的最小元素数量就可以判断出副节点同步主节点的数量,所以这里收获结果的逻辑就用取最小值min的方法来判断。
2024-10-25 13:02:25
341
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人