java实现业务编排_手写实现一套流程编排&规则引擎

流程编排&规则引擎

什么是流程编排,什么是规则引擎呢?我们为什么需要使用它?

随着业务的不断发展,业务流程迭代慢慢变得复杂了起来,全景不清晰,这不仅仅会使开发人员编写代码弄的' 不敢改 '心理,以及出现问题不好寻找出错位置,历史包袱太重,影响面需要评估,等等。小橘也是感同身受~ 。一个本来很简单的需求,但是由于很多历史背景和包袱导致侵入代码需要评估改动影响面很大,这时候就需要一套流程编排&规则引擎来使得流程清晰,能全局感受到业务的能力地图。减少开发、测试等的维护迭代成本。

流程编排特点

流程配置化

通过配置化的方式形成业务规则,通过插拔某些组件形成新的规则,每条规则对应一个业务身份(比如,“餐饮商品下单”就是一个业务身份),当我们需要新增业务身份,其实就是在对能力进行聚合编排,最终配置成我们需要的业务规则。

能力复用

在更多的业务身份产生的同时,更多的业务能力也被我们沉淀下来,能力会被编排进更多的业务规则中,在各个规则中复用。

业务细节聚合

在传统模式中,随着需求的不断迭代以及开发人员不同的编码习惯,越来越多的业务逻辑被分散在各个代码模块,给后续业务的理解和迭代造成很大的困难,而通过流程编排,不同的能力被分组聚合,各个能力职责单一,校验只做校验,装配只做装配。

通过执行引擎,实现技术细节和业务逻辑的分离

开发人员只需要定规则,具体的执行完全由执行引擎调度,强大的执行引擎通过其本身复杂的实现而让开发者获得更好的编码体验,如跨组件事务,依赖注入,监控等。

流程编排组件

参数校验 -- 业务校验 -- 事务前置扩展点 -- 业务参数装配 -- 事务执行 -- 事务结果装配 -- 事务后置扩展点

备注:节点不固定,根本具体业务评估需要哪些组件。

流程编排实现

下面我们就简单实现一个demo级的流程编排例子。

能力流程编排的各个组件我们通过上下文使它们环环相扣,定义如下:

package com.orangecsong.st.template;

import java.io.Serializable;

import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值