SPI及EP使用
1. SPI的概念
SPI: 指在开发平台定义的构件方法,且可公开给业务配置阶段设置入参的对外接口,SPI下可新增扩展点。(Service Provider Interface 服务提供者接口,是一种服务发现机制,这一机制为程序的扩展提供了可能。)
扩展点(EP):本构件提供接口(本身不实现),由外部扩展实现,只定义方法输入和方法输出。(接口的抽象方法)
扩展点实现(Impl):对扩展点(本构件或者引用构件)的具体实现,即可在其中配置规则链。(抽象方法的实现)
注:若调用方和实现方处于同一上下文环境中,那么调用方调用SPI时,将执行实现方的扩展点实现。简单理解
一个接口(SPI)可以有任意多个扩展点(EP),一个扩展点(EP)可以有任意多种实现(Imp)。
例如:老师布置作业(SPI,作业(接口)是抽象的概念) 有多个题目:加法、乘法(扩展点EP) 及 要求(方法输入和方法输出),每个学生有不同的实现(Imp)。
2. SPI的实现步骤
注意
如果SPI接口定义的是服务端方法,只能在构件方法中,创建扩展点实现;
在窗体方法的扩展点实现中,选不到定义的服务端SPI接口。
3. 场景:跨窗体实现表单的维护功能
- 案例介绍
- 配置演示
- 配置详细
- 预览效果
在构件方法中定义SPI方法(客户端方法),创建扩展点EP,通过跨窗体实现表单的维护功能。
(1)在 子窗体A
实现EP:获取业务表数据,配置新增按钮,以及配置扩展点实现保存;
(2)在 主窗体B
调用SPI:添加一个窗体容器加载子窗体A,主窗体执行SPI,实现子窗体A数据保存。
保存按钮执行后,运行的规则顺序: