低代码-业务流程引擎

一、写在前面

最近看到一个新闻,讲的湖南的一位卖菜阿姨火了。她的生意,比其他菜摊好得多,赚得也多得多。归根结底是她懂得抓住年轻人的痛点。这位卖菜的阿姨发现自己的孩子因为工作忙碌,经常不在家做饭,常常叫外卖。但这些外卖吃多了,其实对身体非常不好。阿姨就在自己的卖菜摊上,开了一周菜单服务。年轻人嫌麻烦,阿姨帮年轻人菜洗好、切好、搭配好,只要回去简单炒一下就可以了。而且还附送调料,傻瓜级的做饭教程。让我想到《无双》当中发哥的一句台词“任何事情,做到极致就是艺术。”这也是我一直在践行低代码的原因,把自己的专业做到极致,在这一领域里深根下去。当然我没有特意去吹捧低代码如何如何的好,但对我们技术人员来说确实可以提高效率,进而为企业去创造更大的价值。

二、业务流程引擎方案

在之前的文章里陆续介绍了关于规则引擎解决促销类问题、数据权限等问题,但你会发现其实这些仅仅只是冰山一角,即使是对于一个简单的业务场景都不能实现,因为再简单的业务其实都是有一个流程的概念,如何抽象这些流程,变成通用的框架、中间件等才是我们需要不断去思考的问题。优秀的思想总是来源于经验的累积,知识的积淀,加上不断的思考,我们身处在这个伟大的时代,总是可以借鉴一些前人总结的宝贵经验来提升我们自己的认知。在项目当中主要是用了spring batch 框架来处理定时任务的业务流,刚开始在用的时候也很方便,舒服,但随着业务的发展,想要新加一个类似的流程,都需要通过编码来实现,很多工作都是重复的,实在受不了这样的方式,效率太低下,经过近半个月的调研,思考,最后终于完成了相对比较满意的流程方案,今天主要跟大家分享下思路。

如果你对spring batch 还不甚了解的话,可以先网上找些资料熟悉下,接下来讲的一些名词概念需要你对它有一定的基础。首先来看张架构图:

file

对我们来说最重要的就是Step,它又细分为tasklet和chunk,这也是我们目前使用最多的两种方式,我也参考batch的思想,在我的设计方案里,流程的每个节点Node为一个Step,根据Node类型动态生成tasklet和chunk,然后在每一个tasklet/chunk里又有我自己定义的step概念,每一个step执行一个动作,如取数、更新、过滤、ftp推送等等,这样其实通过spring batch 框架已经把我们的业务流程串联起来了。以上也是我们基于batch 自研的业务流程引擎的核心内容。

三、业务流程引擎实践

有了上面初步的思想,接下来就是落地实践的过程了,此部分主要分享下在落地过程中遇到的一些问题。首先是job如何动态配置,这个问题处理相对有点难度,一开始想看下网上是否有人想过类似的实现,就去搜索了下,还真有人提过相似的问题,但没有解决方案,基本没人回复。接下来就只能靠自己来想了,对我而言,我只需要解决怎么样才能够动态的添加Step即可,因为我的每一个节点是配置出来的,在上一部分我们知道,节点Node就是一个 batch 的Step,只能在job配置的时候,动态的获取配置的节点,然后动态加载Step:

file
file

最后

jobBuilder.build()
返回创建的job。

以上算是解决了动态载入job的解决方案。接下来却遇到了更麻烦的问题,在我的方案中,在job启动的时候可以关联多个流程的,需要把多个job注入到容器中,直接上代码:

file

在for 循环中,把返回的job实例先缓存起来,当容器启动成功后,再注册到容器中:

file

到目前为止,已经支持动态载入job,且多个job注册。细心的朋友应该可能发现了问题,我们的流程都是动态配置的,当系统正常运行后,新配置的流程如何加载进来,并运行呢?这个问题的求解也容易,有了上面一个问题的经验,我们是动态注入bean到容器中的,那此时我们只需要动态的刷新的bean就好了。这个问题留给你们啦,有兴趣的自行尝试下。

四、总结

以上其实只是好玩的一小部分,当然也会遇到好多的问题,但想法总比问题多,低代码的实践过程中更有许多有趣好玩的编程思想在尝试,更重要的是整个团队都在成长。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容