Sitecore commerce plugin example - OrderNumber

Sitecore commerce plugin example - Order Number; Sitecore Commerce 9.3.0

默认的情况下Order与其他的CommerceEntity一样,都保存在数据库中。每个Order都有一个唯一的Id,格式类似于Entity-Order-{Guid}。如果你的订单处理平台支持的话,那这个唯一标识已经够用了。

假设你的订单系统需要你提供一个特定格式的订单编号的话,你就需要一个plugin来帮你完成你需要的工作。

插件包含两个pipelines,若干个block。

源代码在此

IGenerateNewOrderNumberPipeline

Blocks:GenerateNewOrderNumberBlock

Pipeline本身只包含一个block,首先调用IFindEntityPipeline从数据库中读取OrderNumberEntity,接着更新OrderNumberEntity中的LastOrderNumber,然后调用IPersistEntityPipeline将更新后的OrderNumberEntity更新到数据库,最后返回LastOrderNumber。

INewOrderNumberPipeline

Blocks: NewOrderNumberBlock

在NewOrderNumberBlock中会调用IGenerateNewOrderNumberPipeline得到LastOrderNumber,然后根据传入的参数构造最终的order number。


AddOrderNumberToOrderEntityBlock

最后还需要一个AddOrderNumberToOrderEntityBlock,AddOrderNumberToOrderEntityBlock会创建一个OrderNumberComponent并将它添加到Order中。