Pergunta

Eu preciso desenvolver um sistema de CRM que permitirá que os usuários tenham uma cópia local do DB que pode ser sincronizado com o sistema de servidor principal. A ideia é que uma equipe de vendas pode viajar para não-internet habilitado áreas e ainda operam com relativamente informação actualizada e, em seguida, sincronizar-se quando voltar ao escritório.

Ive nunca fez algo assim antes, alguém pode recomendar uma solução de sincronização?

Foi útil?

Solução

Tendo escrito apenas tal sistema uma mim mesmo, eu recomendo evitá-lo, se possível. Os caminhos que os usuários podem atrapalhar esse sistema um são legião, particularmente quando os usuários são a equipe de vendas. Um sistema de CRM chamado Act! (Você provavelmente está familiarizado com) ofereceu como opção uma sincronização no passado, e talvez eles ainda o fazem. Sempre que minha empresa está a vender a uma empresa que tem vindo a utilizar Act! 'S sistema de sincronização, a empresa sempre se queixa de bancos de dados corrompidos e mis-sincronizados.

Se você realmente precisa fazer tal coisa, então eu recomendo a replicação de nível de banco de dados (que não estava disponível no momento em que escrevemos o nosso aplicativo de sincronização). Muitos bancos de dados oferecem replicação, incluindo MS-SQL Server. Você pode eliminar muitos dos problemas que vivemos por meio de mudanças no nível de banco de dados, e fazer o banco de dados responsável por transportar essas mudanças a um banco de dados remoto.

Outras dicas

Por que reinventar a roda? Existem muitas aplicações bom CRM disponíveis que oferece essa funcionalidade. Alguns são mesmo código-fonte aberto para que você possa estendê-los. Mas se você só precisa de um banco de dados do cliente com capacidades offline e sincronização então muitas aplicações de CRM oferecem isso. Por apenas o banco de dados cliente Highrise seria perfeito, mas eu acho que não há recursos offline / sincronização. Talvez olhar para SugarCRM , 24SevenOffice ou Salesforce ?

E a construção de um aplicativo de sincronização é difícil, pois há montes de problemas para resolver com dados de fusão. Se você ainda precisa fazê-lo, em seguida, ter um olhar para SyncML que é um padrão aberto para sincronização . Alguns pronto para instalar as ferramentas estão disponíveis a partir Funambol .

Você pode querer dar uma olhada na Microsoft Synch Framework . Eu não usei ainda, então não posso dar uma opinião pessoal sobre ele embora.

MS CRM 4.0 tem capacidades offline quando combinada com Outlook:

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

Indo fora de linha tem seu próprio conjunto de esquisitices (certifique-se de ficar offline antes você deixar sua boa conexão de rede), mas no geral ele está funcionando bem aqui. O material cliente móvel ainda não está fora, no entanto.

Em primeiro lugar - se o CRM vai ser um produto que você vende, por todos construção measn-lo - se é para uso interno Eu diria que vamos soemone outra suportar a dor de resolver estas questões e apenas comprar um CRM.

Além de replicação nível de banco de dados, o que eu não acho que é suficiente para resolver tudo, você realmente precisa 'roll seu próprio'.

Eu vim para uma equipe de planejamento algum CRM-como componentes de um sistema e, inicialmente, que tinha planejado para replicação de banco de dados uso porque parecia fácil -. Até chegar a resolução de conflitos

No final, alterado para usar GUIDs como identificadores únicos porque ele fez o manuseio de novos registros criados pelos usuários muito mais simples - caso contrário você acaba com esses esquemas ID particionamento numéricos embaraçosas para cada sistema cliente. Estrada para o Inferno.

Nada ajuda com a resolução de conflitos onde as mudanças se fez entre as sincronizações, a sua preocupação nível de um aplicativo. O banco de dados pode ter uma lista de transações para reproduzir de Bob, mas se ele editou o mesmo material que Alice - qual versão deve usar? timestamps não são suficientes, porque o que se Alice enche dela como ela vai e tem um timestamp cedo, mas Bob espera até que ele está tendo o almoço e recebe uma timestamp mais tarde.

Eu realmente sugiro ler todos os artigos / entradas blog você pode sobre a sincronização e resolução de conflitos - sincronização é simples de uma altura de 10.000 pés, onde pode ser tudo ondulado mão, mas é uma história diferente quando você está pra baixo na lama.

Aqui está a minha estratégia em quando rola a minha própria solução sincronia no passado.

  1. Limitar o número de operação de mudança que lata aconteceu quando o sistema está offline.
  2. Evite o uso de auto incremento inteiro como chave primária, pois isso vai leva a um problema desagradável. No passado, eu atribuído a cada cliente desconectado com alguma identificação única e usos que ID em conjunto com o número gerado automaticamente para formar uma agradável e chave primária legível (como XXX-YYYYYYYY). Isso é fácil de fazer, porque a criação de um número sequencial é trivial em ambiente não concorrente.
  3. Mantenha um log de transações, como toda operação DML que você faz durante offline pode ser "repetido" para o servidor. Você pode otimizado em torno deste log mais tarde, quando suas necessidades básicas de sincronização foi cumprida.
  4. Você tem que tomar uma decisão sobre como preparar seu aplicativo cliente antes de irem offline. Uma solução típica está forçando o usuário apertar um botão para acionar o aplicativo para entrar no "modo off-line". Eu encontrei esta solução a ser bastante problemática, especialmente quando seu usuário é descuidado e forgetfull. Um tapa rápida na cabeça de seus gerentes normalmente suficiente nos estágios iniciais, mas você pode optar por implementar mais intelligen solução inteligente mais tarde.
  5. construir a minha solução da operação mais simples primeiro, e depois trabalhar o meu caminho até um cenário mais complexo. (Operação tabela único registro único, várias tabelas múltiplas operações de registros, série de operações que devem age como uma transação)
  6. Faça um cenário de resolução de conflitos. Certifique-se que o cenário é aprovado por seus usuários.

É desnecessário dizer que é uma viagem dolorosa. Se você pode terceirizar a dor para outra parte (como a compra de soluções de CRM disponíveis), que vai ser o melhor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top