3

我有一个关于处理消息排序的架构问题。出于这个问题的目的,运输是无关紧要的,所以我不打算指定一个。

假设我们有三个系统,一个网站,一个 CRM 和一个 ERP。在本例中,ERP 将是数据所有权方面的“主”系统。网站和 CRM 都可以向 ERP 系统发送新的客户信息。然后,ERP 系统添加客户并使用新分配的帐号发布客户,以便网站和 CRM 可以将帐号添加到其本地客户记录中。这是一个非常简单的过程。

接下来我们继续下订单。需要帐号才能让 CRM 或网站通过 ERP 系统下订单。然而,即使客户缺少帐号,CRM 也将允许用户下订单。(对于此示例,假设我们无法修改 CRM 行为)这创造了用户可以创建新客户并在 CRM 中更新帐号之前下订单的可能性。

处理这种情况的最佳方法是什么?最好在没有帐号的情况下发送订单消息并让它进入错误队列?让 CRM 端点保存消息并等到 CRM 中更新帐号会更好吗?也许是我没有想到的完全不同的东西?

提前感谢您的帮助。

4

4 回答 4

0

能不能把“新建客户下单”操作封装成一条消息,简单解构,在ERP系统中依次播放?因此,您将收到一条“创建新客户”消息、一条“下订单”消息和一条新的“创建客户并下订单”消息。

于 2010-04-11T03:13:04.570 回答
0

我想 CRM 对新创建的客户有自己的唯一客户 ID。此 CRM 客户 ID 是 ERP 的外部密钥,它应该存在于 ERP->CRM 更新中,否则 CRM 无法关联和更新其自己的用户记录。如果这个假设是正确的,您可以在 CRM 和 ERP 之间放置一个中间人,让订单没有帐号在队列中等待,直到它从 ERP 捕获帐号更新。中间人将使用 CRM 客户 ID 将等待订单请求与帐号更新相关联,然后使用帐号 ID 丰富订单并将订单转发给 ERP。

如果订单在中间人队列中停留的时间过长,则应将其移至错误/升级队列。

中间人可以在 CRM 或 ERP 或某些集成平台中实现。

于 2010-04-11T08:32:22.500 回答
0

CRM 系统应该有自己的帐号,供内部使用。这为您提供了一种在 ERP 系统创建主帐户之前处理订单的机制。CRM 应用程序将 ERP 帐号作为其客户记录上的唯一键;基本上,CRM 帐号是合成密钥,而 ERP 帐号是业务密钥。

在此设计中,CRM 向 ERP 发送一条新客户消息和一条新订单消息。两条消息都发送 CRM 客户编号和空白 ERP 帐号。假设 ERP 系统只有一个消息队列,通常的物理定律适用,所以 ERP 系统应该首先处理新客户消息;它将新帐户消息发送回 CRM 系统,将 CRM 客户编号绑定到新的 ERP 帐户编号。ERP 系统需要一个将其客户编号与 CRM 帐号相关联的数据存储,以便它可以处理在发布 ERP 帐号之前发送的任何新订单消息。

如果您遇到新订单消息在处理新客户消息之前到达等待处理的情况,您需要将其路由到待处理队列。当 ERP 系统处理新客户消息时,它需要检查待处理队列。实际上,队列可能是错误的术语,因为 ERP 系统将在所有新订单消息中查找与该 CRM 客户编号匹配的消息。

于 2010-04-11T08:53:22.320 回答
0

队列不适合服务编排场景。我建议研究一下Cadence Workflow,它可以极大地简化实施并全面了解您的交互状态。

观看描述 Cadence 编程模型的演示文稿。

于 2019-09-30T15:57:02.437 回答