我需要开发一个 CRM 系统,它允许用户拥有数据库的本地副本,然后可以与主服务器系统同步。这个想法是,销售团队可以前往非互联网区域并仍然使用相对最新的信息进行操作,然后在他们回到办公室时同步。
我以前从未做过这样的事情,有人可以推荐一个同步解决方案吗?
我需要开发一个 CRM 系统,它允许用户拥有数据库的本地副本,然后可以与主服务器系统同步。这个想法是,销售团队可以前往非互联网区域并仍然使用相对最新的信息进行操作,然后在他们回到办公室时同步。
我以前从未做过这样的事情,有人可以推荐一个同步解决方案吗?
我自己编写了这样一个系统,如果可能的话,我建议避免使用它。用户搞砸这样一个系统的方式有很多种,尤其是当用户是销售团队时。一个名为 Act! 的 CRM 系统!(您可能熟悉)过去曾提供过这样的同步选项,也许他们仍然这样做。每当我的公司向一直使用 Act! 同步系统的公司销售产品时,该公司总是抱怨数据库损坏和错误同步。
如果您真的需要做这样的事情,那么我建议您使用数据库级复制(在我们编写同步应用程序时不可用)。许多数据库都提供复制功能,包括 MS-SQL Server。您可以通过在数据库级别跟踪更改并让数据库负责将这些更改传输到远程数据库来消除我们遇到的许多问题。
为什么要重新发明轮子?有许多提供此功能的优秀 CRM 应用程序可用。有些甚至是开源的,因此您可以扩展它们。但是,如果您只需要一个具有离线功能和同步功能的客户端数据库,那么许多 CRM 应用程序都可以提供。仅对于客户端数据库Highrise将是完美的,但我认为没有离线/同步功能。也许看看SugarCRM、24SevenOffice或Salesforce?
构建同步应用程序很困难,因为数据合并需要解决大量问题。如果您仍然需要这样做,请查看SyncML,它是一个开放的同步标准。Funambol 提供了一些准备安装的工具。
您可能想看看Microsoft 同步框架。我还没有使用它,所以我不能给出个人意见。
MS CRM 4.0 与 Outlook 结合使用时具有离线功能:
http://www.microsoft.com/dynamics/crm/product/overview.mspx
离线有其自身的一套奇怪之处(确保在离开良好的网络连接之前离线),但总的来说它在这里运行良好。不过,移动客户端的东西还没有出来。
首先 - 如果 CRM 将成为您销售的产品,那么无论如何都要构建它 - 如果它是供内部使用的,我会说让其他人忍受解决这些问题的痛苦并购买 CRM。
除了我认为不足以解决所有问题的数据库级复制之外,您真的需要“自己动手”。
我加入了一个团队,计划一些类似 CRM 的系统组件,最初他们计划使用数据库复制,因为它看起来很容易——直到你解决了冲突。
最后,我们改为使用 GUID 作为唯一标识符,因为它使用户创建的新记录的处理变得更加简单 - 否则您最终会为每个客户端系统使用这些尴尬的数字 ID 分区方案。地狱之路。
在同步之间进行更改时,没有什么有助于解决冲突,这是一个应用程序级别的问题。数据库可能会从 Bob 那里获得要重播的交易列表,但如果他编辑了与 Alice 相同的内容 - 它应该使用哪个版本?时间戳是不够的,因为如果 Alice 在她走的时候填写了她的时间戳并且有一个较早的时间戳,但是 Bob 等到他吃午饭并得到一个较晚的时间戳。
我真的建议您阅读所有关于同步和冲突解决的文章/博客条目 - 从 10,000 英尺的高度开始同步很简单,您可以全都挥手,但是当您陷入困境时,情况就不同了.
这是我过去推出自己的同步解决方案时的策略。
不用说,这是一段痛苦的旅程。如果您可以将痛苦外包给另一方(例如购买可用的 CRM 解决方案),那将是最好的。