2

我需要开发一个 CRM 系统,它允许用户拥有数据库的本地副本,然后可以与主服务器系统同步。这个想法是,销售团队可以前往非互联网区域并仍然使用相对最新的信息进行操作,然后在他们回到办公室时同步。

我以前从未做过这样的事情,有人可以推荐一个同步解决方案吗?

4

6 回答 6

1

我自己编写了这样一个系统,如果可能的话,我建议避免使用它。用户搞砸这样一个系统的方式有很多种,尤其是当用户是销售团队时。一个名为 Act! 的 CRM 系统!(您可能熟悉)过去曾提供过这样的同步选项,也许他们仍然这样做。每当我的公司向一直使用 Act! 同步系统的公司销售产品时,该公司总是抱怨数据库损坏和错误同步。

如果您真的需要做这样的事情,那么我建议您使用数据库级复制(在我们编写同步应用程序时不可用)。许多数据库都提供复制功能,包括 MS-SQL Server。您可以通过在数据库级别跟踪更改并让数据库负责将这些更改传输到远程数据库来消除我们遇到的许多问题。

于 2008-11-25T15:59:58.727 回答
1

为什么要重新发明轮子?有许多提供此功能的优秀 CRM 应用程序可用。有些甚至是开源的,因此您可以扩展它们。但是,如果您只需要一个具有离线功能和同步功能的客户端数据库,那么许多 CRM 应用程序都可以提供。仅对于客户端数据库Highrise将是完美的,但我认为没有离线/同步功能。也许看看SugarCRM24SevenOfficeSalesforce

构建同步应用程序很困难,因为数据合并需要解决大量问题。如果您仍然需要这样做,请查看SyncML,它是一个开放的同步标准。Funambol 提供了一些准备安装的工具。

于 2008-12-14T16:44:33.593 回答
0

您可能想看看Microsoft 同步框架。我还没有使用它,所以我不能给出个人意见。

于 2008-11-25T15:51:46.513 回答
0

MS CRM 4.0 与 Outlook 结合使用时具有离线功能:

http://www.microsoft.com/dynamics/crm/product/overview.mspx

离线有其自身的一套奇怪之处(确保在离开良好的网络连接之前离线),但总的来说它在这里运行良好。不过,移动客户端的东西还没有出来。

于 2009-01-13T23:20:59.413 回答
0

首先 - 如果 CRM 将成为您销售的产品,那么无论如何都要构建它 - 如果它是供内部使用的,我会说让其他人忍受解决这些问题的痛苦并购买 CRM。

除了我认为不足以解决所有问题的数据库级复制之外,您真的需要“自己动手”。

我加入了一个团队,计划一些类似 CRM 的系统组件,最初他们计划使用数据库复制,因为它看起来很容易——直到你解决了冲突。

最后,我们改为使用 GUID 作为唯一标识符,因为它使用户创建的新记录的处理变得更加简单 - 否则您最终会为每个客户端系统使用这些尴尬的数字 ID 分区方案。地狱之路。

在同步之间进行更改时,没有什么有助于解决冲突,这是一个应用程序级别的问题。数据库可能会从 Bob 那里获得要重播的交易列表,但如果他编辑了与 Alice 相同的内容 - 它应该使用哪个版本?时间戳是不够的,因为如果 Alice 在她走的时候填写了她的时间戳并且有一个较早的时间戳,但是 Bob 等到他吃午饭并得到一个较晚的时间戳。

我真的建议您阅读所有关于同步和冲突解决的文章/博客条目 - 从 10,000 英尺的高度开始同步很简单,您可以全都挥手,但是当您陷入困境时,情况就不同了.

于 2009-01-14T00:38:38.510 回答
0

这是我过去推出自己的同步解决方案时的策略。

  1. 限制系统离线时可能发生的更改操作的数量。
  2. 避免使用自动递增整数作为主键,因为这会导致一个讨厌的问题。过去,我为每个断开连接的客户端分配了一个唯一的 ID,并将该 ID 与自动生成的数字结合使用以形成一个漂亮且可读的主键(如 XXX-YYYYYYYY)。这很容易做到,因为在非并发环境中创建序列号是微不足道的。
  3. 保留事务日志,例如您在离线期间执行的每个 DML 操作都可以“重播”到服务器。当您的基本同步需求得到满足时,您可以稍后围绕此日志进行优化。
  4. 您必须决定如何在客户端应用程序离线之前准备它们。一个典型的解决方案是强制您的用户按下按钮以触发应用程序进入“离线模式”。我发现这个解决方案非常有问题,尤其是当您的用户粗心和健忘时。在早期阶段,从他们的经理那里得到一个快速的耳光通常就足够了,但您可以选择在以后实施更智能的智能解决方案。
  5. 首先从最简单的操作构建我的解决方案,然后再逐步构建更复杂的场景。(单表单记录操作,多表多记录操作,必须充当事务的一系列操作)
  6. 制作一个冲突解决方案。确保该方案得到您的用户的批准。

不用说,这是一段痛苦的旅程。如果您可以将痛苦外包给另一方(例如购买可用的 CRM 解决方案),那将是最好的。

于 2009-01-14T01:20:21.077 回答