ziying_open_api design
2017-08-14 19:58:22 0 举报
OpenAPI核心设计。一个公司内部基于调用链设计模式的结构图。
作者其他创作
大纲/内容
家政业务线
RouteResponse
NotifyDubboGW
Convertor2
RouteStep1
S
ConvertorN
丽人业务线
NotifyHTTPGW
Dubbo
HTTP
OpenAPI
HttpGetaway
RouteConfig
添加一种新的操作: (添加黄色部分即可)1. 新建Execute实现类2. 新建Execute对应的Step3. 新建Execute需要的转换器今后所有需要此操作的地方,像搭积木一样,配置到到流程里即可。对应不同的数据来源,可能需要新建不同的转换器。除此再无其它操作,要注意,对功能的扩展,只是做了添加操作,而没有修改任何原来的类,这种功能的添加,相对安全。
RequestContext
StepRst1
淘宝
RespConvertor
AliPayGetaway
LinkedList
NotifyESBGW
ConvertorE
TOP
TMC
execute1
RouteFlowContext
1 理清数据模型2 理清处理逻辑3 进行抽象
ESB
Step是Invoker的包装类,只是在Invoker外面添加了Convertor,适配流程,并这怒地Inviler的Params进行类型装换。Step 可以改变,但是Invoker不会改变,而真正的执行逻辑都在invoker里,所以程序符合开闭原则。
RouteStepN
InvokerX
return
每个execute的实现类,可以最大化的复用
RouteRequest
Spring 在该项目中的作用:1. 所有RouteConfig 在容器中配置2. 所有流程定义,容器中配置3. 所有流程节点,以及流程节点与转换器的关系,在容器中配置。实现了抽象流程节点与抽象转换器,对于配置流程定义无感知4. 流程流转判断逻辑,在容器中配置5. 最终修改流程定义,只需要修改配置文件(类似搭积木)
executeN
RouteExecuteDispatcher
1. 封装协议的不同2. 封装来源的不同3. 抽象流程概念4. 秉承单一职责原则5. 秉承开闭原则
图中未表达的:1 具体的流程实现,见xml2 每种executor 实现,见类实现3 converter的种类,见代码4. 异步流程实现,见代码
Param2
TMCGetaway
Param1
AliPay
matchContext
AsyncSubFlow
RouteStep2
StepRstN
Exception
ProtocolResourceBodyBusinessLine
doExecute
ParamN
FLOW
支付宝
StepRst2
execute2
X业务线
Convertor1
从接入淘宝,到接入支付宝,新的AlipayInvoker和新的Converter流程定义直接写配置文件即可,之前的组件大部分都可以复用。
0 条评论
下一页
为你推荐
查看更多