样例说明
通过本样例,您可以了解:
- 本地业务配置的存放以及格式
- 业务配置SPI机制,可基于SPI自定义业务配置加载方式
环境准备
您需要:
- 用于运行程序的IDE(集成开发环境),比如IntelliJ IDEA 或其类似工具;
- Java™ Development Kit (JDK),需要JDK 8及以上版本
- 已经完成 Lattice – 注册业务配置 样例
版本依赖
<dependency>
<groupId>org.hiforce.lattice</groupId>
<artifactId>lattice-model</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>org.hiforce.lattice</groupId>
<artifactId>lattice-runtime</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>org.hiforce.lattice</groupId>
<artifactId>lattice-load-config-res</artifactId>
<version>1.0.5</version>
</dependency>
Step 1:定义业务配置JSON文件
在Lattice – 注册业务配置 章节中,我们用程序方式定义了业务配置过程。不用程序,我们也可以用JSON文件定义业务配置,比如上个例子中的业务配置,用JSON定义如下:
{
"bizCode": "business.b",
"priority": 1000,
"products": [
{
"code": "lattice.productGroupBuyProduct"
}
],
"extensions": [
{
"extCode": "OrderLinePriceExt.EXT_ORDER_LINE_CUSTOM_UNIT_PRICE",
"priorities": [
{
"code": "lattice.productGroupBuyProduct",
"type": "PRODUCT"
},
{
"code": "business.b",
"type": "BUSINESS"
}
]
}
]
}
这个JSON文本就是简单的将BusinessConfig对象序列化成JSON文本格式。
这个内容拷贝到文件里,并放到 resource/lattice 目录下,文件名以 lattice-{业务身份}.json 格式进行命名。
Step 2:样例演示
这次样例很简单,直接启动Lattice,不需要用代码方式进行业务配置申明,直接模拟一次业务调用过程。代码如下:
public class AutoLoadBusinessConfigSample {
public static void main(String[] args) {
Lattice.getInstance().start();
System.out.println("---------------------------------------");
LatticeOverlayProductSample.doBusiness("groupBy");
System.out.println("---------------------------------------");
}
}
运行结果如下:
---------------------------------------
GroupBuyProduct effect status:true
[Business B] overlay product unit price: 700
---------------------------------------
业务配置加载扩展SPI
本样例中,我们引入了 lattice-load-config-res 这个工具包。这个工具包中的本地业务配置加载器,实现了BusinessConfigLoadSpi接口,如下:
@AutoService(BusinessConfigLoadSpi.class)
public class BizConfigResourceLoader implements BusinessConfigLoadSpi {
......
}
同理,我们也可以写一个配置读取器实现 BusinessConfigLoadSpi 接口,进而可以做到业务配置在容器启动时从远程配置库中读取并加载,比如使用阿里云OSS、ACM等等。 这个可以作为小作业留给大家。
样例代码
样例代码可以通过访问:https://github.com/hiforce/lattice-sample/tree/main/lattice-load-business-config 获取
2023-09-18 at 上午9:42
Lattice答疑和交流群二维码已经过期失效了,还有最新的群吗?