一种可视可拼装可控的接口调用方法

融合声明式XML配置与可视化流程设计的现代服务编排框架

核心设计理念

本设计方案是一个完整的服务编排框架,融合了声明式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)结构,通过sourceReftargetRef属性明确定义了节点间的前后依赖关系。

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 工作流编排系统流程图

展示有向无环图工作流的完整编排和执行流程

RAG流程编排示例图

1. 流程控制组件库

设计器提供了丰富的流程控制组件:

顺序类

执行(Then)节点,用于串行调用

条件类

  • 分支(Switch)节点,实现条件路由
  • 条件判断(If)节点,支持布尔逻辑判断

循环类

  • For循环,用于有限次数迭代
  • While循环,支持条件控制的循环执行

2. 多样化流程模式

设计器支持多种流程编排模式,包括:

流程类型 描述
线性顺序流 简单的a→b→c→d串行执行模式
条件分支流 基于条件判断的多路径执行
并行执行流 支持多节点并行调用后汇聚
复杂组合流 结合条件、循环与并行的复杂业务场景

3. 节点类型与连接

起始/结束节点

明确标识流程的开始与结束

服务节点

表示具体的API调用或业务逻辑

控制节点

如条件判断、分支选择等

有向连接

通过箭头明确定义节点间的执行顺序和数据流向

4. 可视化编排生成EL表达式

通过拖拽组件编排流程图后,系统会自动生成对应的EL表达式(Expression Language)文件。运行时通过解析EL表达式文件进行接口调用,实现流程的动态执行:

从可视化编排到EL表达式

1. 可视化流程编排:
节点A
条件B
节点C
节点D
节点E
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表达式实现动态的接口调用逻辑。这种设计使得复杂的业务逻辑编排变得更加直观和易于维护,大大提高了系统的可维护性和业务响应速度,代表了现代低代码平台的最佳实践,既保证了开发效率,又不失技术灵活性和可控性。