1.写在前面最近看到一则湖南卖菜的新闻火了。她的生意比别的菜摊好很多,赚的也多。说到底,她懂得抓住年轻人的痛点。卖菜阿姨发现,孩子们经常因为工作忙不在家做饭,经常点外卖。但是这些外卖吃多了其实对身体很不好。我阿姨在她的蔬菜摊上开了一个为期一周的菜单服务。年轻人嫌麻烦,阿姨帮年轻人把菜洗好、切好、拌好,回去简单炒一下就可以了。并且还附赠调味料和傻瓜级烹饪教程。让我想起了《无双》中发哥的一句话“把任何事情做到极致,就是艺术。”这也是我一直在练习低代码的原因。.当然,我并没有特别吹捧low-code有多好,但是对于我们技术人员来说,确实可以提高效率,为企业创造更大的价值。2、业务流程引擎解决方案在之前的文章中,我们陆续介绍了规则引擎来解决推广问题、数据权限等问题,但是你会发现,即使是一个简单的业务场景,这些也只是冰山一角.因为无论多么简单的业务,其实都有一个流程的概念。如何将这些流程抽象出来,变成通用的框架、中间件等,是我们需要不断思考的问题。优秀的创意总是来自于经验的积累,知识的积累,再加上不断的思考。我们身处这个伟大的时代,总能借鉴前人总结的一些宝贵经验,提高自己的认知。在项目中主要使用springbatch框架来处理定时任务的业务流程。一开始用起来很方便,很舒服,但是随着业务的发展,如果要增加类似的流程,需要通过编码来实现,很多工作是重复的。实在受不了这样,效率也太低了。经过近半个月的研究和思考,终于完成了一个比较满意的工艺方案。今天主要跟大家分享一下我的想法。如果你对springbatch不是很了解,可以在网上找一些资料熟悉一下。下面提到的一些名词概念,需要你有一定的基础。先看架构图:对我们来说最重要的是Step,它又细分为tasklet和chunk,这是我们目前使用最多的两种方式。我的设计方案中也参考了batch的思想,流程的每个节点Node是一个Step,根据Node类型动态生成tasklet和chunk,然后在每个里面有一个自己定义的step概念tasklet/chunk,每一步执行一个action,比如fetch、update、Filtering、ftppush等。其实我们的业务流程已经通过springbatch框架串联起来了。以上也是我们基于批处理的自研业务流程引擎的核心内容。3.业务流程引擎实践有了以上初步思路,接下来就是流程实现了。这部分主要分享实现过程中遇到的一些问题。首先是如何动态配置作业。处理这个问题相对困难。一开始想看看网上有没有人想到过类似的实现,于是搜了一下。有人提出过类似的问题,但是没有解决办法。基本上没有解决办法。人们回复。接下来,我只能自己想想了。对于我来说,我只需要解决如何动态添加Step,因为我的每个节点都配置好了。上一节我们知道节点Node是一个批处理Step,只能在配置job时动态获取配置的node,然后动态加载Step:最后jobBuilder.build()返回创建的job。以上是动态加载作业的解决方案。然后遇到了一个比较麻烦的问题。在我的解决方案中,作业启动时可以关联多个进程。需要向容器中注入多个作业,直接添加代码:在for循环中,先将返回的作业实例缓存起来,等容器启动成功后,再注册到容器中:至此,动态已支持加载作业,并已注册多个作业。细心的朋友可能已经发现问题了。我们的流程都是动态配置的。当系统正常运行时,如何加载新配置的进程并运行呢?这个问题的解决方法也很简单。有了上面问题的经验,我们动态注入bean到容器中。这个时候我们只需要动态刷新bean就可以了。我把这个问题留给你,如果你有兴趣,自己试试看。4.总结以上其实只是一小部分的乐趣。当然,问题会很多,但想法总是比问题多。在低代码的实践中,有很多有趣好玩的编程思路可以尝试,更重要的是整个Teams都在成长。欢迎关注
