flowable流程引擎生成流程图——支持多颜色标注与解决中文乱码
标签:  后端
627 ·
9 ·
2020-05-08 10:59
最新一次编辑的原因:

此文章写于:flowable6.5.x,springboot 2.2.x

flowable官方API接口类为:org.flowable.image.ProcessDiagramGenerator,其中提供生成流程图方法,但是默认字体为Arial(中文乱码),且仅高亮红色支持。

 

原生API使用方式:

ProcessEngines.getDefaultProcessEngine().getProcessEngineConfiguration().getProcessDiagramGenerator()

.generateDiagram(...)

 

修改后使用方式:

new CustomProcessDiagramGenerator(需高亮节点集合).generateDiagram(...)

 

1.多颜色

实现方式:自定义CustomProcessDiagramGenerator、CustomProcessDiagramCanvas,不更改逻辑,直接拷贝DefaultProcessDiagramGenerator,DefaultProcessDiagramCanvas实现方法,替换DefaultProcessDiagramCanvas为CustomProcessDiagramGenerator。

详见文末具体代码(需要更改着色代码部分已用“// TODO 画图颜色” 注释标注)

 

2.中文乱码解决

方法一:字体改为宋体(部署服务器需安装该字体,其他字体同理)

方法二:加载项目本地字体:

修改CustomProcessDiagramCanvas的initialize的字体生成代码:

原:

 

修改后:

本处字体文件存放于resources目录下的fonts。
 

详见文末具体代码。

 

代码地址:  https://pan.baidu.com/s/1JZtYlUJKSan3Csbz9NFbrg 提取码: vq94 
 

 

 

 

 


本作品系原创,采用《署名-非商业性使用-禁止演绎4.0 国际》许可协议.转载请说明出处
本文链接:https://www.upupor.com/u/20050810597134587904 复制分享
评论9
upupor
upupor
2020-05-08 13:20 · 回复

看了代码,感觉绘制流程图好复杂

liyanggyang
liyanggyang
2020-05-08 14:09 · 回复

@upupor : 对啊 ,看着太复杂杂乱了,我当时都理了很久。这应该是历史原因造成了,flowable继承于activiti,然后这么多年下来啦,①为了兼容②团队的离职与新人各种交接,造成了很久代码历史堆积。其实完全可以重构优化,但是没法下手了,除非新建。

upupor
upupor
2020-05-08 14:10 · 回复

@liyanggyang : 如果重构不了,可以重新梳理业务,然后重头做

liyanggyang
liyanggyang
2020-05-08 14:47 · 回复

@upupor : 官方源码,暂时还是不动得好,便于跟着升级,容易进行版本对比,动一动自定义地方就成。

upupor
upupor
2020-05-08 14:49 · 回复

@liyanggyang : 可以考虑下其他技术~ 看代码感觉是已经淘汰的技术

liyanggyang
liyanggyang
2020-05-08 14:53 · 回复

@upupor : 淘汰不至于,github最新版本都还是近一年。 流程框架中,这个是最年轻的了(当然除去轻量级那种,那种框架不支持我们的很复杂流程)。

upupor
upupor
2020-05-08 14:54 · 回复
liyanggyang
liyanggyang
2020-05-08 14:56 · 回复

@upupor : 这个框架国内都还没有完整的中文版讲解书籍/社区,其实还可以深入之后去拓荒。只不过目前是基于activiti的(因为是创始团队理念不和,分家的),作者带领新团队正在逐渐重写升级,只是时间问题目前很多代码还是老的。

upupor
upupor
2020-05-08 14:57 · 回复

@liyanggyang : 如果能满足业务,代码有很老,可以先不动,等不能满足业务了,不动也不行了