Biz-SIP中间件之xbank项目实战(2)——客户域服务的开发
xbank项目版本库:https://gitee.com/szhengye/xbank.git
项目实践:客户域服务的开发
1. 创建数据库
执行项目中xbank-infrastructure/xbank-sql/xbank.sql脚本,以建立xbank演示库。
2. 自动生成数据访问层代码
数据库创建后,用MybatisX插件自动生成数据访问层代码:

3. Customer领域服务接口和实现类的开发
先在xbank-customer-domain-client子模块中约定customer领域服务接口,这个接口是共享给领域层和应用层的:

然后在xbank-customer-sink子模块中完成以下工作:
- 基于此接口完成CustomerSinkService类的编写;
- 完成CustomerSinkApplication启动类的编写;
- 配置application.yml相关文件。

以上就完成了客户领域服务微服务的开发,接下来需要把这个客户领域服务微服务,通过sink接入Biz-SIP平台,配置xbank-app/config/sink.yml,就把CustomerSinkService类挂接到了sink(customer-sink)上:

4. Customer领域服务的快速发布
Customer领域服务接入Biz-SIP平台后,能实现在Biz-SIP开放平台接口的快速发布,这需要在xbank-app/config/service.yml中配置一个类型为“sink-service”的聚合服务:

注:这类“sink-service”的聚合服务,命名规范为“sink/xxx”,xxx为sink名称。
启动Biz-SIP平台和Customer领域服务,就可以直接在Biz-SIP开放平台接口进行访问:
$ curl -H "Content-Type:application/json" -H "Biz-Service-Id:sink/customer" -X POST --data '{"methodName":"getCustomer","params":["001"]}' http://localhost:8888/api|jq
{
"code": 0,
"message": "success",
"extMessage": null,
"traceId": "e763a42f9a2a49518c2bc6c157d08bab",
"parentTraceId": null,
"timestamp": 1630740781540,
"data": {
"result": {
"sex": "1",
"customerName": "张三",
"customerId": "001",
"age": 30
}
}
}
在上传的数据体中,“methodName”为方法名,“params”为输入参数。
5. Customer领域服务在应用层和适配层的定制
通过在service.yml中配置sink-service聚合服务,能实现已经挂接到Sink的领域服务的快速发布;但是,客户针对应用层和适配层,还是有个性化定制要求,这就涉及到应用层和适配层的定制。
同样以已经挂接到customer-sink上的Customer领域服务为例,先在xbank-app-client子模块中约定应用层接口,这个接口是共享给应用层和适配层的:

然后在xbank-app模块中基于此接口完成PersonalAppService类的编写:

在xbank-app/config/service.yml中配置一个类型为“bean-service”的聚合服务,并类名指定为上面实现的PersonalAppService应用层服务类:

最后在适配层中,定制一个controller来对外发布服务:

开发者可以在适配层的controller类中通过personalAppInterface,直接调用应用层的PersonalAppService服务:
$ curl http://localhost:9001/personal/getCustomer\?customerId=001|jq
{
"customerId": "001",
"customerName": "张三",
"age": 30,
"sex": "1"
}
Biz-SIP官方网站:http://bizsip.bizmda.com
Gitee:https://gitee.com/szhengye/biz-sip
浙公网安备 33010602011771号