Java
文章平均质量分 89
风中思絮
精通各种流程引擎,源于开源,强于开源,回馈开源!
展开
-
activiti7 实现 flowable 自由跳转方式的可行性研究
activiti7 实现 flowable 自由跳转方式的可行性研究背景新flowable6.X 自由跳转API难点activiti7实现AbstractDynamicStateManagerChangeActivityStateBuilderChangeActivityStateBuilderImplChangeActivityStateCmdDefaultDynamicStateManagerDynamicStateManagerMoveActivityIdContainerMoveExecutionE原创 2021-07-16 14:41:16 · 1999 阅读 · 9 评论 -
低代码开发平台建设步骤及思考
前言由于毕业至今一直从事于企业应用相关的工作,在整个过程中有很多思考。包括低代码最早运用于bpm行业。随着2020年疫情,推动了整个企业应用相关的进程,尤其突出的是重新提出的 低代码甚至零代码开发平台,在大放异彩。下面谈谈我在这个方面的经验,如有兴趣,可以有空细聊。什么是低代码开发平台低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法(参考可视编程语言),使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模原创 2021-03-11 23:29:26 · 9494 阅读 · 0 评论 -
Pinpoint 分布式系统性能监控工具
Pinpoint 是什么Pinpoint是一款全链路分析工具,提供了无侵入式的调用链监控、方法执行详情查看、应用状态信息监控等功能。基于GoogleDapper论文进行的实现,与另一款开源的全链路分析工具Zipkin类似,但相比Zipkin提供了无侵入式、代码维度的监控等更多的特性。 Pinpoint支持的功能比较丰富,可以支持如下几种功能:服务拓扑图:对整个系统中应用的调用关系进行了可视化的展示,单击某个服务节点,可以显示该节点的详细信息,比如当前节点状态、请求数量等实时活跃线程图:监控应用内活跃线转载 2021-01-18 11:52:52 · 949 阅读 · 0 评论 -
关于流程引擎与业务如何保证数据一致性研究
项目背景由于项目中使用了flowable流程引擎,然后自己在flowable基础上维护了一套自己的业务表数据。如果处理不当这样会引起 数据一致性问题。 即 我数据插入了流程引擎表,但是业务表插入失败了,二者数据不一致。如何处理? 下面详细分析一下如何处理这种情况。问题描述如何保证 流程引擎数据库 与 业务表数据一致性解决方案单机环境大多数人看到这个问题的时候应该会想到可以通过事务来设置。将事务管理器 transactionManager 设置进 flowable 的配置文件。@Con原创 2021-01-06 17:33:12 · 1502 阅读 · 0 评论 -
Java 实现位运算计算加减乘除
机器数和机器数的真值一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用机器数的最高位存放符号,正数为0,负数为1。举个例子,比如在机器字长为8位的情况下(机器字长是指计算机直接处理的二进制数据的位数,它决定了计算机的运算精度,一般是8的整数倍,8位、16位、32位、64位、128位),十进制中的+3,转换成二进制就是0000 0011,如果是-3,转换成二进制就是1000 0011。转换的二进制数0000 0011和1000 0011就是机器数。这里我们还需要知道的就是机转载 2021-01-06 16:53:38 · 1415 阅读 · 0 评论 -
leetcode (一)时间复杂度和空间复杂度
前言准备刷leetcode时 必须了解如何计算复杂度(时间复杂度 空间复杂度)为了解决同一个问题,往往可以采用不同的算法。那么,如何来评判算法的优越性?这里,我们往往通过算法的时间复杂度和空间复杂度来评判某一算法的性能。然而,很多时候,时间复杂度与空间复杂度往往是鱼与熊掌的关系。时间复杂度时间复杂度:评估执行程序所需的时间。可以估算出程序对处理器的使用程度。时间复杂度并不是表示算法所花费的具体时间大小,而是表征算法运算时间与输入之间的关系。一般以 表示算法复杂度,这里的 通常为:常数转载 2021-01-04 21:03:48 · 1082 阅读 · 0 评论 -
dubbo 连接灵魂三问
前沿目前在看深度剖析ApacheDubbo核心技术内幕一书![(https://img-blog.csdnimg.cn/20201229103448862.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXpob3VsaW4=,size_16,color_FFFFFF,t_70),发现几个很有意思的问题:第一点:由于同一个服务提供者机原创 2020-12-29 10:54:11 · 572 阅读 · 0 评论 -
springboot中banner的使用
项目背景目前开源EasyBpm 项目 需要定制化banner技术研究参考 springboot启动bannerspringboot的默认banner如下:源码分析在启动时会检查根配置目录下有无banner.txt文件,源码如下:解决方案注:自定义banner:有多种方式:可自行在application.yml或者application.properties中注入banner.location并将自定义图形文件(banner.txt)放入该目录下指定banner.ima原创 2020-12-16 16:05:39 · 3408 阅读 · 0 评论 -
Java Arrays.asList() add UnsupportedOperationException
项目场景:今天在使用 Arrays.asList() 时,使用 add 方法,出现了一个很奇怪的问题。问题描述:List<String> actionList = Arrays.asList("1","2");actionList.add("3");出现以下异常 java.lang.UnsupportedOperationException: null at java.util.AbstractList.add(AbstractList.java:148) at java原创 2020-12-10 11:37:52 · 201 阅读 · 0 评论 -
记一次nacos CUP线程过高排查
问题描述截图原创 2020-12-02 10:18:13 · 4635 阅读 · 0 评论 -
java 通过模板生成导出PDF方案对比
需求背景目前项目中有通过 上传word模板,结合用户填写数据,导出渲染后的PDF数据,提升数据安全性。现记录一下使用过程及遇到的问题项目技术制作模板步骤常见问题1. 元素类型 "meta" 必须由匹配的结束标记 "</meta>" 终止。问题原因flying saucer对xml格式要求很严格,因此必须是完整的格式。(尝试使用过 Jsoup.parse(formatContent).html() 修复格式,但是发现 这个问题还是不能修复,目前只能手动改)问题描述or原创 2020-11-27 16:49:38 · 1969 阅读 · 0 评论 -
插件式框架技术可行性研究
插件式框架技术可行性研究前沿纯粹属于突发奇想,落地可能比这情况复杂多,这里暂只提供可行性研究,后续如果有时间可能会提供出demo,目前仅供参考,有兴趣的可以一起讨论。需求背景因为我主要从事与流程引擎相关的工作,最近突发奇想,因为不同的公司可能会有类似的流程。能不能将现有的 流程引擎应用,升级为流程引擎中心。通过引入插件开发者,增强系统的核心竞争力。类似与 jira 插件 或者 微信/支付宝 等小程序模式。技术原理通过类加载机制,加载远程或指定路径的bean,从而实现项目插件化的目的。技术准备原创 2020-10-26 11:08:23 · 1003 阅读 · 0 评论 -
flowable BUG及修复方式(6.4.2)
1. 修复历史记录表 不会设置assignee 及 owner 字段值。问题描述: 历史记录表记录数据时,assignee 及 owner 字段值 为空!解决方案: 手动设置对应字段值 HistoryManager historyManager = Context.getProcessEngineConfiguration().getHistoryManager(); taskEntity.setAssignee(userTaskAssignee); taskEntity.setOwner(use原创 2020-09-25 14:05:24 · 1119 阅读 · 1 评论 -
Java常用编码套路
前因最近线上环境经常出现OOM,导致系统崩溃,在排查过程中,发现代码在使用多线程时有很多不规范的地方,导致内存泄露,因此我决定整理出一些常用的示例,在使用时 直接套用即可。因个人技术水平有限,如有错误,望指正。宗旨代码可以不是最高效和最简洁的,但一定会是最安全和清晰明了的。1. 流什么情况下需要手动关闭为什么要关闭流一个对象在没有被引用变量指向的时候它会变成垃圾,最终会被垃圾回收器从内存中清除,对于我们创建的流对象,干嘛还要"调用close方法将其进行关闭呢,以释放与其相关的资源"呢?当我们在原创 2020-09-23 17:02:25 · 255 阅读 · 0 评论 -
数据结构学习方案
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html原创 2020-09-23 14:39:38 · 138 阅读 · 0 评论 -
Centos 开启虚拟内存
Centos 开启虚拟内存开始设置#if 表示infile,of表示outfile,bs=1024代表增加的模块大小,count=16384000代表16384000个模块,也就是16G空间dd if=/dev/zero of=/var/swap bs=1024 count=16384000mkswap /var/swapmkswap -f /var/swapswapon /var/swap修改文件vim /etc/fstab添加一行/var/swap swap swap default原创 2020-09-21 11:44:21 · 673 阅读 · 0 评论 -
短链接思路及实现方案
前因目前项目中在用一个后端生成二维码的功能,因为二维码传递信息过多,导致 二维码帧点数过多,最后形成的图片太密集,用手机识别时 需比较长的时间。那么碰到这种情况改如何处理呢?处理前:处理后:问题分析二维码太密的原因是 传递的信息太多,那么,我们是否可以通过减少传递的信息,来降低二维码密集度。目前有两个方向:1. 产品方向: 因为传递的参数为了安全性,是加密后的,因此太长。为了安全性,因此这个方向可以直接放弃了。2. 技术方向: 因为之前刚好调用过新浪的短链接生产接口,用短链接与长链接相互原创 2020-08-25 09:39:33 · 2902 阅读 · 1 评论 -
jenkins自动化构建Java项目
jenkins自动化构建Java项目基础环境dockercentos7第一步 安装jenkins注意事项:1. 创建 挂载目录,并指定端口 mkdir /data/docker/jenkins 2. 指定 运行用户 -u root 表明用root用户运行,否则默认为jenkins用户 并获取解锁密码docker run -d -p 8083:8080 -p 50001:50000 -e TZ="Asia/Shanghai" -v /data/docker/jenkins:/va原创 2020-08-20 17:57:00 · 516 阅读 · 0 评论 -
开源流程引擎地址
前沿经过最近一个多月的准备,目前开源引擎一期已基本开发完毕,目前正在内测中,如有问题可以及时与我联系,内测完毕后 即放出内测代码地址,下面是预览地址:http://120.77.218.141:9992/bpm-web/index.html涉及技术前端: vue + elementui后端:springboot 2.2.Xdubbo 2.6.5mysql 5.8redis配置中心: nacos 1.2.0注册中心: nacos 1.2.0发布部署: jenkins 2.50.0MA原创 2020-08-12 11:55:21 · 933 阅读 · 0 评论 -
flowable 流程实例新增临时节点
flowable 流程实例新增临时节点需求目的flowable 自带实现方式结果分析:**解决方案**功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowch...原创 2020-04-16 18:10:56 · 12281 阅读 · 52 评论 -
解决 flowable 无 租户 和 ID 组合启动的问题
问题描述:由于目前项目采用多租户方式和指定 流程编号 方式组合启动流程,但是发现 flowable 未提供对应方式,那么该如何解决呢?源代码截图解决方案仔细查看 runtimeService 发现提供了 构造器启动方式,因此可以采用该方法 启动流程启动方式可以改成如下: Authentication.setAuthenticatedUserId(String.valueOf(applyAddReqDTO.getStartUserId())); /* 以Buil原创 2020-06-23 15:15:17 · 1916 阅读 · 1 评论 -
bpmn-js 流程设计器 与 flowable/activiti 拓展的可行性研究
bpmn-js 流程设计器 与 flowable/activiti 拓展的可行性研究前因先上效果图涉及技术引用前因最近在准备开源一款流程引擎项目,主要包含 流程设计器 表单设计器 流程引擎,碰见了一个问题 开发过程中 经常需要拓展节点或节点元素,因为bpmn规范可能不满足实际项目需求。记录一下 解决思路。先上效果图涉及技术前端使用 bpmn.js拓展 flowable.json或者 activiti.json,新增我们 拓展的节点及元素。{ "name": "Flowable",原创 2020-06-18 09:49:34 · 8438 阅读 · 13 评论 -
解决 redis 序列化 java8 LocalDateTime 问题
解决 redis 序列化 java8 LocalDateTime 问题问题背景问题描述问题分析解决方案一(全局)解决方案二(单个字段)问题背景目前项目全面支持JDK1.8,使用 LocalDateTime 代替 Date,原因为 date 格式化时不安全。问题描述org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Can not construct instance of ja原创 2020-06-15 11:46:13 · 3188 阅读 · 0 评论 -
MybatisPlus 3.X 与lombok @Builder 冲突 解决方案
问题描述最近将MybatisPlus 由 2.X 升级至 3.X 结果发现了一系列血案,最头痛的是 我一个实体类 使用了@Builder 命名设置的为 String 字段,访问时返回 以下错误:问题原因@Bulider 与 MybatisPlus 3.X 冲突,后续我有空看下源码,记录一下问题解决方案同时加上 @Builder @AllArgsConstructor @NoArgsConstructor...原创 2020-06-12 10:38:49 · 1958 阅读 · 1 评论 -
bpm 项目框架搭建
项目框架目前项目框架主体已搭建完毕,后续即将正式开发,敬请期待-。-前端 VUE2.X流程设计器 bpmn.js 2.0表单设计器 k-form-design后端 1. springboot 2.2.X 2. flowable 6.4.1 3. dubbo 2.6.5 4. mybatisplus存储 1. redis 2. mysql配置中心 nacos 效果图1. 流程设计器![在这里插入图片描述](https://img-blog.cs原创 2020-06-05 15:31:32 · 2595 阅读 · 2 评论 -
解决easyExcel读取EXCEL用String去接收数字,出现小数点BUG
起因目前项目中需要使用easyExcel 读取Excel文件,因为后端使用mongodb存储格式,数据格式不确定。因此读取文件时,未传递.class对象(指用方法一调用),使用String 接收Number 类型时,出现 .0情况。官方文档分析easyExcel 官方文档描述如下, 如果传递了 .class 对象接收,则可以使用官方的NumberFormat.format()方式处理。...原创 2020-04-28 11:38:27 · 19162 阅读 · 12 评论 -
根据配置反向生BpmnModel
需求来源有的时候我们需要动态调整流程图,每次调整时都需要修改、部署 及发布等操作 才能正常生成我们想要的BpmnModel。这个时候就想,我们能不能通过数据库配置,反向生成流程图呢?当然可以,这个也可以解决动态加节点问题。正向: 流程设计器设计-》保存到-》BpmnModel=》部署=》发布 适用与业务人员反向: 数据库=》BpmnModel 适用与对产品非常熟悉的开发人员数据...原创 2020-04-21 15:39:43 · 452 阅读 · 0 评论