Synchronisable sistema CRM
-
11-07-2019 - |
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?
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.
- Limitar o número de operação de mudança que lata aconteceu quando o sistema está offline.
- 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.
- 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.
- 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.
- 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)
- 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.