SAP UI5 里没有开箱即用的 CQRS 工具,但可以借助 OData 和后端模型实现清晰的读写分离

SAP UI5 里没有开箱即用的 CQRS 工具,但可以借助 OData 和后端模型实现清晰的读写分离
我们今天讨论的场景,可以从一个很具体的 SAP Fiori 应用切入。销售订单列表页需要按照销售组织、订单状态、客户和创建日期进行搜索,列表中的金额、交货状态、信用状态来自多个业务对象。进入对象页以后,业务人员可以执行释放订单、取消订单、重新计算价格或者提交审批等操作。列表查询明显属于读取职责,释放和取消明显属于改变业务状态的职责。看到这种差异,很自然会问,SAP UI5 是否已经提供了一个类似 CQRS 框架的东西,可以自动管理 Query、Command、Handler、Dispatcher、Read Model 和 Write Model。结论很明确,SAP UI5 没有开箱即用的 CQRS 工具。更准确地讲,SAP UI5 没有一个官方模块,可以像某些后端框架那样注册Command Handler、注册Query Handler、通过Command Bus分发命令、通过Query Bus执行查询,也不会自动维护独立的读模型、写模型、事件存储和投影同步。这里采用业界常用的完整名称 Command Query Responsibility Segregation,它描述的是一种将读职责和写职责分离的架构模式,而不是某个固定类库。基础形态可以让读写模型共享同一数据库,复杂形态也可以使用不同的数据存储,并通过事件更新读模型。(