
现在有个 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 |