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

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

有帮助吗?

解决方案

写好了这样的系统我自己,我建议你避免它,如果可能的。用户可以搞砸这样的系统是军团的方式,特别是当用户的销售团队。命名法CRM系统! (你可能熟悉)已提出,在过去这样的同步选项,也许他们仍然这样做。每当我的公司出售给已经使用的行为!SYNC系统公司,该公司总是抱怨损坏和误同步的数据库。

如果你真的需要做这样的事情,那么我建议数据库级别的复制(这是不是可以在我们写我们的同步应用的时间)。许多数据库的复制,包括MS-SQL服务器。您可以消除许多我们所经历的在数据库级跟踪变化,使数据库负责运送这些更改到远程数据库的问题。

其他提示

为什么重新发明轮子?有迹象表明,提供了这个功能提供许多良好的CRM应用程序。有些甚至是开源的,所以你可以扩展它们。但如果你只是需要离线功能和同步客户端数据库的话,很多CRM应用提供了这一点。对于刚刚在客户端数据库高层将是完美的,但我觉得有没有离线/同步功能。也许看 SugarCRM的 24SevenOffice 的Salesforce

和作为有问题堆解决与数据合并建立一个同步应用是困难的。如果您仍然需要做它,然后看看的SyncML 这是一个开放的标准同步。一些准备安装工具可以从 Funambol的

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

MS CRM 4.0具有离线功能时与Outlook耦合:

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

去下线有自己的一套奇特的(确保你去下线的之前你离开你的良好的网络连接),但整体上它的工作以及在这里。所述移动客户端的东西仍然不出来,虽然。

第一关 - 如果CRM将是你卖一个产品,所有measn构建它 - 如果它是供内部使用我会说让soemone别人忍受解决这些问题的痛苦,只是买一个CRM。

除了数据库级的复制,我不认为是足以解决一切,你真的需要“滚你自己的。”

我进了一队规划系统的一些CRM样成分,并初步他们会计划使用数据库复制,因为它看起来容易 - 直到你遇到冲突解决

在最后,我们改变了使用的GUID作为唯一标识符,因为它使由用户更简单的创造了新的记录的处理 - 否则你结束了这些尴尬的数字识别分配方案为每个客户端系统。路地狱。

没有什么帮助冲突解决其中的变化得到同步,其应用水平的关注之间进行。该数据库可能会从交易鲍勃重播的列表,但如果他编着同样的东西爱丽丝 - 它应该使用哪个版本?时间戳是不够的,因为如果她去,有一个早期的时间戳,但鲍勃等待直到他共进午餐,并在稍后的时间戳爱丽丝罢了她出了什么。

我真的建议您阅读所有文章/博客,你可以输入同步和冲突解决 - Sync从万英尺的高度在那里你可以是全手工波浪形简单,但它是一个不同的故事,当你失意在渣土。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top