核心设计理念
本设计方案是一个完整的服务编排框架,融合了声明式XML配置与可视化流程设计两种模式,实现了业务流程的灵活组合与动态配置。
该设计融合了微服务架构、流程引擎和低代码平台的优势,使复杂的接口调用逻辑变得直观可控。
技术架构特点
1. 多模式服务调用编排
并行调用模式
支持多接口并发执行,提高系统吞吐量
串行调用模式
确保接口间的顺序依赖关系
条件分支调用
根据业务规则或前序结果动态决定执行路径
聚合模式
将多个数据源结果归集整合,形成统一视图
2. 双重配置机制
XML声明式配置
通过结构化配置文件定义服务调用关系和参数映射
可视化流程设计器
提供拖拽式界面,直观构建调用流程图
3. 流程可视化与监控
- 节点状态实时展示:可视化展现各节点执行状态和性能指标
- 调用链路追踪:完整记录请求在各节点间的流转路径
- 节点详情透视:支持查看每个节点的输入输出参数和执行结果
XML驱动的服务编排框架
系统采用了责任链模式与依赖注入相结合的架构思想,通过XML配置实现高度灵活的服务编排:
1. 链路定义 (<chains>)
配置定义了多条执行链路,每条链路通过唯一标识符和名称进行区分,并包含了节点间的依赖关系:
<chains>
<chain id="c001" name="chain1">
<node refId="n1Id1" targetRef="n1Id2"/>
<node refId="n1Id2" sourceRef="n1Id1" targetRef="n1Id3"/>
</chain>
</chains>
这种设计实现了有向无环图(DAG)结构,通过sourceRef和targetRef属性明确定义了节点间的前后依赖关系。
2. 节点定义 (<nodes>)
节点配置包含了业务处理单元的核心属性:
<nodes>
<node id="n1Id1" name="n1d1name" type="credit" isAll="yes" invoke="parallel">
<ds refId="ds1"/>
<ds refId="ds2"/>
</node>
</nodes>
关键特性包括:
-
节点类型(
type):如"credit"(征信)、"strategy"(策略)等 -
调用模式(
invoke):支持"parallel"(并行)等多种调用方式 -
数据源引用(
<ds>):节点可引用多个数据源 -
聚合策略(
isAll):控制是否需要所有数据源结果
3. 数据源定义 (<datasources>)
定义了实际的服务实现类和目标端点:
<datasources>
<ds id="ds1" name="ds1name" class="BaiRongService">
<target refId="target1" />
<target refId="target2" />
</ds>
</datasources>
可视化流程编排设计器
系统提供了一个直观的可视化流程编排设计器,采用低代码理念与拖拽交互模式:
DAG 流程编排示例
以下是一个实际的 DAG(有向无环图)流程编排示例,展示了如何通过可视化设计器构建复杂的业务流程:
DAG 工作流编排系统流程图
展示有向无环图工作流的完整编排和执行流程
1. 流程控制组件库
设计器提供了丰富的流程控制组件:
顺序类
执行(Then)节点,用于串行调用
条件类
- 分支(Switch)节点,实现条件路由
- 条件判断(If)节点,支持布尔逻辑判断
循环类
- For循环,用于有限次数迭代
- While循环,支持条件控制的循环执行
2. 多样化流程模式
设计器支持多种流程编排模式,包括:
| 流程类型 | 描述 |
|---|---|
| 线性顺序流 | 简单的a→b→c→d串行执行模式 |
| 条件分支流 | 基于条件判断的多路径执行 |
| 并行执行流 | 支持多节点并行调用后汇聚 |
| 复杂组合流 | 结合条件、循环与并行的复杂业务场景 |
3. 节点类型与连接
起始/结束节点
明确标识流程的开始与结束
服务节点
表示具体的API调用或业务逻辑
控制节点
如条件判断、分支选择等
有向连接
通过箭头明确定义节点间的执行顺序和数据流向
4. 可视化编排生成EL表达式
通过拖拽组件编排流程图后,系统会自动生成对应的EL表达式(Expression Language)文件。运行时通过解析EL表达式文件进行接口调用,实现流程的动态执行:
从可视化编排到EL表达式
1. 可视化流程编排:
2. 自动生成的EL表达式文件:
<chain name="chain1">
THEN(
a,
WHEN(b, c, d),
e
);
</chain>
可视化驱动
通过拖拽组件编排流程,自动生成对应的EL表达式
运行时解析
运行时动态解析EL表达式文件,执行对应的接口调用逻辑
支持的EL表达式操作符
THEN(...)
顺序执行操作符
WHEN(...)
条件分支操作符
PARALLEL(...)
并行执行操作符
技术优势与应用价值
松耦合架构
通过引用ID实现组件间的松散耦合,便于独立维护和替换
多级抽象
链路→节点→数据源→目标的层次结构,实现了关注点分离
声明式配置
无需编码即可定义复杂业务流程
可组合性
支持将基本节点组合成复杂流程
双向同步
视图变更自动更新XML,XML修改也能反映到视图
面向不同用户
业务分析师使用可视化界面,技术人员可直接编辑XML或EL表达式
可视化生成EL表达式
拖拽编排流程图自动生成EL表达式文件,运行时解析执行接口调用逻辑
热更新支持
支持运行时动态更新EL表达式,无需重启服务即可调整业务流程
应用场景
这种设计特别适合以下场景:
征信评估系统
如征信类型节点,并行调用多个征信数据源
风险决策引擎
构建复杂的风控规则和决策流程
数据聚合处理
ETL或数据转换流程
多系统集成
编排跨系统的服务调用
审批工作流
设计灵活的审批流程
通过这种结合可视化流程编排、声明式XML配置和EL表达式驱动执行的多层架构方案,业务分析师可以通过拖拽组件直观地编排业务流程,系统自动生成EL表达式文件,运行时通过解析EL表达式实现动态的接口调用逻辑。这种设计使得复杂的业务逻辑编排变得更加直观和易于维护,大大提高了系统的可维护性和业务响应速度,代表了现代低代码平台的最佳实践,既保证了开发效率,又不失技术灵活性和可控性。