2017-10-12 43 views
0

我们正在引领业务。我们捕捉潜在客户并根据一些规则将其传递给客户。整合到每个客户端,就像API的性质一样,在某些情况下,数据映射也是必需的。我们执行以下步骤以将线索路由到客户端。需要帮助选择正确的设计图案

  1. 是否需要任何特定的客户端映射(主数据)选择客户端
  2. 检查。
  3. 发送导致最近的可用经销商(可选步骤)
  4. 通话客户端API发送导致的铅
  5. 更新推送状态数据库

注意,某些步骤可能是可选的。

哪种设计模式适合解决这个问题。动机是为了简化对每个客户的整合。

+0

也许你可以提出一些你一直在考虑的设计? – dm03514

+0

您知道多少个客户?当新客户开始处理他们的情况时,您是否创建新课程? – Amit

回答

1

你会想要隔离(最好是外部化)客户端之间不同的方面,比如数据映射和API,并尽可能地进行概括。需要考虑的一个可能的因素是未来可以容纳新客户和他们的API。

我假设你有很多客户端,以及一个数据库或其他持久机制来保存这个客户端列表,因此将数据驱动的路由逻辑映射到客户端应该不成问题。应用程序本身应尽可能“哑”。

数据映射通常很容易用元数据描述,也很容易用数据驱动。映射元数据是特定于客户端的,因此它可以很容易地保存在与XML或其他格式的每个客户端关联的数据库中。如果为符合特定API所需的线索转换非常复杂,则可以通过使用策略模式来隔离逻辑,并根据目标客户选择具体策略。如果需要容纳大量的客户端和API,我会向后弯曲以实现API数据驱动。如果你只有少数客户类型(比如少于20个),我会使用一些分布式异步性,并且只是让我的应用程序将主角和客户信息发布到与客户类型相对应的主题,并且订购了外部处理器每个客户端类型都做他们的事情并将结果发布到另一个队列中。消费者列入结果队列将更新数据库。

0

我会将您的问题陈述分为以下三部分:

1)API与不同客户端的集成。 2)执行一些步骤将路线引导到客户端。 3)更新潜在客户的推送状态到数据库。

上述三个部分参与设计模式:

1)与不同的客户端API的积分 - 积分到每个客户端在本质上类似的API的性质而变化。看起来你有不可接受的界面类型,所以你应该使用“适配器设计模式”来设计这一部分。

2)执行一些步骤将引导线路由到客户端 - 您有不同的执行步骤。下一步是基于前面的步骤。所以,你应该使用“状态设计模式”来设计这个部分。

3)将导联的推送状态更新为数据库:此语句显示,只要导致推送状态发生,就会通知数据库,以便将信息更新到数据库中。所以,你应该使用“观察者设计模式”来设计这一部分。

0

这样的声音属于工作流领域。 如果您使用的是亚马逊网络服务,那么就是SWF,否则,您最喜欢的编程语言有很多工作流程解决方案。