现在有个 OA 系统,包含一套流程设计,比如可以设计一个请假流程,包含基本的节点,连接线,条件,switch 等功能。包含了访问数据库,访问 URL 等能力。
现在有个需求,设计好对的流程,不通过内置的简单版的流程引擎执行。而是需要把设计好的流程转成对应的 java 实现,也就是生成流程设计对应的 java 文件。最终流程执行的是 java 文件生成的 class 文件。
现在碰到了第一个问题,如何优化的生成流程对应的类。不知都有没有什么设计模式或者什么插件,可以快速方便的生成流程的 java 源码. 如果直接使用字符串拼接的方式,我感觉会有点凌乱,出问题了也不好处理,也不灵活。写出来的代码估计自己都看不懂。
谢过各位大佬了。
1
a22271001 2021-07-28 10:20:16 +08:00
用模板引擎,比如 freemark
|
2
securityCoding 2021-07-28 10:20:45 +08:00
模版引擎? Velocity 、Thymeleaf 看看这两个
|
3
GuuJiang 2021-07-28 10:24:17 +08:00 via iPhone
我相信你需要的是 CodeModel,你生成的是 AST,它负责输出代码,完全满足你的要求
|
4
Brentwans 2021-07-28 11:36:22 +08:00
一定要生成代码才能解决吗?生成的代码可不好维护呀
|
5
ic2y 2021-07-28 11:38:47 +08:00
@coderstory 感觉跟这个比较相关; https://gitee.com/mirrors/compileflow
|
6
sheeta 2021-07-28 11:57:38 +08:00
建议使用流程引擎
|
7
pigbug 2021-07-28 12:08:38 +08:00
我看了一下 另类的 spring boot 代码生成。github.com/spring-io/start.spring.io
|
8
wsxyeah 2021-07-28 12:11:18 +08:00 via iPhone
javapoet
|
9
zoharSoul 2021-07-28 12:19:51 +08:00
square 有一个 JavaPoet
|
11
jack778 2021-07-28 12:50:04 +08:00
天呐,一个流程就几个类,一百个流程几百个类? 确认不考虑维护成本吗
|
12
coderstory OP @jack778 流程设计还是单独保存的。。。每次修改重新生成
|
13
coderstory OP @sheeta 都说了本身就有引擎。。。。但人家不要
|
14
coderstory OP @Brentwans 那就不关我们部门的事情了 哈哈哈
|
15
coderstory OP @GuuJiang 啧啧 这个东西的确不错 就是原项目已经弃坑了 还好还有人 fork 出来重新维护
|
16
dallaslu 2021-07-28 16:55:59 +08:00
与其如此,不如设计一个流程描述文件,写个通用类去解析、执行流程。
|
17
Cbdy 2021-07-29 09:35:48 +08:00 via Android
建议不要生成类,而是直接生成字节码,生成类的话可能会不小心改坏掉,而且每次重新生成会产生大量代码变动,不利于维护
|
18
hdfg159 2021-07-31 10:54:43 +08:00 via Android
groovy 语言,生成脚本,动态执行
|
19
liian2019 2021-08-03 20:49:37 +08:00
javapoet + asm
|