Pergunta

Vá recompensa!

Esta pergunta me rendeu um crachá de erva Navision Tem uma participação de mercado muito limitada, que - eu suspeito - deve ser uma Navision de confirmação não é todo esse grande software ...

Mas ei ... isso é o que temos como back-end, então estou pronto para lutar com isso. : -O

Se houver um ousado desenvolvedor de Navision que é capaz de esclarecer isso ... a recompensa está lá para você! :)


Postagem original

Recentemente, implementei um sistema de comércio eletrônico bastante complexo que interage com um back-end legado baseado na Navision 5. Até agora, a troca de dados entre as duas plataformas aconteceu através de arquivos XML, mas esse método é bastante desajeitado e muito propenso para contratempos.

Nossas necessidades são:

  1. Para expor certos elementos da lógica de negócios de cada plataforma para a outra (por exemplo: "Qual é o valor total comprado por esse cliente?", "Quais são os produtos atualmente oferecidos?", "Quantos novos clientes se registraram no site?" etc. ..).
  2. Para ter mecanismos de alimentação / validação Para as várias transações (por exemplo: "Aqui está o novo pedido do cliente x" ... "OK, entendi, o pedido agora começará a ser processado" ... "OK, copie isso, tchau!").
  3. Se possível, Evite brincar com arquivos, mas mantendo tudo isso acontecendo em termos de chamadas/portas/serviços ...

A maneira mais natural que eu conseguia pensar seria integrar os dois sistemas via WebService, mas a Navision 5 não suporta isso nativamente. Então eu fiz minha "due diligence" e encontrei algumas coisas no MSDN, incluindo Este artigo e este outro.

De acordo com esses artigos Não deve ser tão difícil criar um serviço da web no Navision 5, mas quando sugeri essa solução para a equipe encarregada do sistema herdado, eles nos disseram que é "pura teoria" e eles não conhecem ninguém que a implementou.

Não tenho motivos para duvidar da palavra deles, mas A milhagem pode variar... e eu pensei que talvez na comunidade SO haja profissionais de outros países que realmente implementaram algo semelhante e estão disponíveis para compartilhar sua experiência.

Então, minha pergunta é dupla:

  1. Existe alguém que tenha Tentei isso em casa e estaria disponível para compartilhar um pouco sobre quais foram as maiores dificuldades, se o resultado final for confiável, se eles acharem que o resultado vale o esforço, etc ...?
  2. Existe alguém que enfrentou um problema semelhante, mas o resolveu com uma abordagem diferente e que estaria disponível para apresentar sua solução ("Eu nunca fiz isso sozinho, mas se tivesse que fazer isso, faria assim ..." Tipo de respostas também são bem -vindas)?

Agradeço antecipadamente pelo seu tempo! :)

Foi útil?

Solução

Eu também vou entrar com uma resposta não muito útil sobre o NAV 6 :)

Acabei de concluir um projeto usando o NAV 6. Surpreendentemente, os serviços da web são muito fáceis de expor e consumir. É realmente uma questão trivial encontrar um objeto na interface dos serviços da web e marcar uma caixa para dizer para se expor.

Sem termos, os serviços da web não funcionam como você esperaria, você deve usar algumas tentativas e erros para obter objetos e propriedades para persistir, pois é realmente sensível quanto à sequência de eventos que você usa para salvar e objetar. E cada objeto parece funcionar de maneira um pouco diferente. Por exemplo: para criar um cliente, descobri que você precisa criar e salvar um cliente em branco, massagear esse novo registro com uma unidade de código, depois buscar o registro e, em seguida, escrever os atributos do cliente e economizar novamente. EU esperado Para apenas criar um novo cliente (), defina os atributos e economize em um rápido golpe.

Eu acho que você não está muito interessado em atualizar para o NAV6, mas no topo da minha cabeça, eis como você pode simular os serviços da web:

O SharePoint já pode consumir e expor os serviços da web, para que o nível não seja um problema. O NAV 5 não os possui "naturalmente", mas você pode preparar seu próprio programa que atua como um "corretor" do Web Service - você já está recebendo informações para dentro e fora do NAV, via XML. Você pode criar esse corretor para obter informações como os arquivos XML e massagear -os para usar em uma chamada de serviço da web. Você pode até renunciar ao XML e escrever e ler diretamente no banco de dados, pois todas as informações de navegação são armazenadas lá de qualquer maneira. Então aqui está o que estou pensando:

