Agilior

Equipa da Agilior (www.agilior.pt)

My Links

Archives

Login

Blog Stats

A empresa

Blogs Individuais

News

InfoPath: Tip for offline forms with secondary data connections

Uma das grandes vantagens do Infopath é a capacidade de trabalhar em offline com um determinado formulário. No entanto, e caso não sejam tomadas determinadas precauções, essa mesma vantagem pode desaparecer. Uma situação muito comum nos formulários é ter "Drop Down Lists" que são alimentadas por "Secondary Data Connections", as quais se podem encontrar associadas a um web service, a uma base de dados, ou a um ficheiro de resources. A solução do ficheiro de resource é aquela que se coaduna com a capacidade de trabalhar em offline, pois o mesmo encontra-se no cab do formulário. Mas por outro lado, ficamos restringidos a dados estáticos. O ideal é trabalhar com o ficheiro de resources, mas na abertura do form, tentar sincronizar com os dados que por exemplo são oriundos de um web service.

Para tal, basta que o binding da Drop Down List esteja associado ao ficheiro de resource. Para facilitar, o ficheiro de xml deverá ter o mesmo schema que a mensagem de resposta do web service. Seguidamente, deve ser criada uma "Secondary data Connection" associada ao web service em causa (não esquecer desactivar o carregamento automático na abertura do form).

No evento OnLoad do formulário, será feito uma chamada ao web service, e caso a mesma seja sucedida, o conteúdo do web service é copiado para a Data Connection associado ao ficheiro de resource.

function XDocument::OnLoad(eventObj) { 

 var wsAdapter = XDocument.DataObjects("GetPayerList");

 try {
  //Call the web service
  wsAdapter.QueryAdapter.Query();
  wsAdapter.DOM.setProperty("SelectionNamespaces","xmlns:s0='http://schemas.agilior.pt/agfis/v1'");
 
  var xmlNodeToCopy = wsAdapter.DOM.selectSingleNode("//s0:GetPayerListResponseMsg");
  if (xmlNodeToCopy != null)
  {
   XDocument.DataObjects("Payer").DOM.documentElement = xmlNodeToCopy;
  }
 }
 catch (ex) {
  XDocument.UI.Alert("Error updating 'Payer' resources. Your resources may be out of date.\nError: " + ex.description); 
 }
}


Quando o utlizador não tem conectividade, a cópia não é sucedida e é lançada uma mensagem de alerta. Claro está que de tempos a tempos deverá ser feito um novo deploy do formulário, com as resources mais actualizadas. Os ficheiros de resources reflectem os dados à data do deploy.

Infelizmente não descobri maneira de esmagar os ficheiros de resources, de forma a q estes reflictam a última chamada ao web service.

BTW: Tenho alguma dificuldade em perceber como é que um produto tão potente como o Infopath ainda não ganhou momento. Será apenas o problema do licenciamento?

BFC

posted on Friday, May 20, 2005 4:00 PM

Feedback

# re: InfoPath: Tip for offline forms with secondary data connections 5/23/2005 10:48 AM Paulo Morgado

Não sei se o licenciamento é o problema ou os preconceitos.

O InfoPath faz parte do Office System (só do pacote Professional, penso eu) e é para utilizadores de Office System. É uma ferramenta de produtividade (no âmbito do utilizador do Office) e não de desenvolvimento.

Quem quiser massificar um formulário pode fazê-lo em InfoPath mas não pode esquecer que nem todos os utilizadores o terão e deve ter uma alternativa para o formulário.

Title  
Name  
Url
Box Code
Protected by FormShield
Comments