假设我们有一个简单的电子商务系统,有两个独立的系统:库存管理系统 (IMS) 和订单管理系统 (OMS)。假设 IMS 提供有关库存的信息(getItem、getItemQuantities 等),而 OMS 提供订购服务(startOrder、addItemToOrder、finalizeOrder 等)
这两个系统使用不同的后端实现为 Web 服务。在 OMS 中,假设一个简单的模型,如:
public class Order {
private int orderId;
private List LineItem;
...
}
public class LineItem {
private int orderId;
private int itemId;
private int quantity;
private int subTotal;
....
}
在 IMS 中,假设模型如下:
public class Category {
private int catId;
private List Item;
...
}
public class Item {
private int itemId;
.... (other attributes)
}
您可以轻松找出一个简单的数据库表结构来实现上述内容。
作为一个用例,考虑客户向订单添加商品。此请求需要 OMS 进行多次服务/数据库调用:
- orderId 的验证(可选,可以将此责任传递给数据库)。
- 调用 IMS 以验证传入的 itemId 是否存在(由于 diff DB 而需要)
- 调用 IMS 以根据传入的数量验证库存(由于 diff DB 而需要)
- 将新记录插入表中(必需)
从性能的角度来看,这有意义吗?你能想出更好的方法吗?
[编辑]:作为后续,在用户向 OMS 询问订单详细信息的情况下,它只能返回 orderId,以及每个包含 itemId、数量和 subTotal 的 orderLineItem 列表。客户实际上也想要项目的名称和描述。是否有责任(通过 IMS)向客户检索名称/描述,还是由 OMS 负责?