Nav <-> SQL Server <-> New 'Broker' Web Service <-> SharePoint

Ou se você já tem a API NAV PAT e deseja ressuscitar seu XML:

Nav <-> Arquivos XML <-> New 'Broker' Web Service <-> SharePoint

Se você estiver usando o XML e usar o FileWatchers, a latência não deve ser tão ruim, geralmente os observadores de arquivos recebem uma queda ou alteração em milissegundos.

Hmm, mas estou pensando que você é provavelmente supostamente usar BizTalk para coisas como esta: Nav <-> BizTalk <-> SharePoint

Mas não sei como seria fácil configurar o BizTalk para se comunicar com o NAV. Aposto que é bastante reto que os comunicações funcionam, mas isso é especulação.

De qualquer forma, não sei o quão útil é esse post, mas talvez isso lhe dê algumas idéias.

Saúde, Lance

Outras dicas

Onde eu trabalho, conseguimos usar um dos Serviços da Web do NAV 6 para integrar -se ao SharePoint, para que você possa procurar um cliente ou gravar e mostrá -lo em uma parte da Web no SharePoint. Sei que sua pergunta é sobre o NAV 5 em particular, mas só vi isso funcionando no NAV 6. E eu não era o desenvolvedor que trabalhou nisso, então não tenho mais detalhes específicos.

Você tentou perguntar no mibuso.com? Eles são muito mais focados na navegação.

Quando você diz expor a lógica de negócios, isso inclui a execução do código AL (por exemplo, uma unidade de código)? Se você precisar executar apenas consultas em relação ao banco de dados, poderá usar o NodBC & System.data.odbc ou a API CFRONT .NET. Qualquer um deles pode ser facilmente envolvido usando um serviço .NET Web e ambos suportam o banco de dados NAV nativo. Para repassar as mensagens, você ainda precisaria usar o COM, conforme descrito no primeiro artigo que você mencionou.

Qualquer um dos itens acima é totalmente possível e relativamente fácil, dependendo da sua proficiência em .NET, COM e NAV.

O segundo artigo ao qual você vinculou descreve o uso do NAS. Não sou especialista nisso, mas acho que isso pode exigir um grânulo de licença especial. Antes de gastar tempo implementando qualquer coisa, vale a pena verificar se sua licença inclui o NAS, CFront ou NodBC.

Na verdade, você pode fazer uma "atualização técnica" do NAV 5 para o NAV 2009 e depois usar os serviços da web nativos. Significando substituir os arquivos exe e todo o aplicativo (mas não os objetos, que ainda serão a versão 5) e alguns outros truques. Mas funciona e, portanto, você tem uma funcionalidade de 2009-WebService em seu NAV 5 :-)

Para o benefício de qualquer pessoa pesquisando isso no Google, se você ainda estiver no Navision 6 com o banco de dados nativo, uma boa maneira de conectá -lo é através da fila de mensagens do Windows.

Você pode escrever seu próprio serviço da Web que coloca solicitações XML na fila e aguarde a resposta. No lado da Navision, você tem um cliente que puxa a fila e coloca respostas na fila de resposta. Há um cliente não-GUI especial chamado NAS para isso.

Eu uso essa abordagem há 15 anos para conectar os motores de reserva para sair do Navision Back -end. Funciona muito bem e tem a vantagem de que você possa espiar as solicitações antes que elas atinjam a Navision, para que você possa proteger seu back -end de muitas solicitações ou com defeito.

O único problema com essa abordagem é que o comando de confirmação dentro da Navision é super caro. É difícil atender a altos volumes de solicitações. Assim que o back -end precisar de compromisso, você estará em apenas alguns pedidos por segundo. Isso pode ser bom para baixo volume.

Para um alto volume, você precisa implementar o cache ou obter parte da lógica de negócios. Para mim, estava sendo atingido por sites de comparação de preços, então aqui a solução é servir os de serviços da web escritos em Python e apenas transmitem os pedidos se alguém comprar algo ...

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