COLETAR, VALIDAR e TRANSMITIR!
A capacidade de comunicar-se com servidores de retaguarda é indispensável para um sistema que objetiva apenas atender aos requisitos expostos acima. Na sequência, apresentamos um exemplo completo que coleta, valida e transmite dados para um servidor remoto, por fim, informações de endereçamento postal serão recuperadas do servidor.
1. <?xml version="1.0" encoding="UTF-8" ?>
2. <project name="server-project">
3. <datasource name="datasource1" type="http">
4. <host>http://www.atendenteonline.com</host>
5. </datasource>
6. <program name="program1" datasource="datasource1">
7. <session name="session1">
8. <say beep="1" store="n">CEP:</say>
9. <jump to="n" say="Invalido!">n lt 1001000</jump>
10 <get ns="db" url="/service/cep/" />
11 <say wait="1" get="db.cidade" />
12 </session>
13 </program>
14 <terminal ip="192.168.1.150" name="terminal1" program="program1" model="COLLETER_TC100" />
15 </project>
Nosso script aciona, por definição, um endereço remoto que espera a seguinte formatação na chamada:
http://www.atendenteonline.com/service/cep/n/12943390
O interpretador da xCPML "monta" a URL de chamada da seguinte forma:
1º) Recupera o nome do host definido pela Tag "host", ou seja:
http://www.atendenteonline.com
2º) Adiciona à essa URL, o valor definido para o atributo "url" da Tag "get", com isso, mais uma etapa é concluída:
http://www.atendenteonline.com/service/cep/
3º) A partir desse ponto o interpretador define que, toda variável declarada na sessão atual, torna-se um parâmetro a ser transmitido e assim obtemos a URL completa:
http://www.atendenteonline.com/service/cep/n/12943390
Definimos para nosso script uma fonte de dados externa de nome "datasource1" e tipo "http", na sequência, informamos que essa fonte de dados está vinculada a um "host" cujo endereço web é "www.atendenteonline.com".
Note: Um IP também poderia estar associado ao host em questão.
Associamos ao nosso programa o datasource definido anteriormente.
Obtemos o CEP a ser consultado e o armazenamos na variável "n".
Uma validação na entrada do CEP é definido e caso a mesma não seja satisfeita, a mensagem "invalido!" será exibida e um novo valor será solicitado.
A Tag "get" é a responsável por submeter a chamada ao servidor. O atributo "ns" (namespace) é útil para evitarmos possíveis conflitos de nome entre as variáveis definidas no script e as que serão recuperadas do servidor.
Nesta linha a variável "cidade" - recuperada do servidor - será exibida. Note que ela foi pré-fixada com o valor definido no atributo "ns" da Tag "get" (linha 10).