上一篇文章我们讲了《》主要对流程编排框架产生的背景,并做了需求分析,这其中包含功能性需求和非功能性需求,算是在正式开始设计之前做一个铺垫。
前面提到,项目实战分为分析、设计、实现、测试几个部分讲解,其中分析环节跟面向对象分析很相似,都是做需求梳理。但是在时间项目中设计和实现就不是这么一回事了这里的“设计”指的是系统设计,主要是划分模块,对模块进行设计。
我们主要分为模型定义、流程加载、流程解析、集成使用这四个模块,来说明编排框架的设计思路,今天讲解的重点是,如何通过合理的设计,实现一个易用,易扩展,灵活,延迟低,高容错等非功能需求的编排框架。
模型定义
框架需要定义出服务模型,包括请求参数、输出参数、临时变量,流程定义,节点定义,这几个元素。
请求参数:流程需要定义一个输入参数的基类,在开发的过程中请求参数DTO需要继承这个DTO;
输出参数:流程需要定义一个输出参数的基类,在开发的过程中响应参数DTO需要继承这个DTO;
临时变量:用于在流程执行过程中做上下文管理,包括EL表达式解析变量和流程之间参数扭转;
流程定义:需要定义流程标识ID用于标识流程,流程名称用于定义流程别名,请求参数用于定义流程统一输入DTO,输出参数用于定义流程统一响应DTO,临时变量用于上下文管理,流程描述用于描述整个流程的作用,流程节点用于所有节点以Map的形式保存;
节点定义:需要定义节点ID用于标识节点,节点名称用于定义节点别名