笔者在 SAP 成都研究院工作多年,从事过多款 SAP 产品的标准开发工作。这些产品里无一例外地都存在着订单(Order) 这种数据模型。
订单模型从数据结构上来说是一棵树,根节点就是我们通常俗称的订单抬头(Header Level) 结构,主要包含订单 ID,创建时间,创建者,订单描述信息,订单涉及到的业务合作伙伴(Business Partner)等字段。
根节点通过所谓的 Association 和 Composition,关联到其他叶节点,最典型的叶节点就是订单行项目(Line Item) 结构。行项目包含订单设计到的产品明细,比如产品 ID,产品数量,产品单价,计税方式,定价信息等等。订单根节点和订单行项目的对应关系为 1:N.
SAP 产品里的订单处理,无论是 On-Premises 解决方案还是云产品,笔者认为归根到底可以概括成四个字:订单编排。这个概念包含两个层次的内容:
- 单个订单通过业务流程或者工作流驱动的状态迁移;换言之,SAP 产品的应用逻辑,实际上通过订单模型的状态迁移来体现。
- 多种订单类型协同工作,完成一个完整的端到端的业务流程。