Академический Документы
Профессиональный Документы
Культура Документы
Reviso: 27/04/2004
Abrangncia
Verso 7.10
Verso 8.11
Verso 5.08
Verso 6.09
Verso 7.10
Servio de HTTP
O protocolo HTTP (Hyper Text Transfer Protocol) o protocolo utilizado na comunicao
entre um servidor e um Web Browser. o protocolo utilizado para o envio e recebimento
de pginas formatadas em padres SGML (HTML,XML, etc). Este protocolo se baseia
principalmente em dois comandos: GET e POST. O comando GET utilizado para obter
alguma informao do servidor HTTP e o POST para postar informaes para o servidor.
Mas adiante, ser mais fcil compreender onde tais comandos so utilizados no
servidor Protheus.
Utilizando o servidor Protheus como um servidor HTTP, o mesmo poder ser acessado
atravs de um Web Browser como o Internet Explorer por exemplo, que receber as pginas
HTML enviadas de um diretrio configurado no servidor. Adicionalmente ao envio e
recebimento de pginas estticas formatadas, pode-se utilizar a linguagem Advpl do
Protheus para processar pginas mistas, que contm cdigo Advpl e comandos HTML de
formatao. Tais pginas sero processadas no servidor Protheus, e ento enviadar para o
Web Browser, que ir format-las de acordo com os comandos HTML contidos. Tambm
possvel executar diretamente funes compiladas no repositrio do Protheus, atravs de
um request HTTP (por exemplo, atravs de um POST em um formulrio em HTML, ou de
um link, ou mesmo diretamente na linha de URL do Web Browser. O mesmo vale para
qualquer outra aplicao que seja capaz de efetuar comandos GET ou POST utilizando o
protocolo HTTP).
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
Processamento de Funes
Para o retorno de pginas estticas, imagens e demais arquivos via HTTP, o servidor
identifica o que est sendo solicitado pelo Web Browser atravs da extenso do Link. Por
exemplo, ao receber uma soilicitao da URL http://oservidor/htmls/imagem.gif, o Server
HTTP sabe que deve procurar um arquivo chamado imagem.gif, dentro da pasta htmls a
partir da pasta local no servidor configurada para armazenar os arquivos para o acesso
HTTP.
O que ir diferenciar uma funo executada via link .apl e .apw ser as etapas de execuo
das mesmas. Esta caracterstica de funcionamento ser melhor esclarecida aps a leitura
dos tpicos sobre desenvolvimento de funes .apl e desenvolvimento de funes .apw
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
Uma pgina ASP (Active Server Pages) uma pgina HTML contendo cdigo interpretvel
em uma linguagem compreensvel ao servidor HTTP em uso. Por exemplo, o IIS da
Microsoft utiliza o VBScript para criar suas pginas ASP, do mesmo modo que o Protheus
utiliza o ADVPL. Uma pgina ASP uma combinao de script HTML e cdigo
interpretvel. No ADVPL ASP esse cdigo padro xBase, portanto a preocupao maior
daqueles que j conhecem e trabalham com o Protheus e desejam desenvolver pginas
ativas para aplicaes Web utilizando essa facilidade conhecer HTML.
executada. Este parser ir transformar todo o arquivo em uma funo nica, que receber os
mesmos parmetros das funes APL simples, como explicado anteriormente no Item
'Desenvolvendo Funes .APL', e retornar uma string.
O desenvolvedor no precisa se preocupar em retornar HMTL algum, pois o APH tambm
um arquivo HTML. A funo que foi gerada na compilao ir se encarregar de retornar o
HTML contigo no arquivo, depois que o cdigo foi processado. Um Arquivo APH gera no
repositrio de Objetos do Protheus uma funo com o mesmo nome do arquivo , porm
prefixada com H_ + nome_do_arquivo_aph
Por se tornar uma funo no momento da compilao, no possvel utilizar a clusula
FUNCTION para criar outras funes dentro de um arquivo APH. Caso exista essa
necessidade, tais funes devem ser criadas em um arquivo PRW tradicional e chamadas de
dentro do APH.
A extenso APH para o nome dos arquivos obrigatria. Qualquer outra extenso usada no
nome do arquivo no ser reconhecida e o parser do IDE no ser executado durante
a compilao. Foi criada tambm a extenso de arquivos .AHU ( Aph de Usurio ), que
possui o mesmo tratamento de Parser do aruqivo APH , gerando uma funo prefixada com
L_ . A diferena que a funo gerada pelo AHU pode ser gerada sem a necessiade de
autorizao de compilao com permisso para substituir fontes microsiga , por tratar-se de
um Aph de Usurio, qeuivalente uma User Function .
Assim como outros ASPs, a diferenciao entre script HTML e cdigo efetuada atravs
dos caracteres <% para indicao de abertura de cdigo e %> para indicao do
encerramento de cdigo. Por exemplo, o HTML abaixo contm um pedao de cdigo
ADVPL separado pelos delimitadores:
<html><head><title>ADVPL ASP Demo</title></head>
<body>
<p>Bem vindo ao mundo do ADVPL ASP!</p>
<%
// Soma os 100 primeiros nmeros
Local i, nSoma := 0
For i := 1 To 100
NSoma += i
Next i
%>
</body>
</html>
Quando este arquivo for requisitado ao Protheus Server (atravs de uma chamada em URL
por exemplo) o cdigo entre os delimitadores ser executado, porm o script colocado ao
redor do cdigo ser mantido exatamente como se encontra. Por exemplo :
http://localhost/H_WEBDEMO.APL
A grande vantagem de se utilizar dos arquivos ADVPL ASP em relao a criar funes APL
simples, decorre do fato de que nas funes APL simples o desenvolvedor deve se
preocupar em retornar todo o HTML necessrio para a correta exibio no Web Browser.
E tambm, como o ADVPL ASP mistura o script HTML com o cdigo interpretvel, podese criar um arquivo APH utilizando o editor desejado (como o Microsoft FrontPage, por
exemplo) e inserir nele os cdigos Advpl necessrios entre as Tags. Outro detalhe
importante que pode-se utilizar as estruturas de fluxo da linguagem ADVPL para repetir
comandos do prprio script HTML (por exemplo, colocar um comando de script HTML
dentro de um comando While em ADVPL):
<% While !EOF() %>
<B> Esta linha ser repetida no HTML at ocorrer o fim de arquivo </B>
<%
dbSkip()
EndDo
%>
Note que tambm pode existir diferentes blocos de cdigo interpretvel separados pelos
delimitadores, dentro de um mesmo arquivo.
To importante quanto mesclar cdigo interpretvel com script de formatao HTML,
utilizar os comandos ADVPL para alterar o script de formatao. Ou seja, colocar o
contedo de variveis, campos, etc, diretamente no HTML que ser enviado aplicao
client (ao Browser por exemplo). Isso pode ser realizado atravs dos delimitadores de
avaliao. Os delimitadores de avaliao so <%= para abertura e %> para encerramento.
Diferentemente dos delimitadores de cdigo interpretvel, estes devem sempre estar na
mesma linha. Com eles pode-se criar uma linha de script HTML, cujo contedo contm
uma expresso que ser avaliada em tempo de execuo, e seu resultado inserido como
parte do Html retornado o Browse :
<b>Esta linha HTML, mas o horrio exibido aqui: <%= Time() %> foi obtido em tempo
de execuo no Servidor.</b>
No exemplo acima, a linha HTML ser retornada para o Browser com o resultado da
funo time (ou seja, a hora atual no servidor) inserido no texto.
Utilizando todos esses conceitos, pode-se criar toda uma aplicao Web baseada no
Protheus. Ou seja, o processamento e acesso aos dados fica por conta do Protheus Server, e
a interface fica por conta do Browser (utilizando o HTML) .
Importante
Ao codigicar um arquivo .APH e/ou .AHU , devemos estar atentos s regras de utilizao
dos delimitadores de execuo e avaliao Advpl :
1. A Abertura e fechamendo dos delimitadores de execuo <% ... %> devem estar isoladas
em suas respectivas linhas, no devendo ter qualquer conteudo adicional, nem duas
aberturas e fechamentos na mesma linha. Partindo dessa premissa, veja abaixo alguns
exemplos de como inserir o cdigo Advpl abaixo dentro de um APH:
IF !lOk
nErro++
Endif
CERTO
<%
IF !lOk
nErro++
Endif
%>
CERTO
<% IF !lOk %>
<% nErro++ %>
<% Endif %>
CERTO
<% IF !lOk
ERRADO
<% IF !lOk %><% nErro++ %> -- 2 aberturas e fechamentos na mesma linha
<% Endif %>
2. Quant os delimitadores de avaliao <%= ... %> , podemos ter vrias aberturas e
fechamentos na mesma lionha , porm no podemos ter uma abertura e seu respectivo
fechamento em linhas diferentes.
3. Uma linha qualquer em um arquivo .APH nao deve conter mais do que 150 Caracteres,
pois o Parser insere caracteres de controle em cada linha do mesmo durante a prcompilao . e a linha final resultante no pode ultrapassar 254 caracteres, pois neste caso
isto impossibilita a compilao do APH.
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
Processamento de Funes
Para o retorno de pginas estticas, imagens e demais arquivos via HTTP, o servidor
identifica o que est sendo solicitado pelo Web Browser atravs da extenso do Link. Por
exemplo, ao receber uma soilicitao da URL http://oservidor/htmls/imagem.gif, o Server
HTTP sabe que deve procurar um arquivo chamado imagem.gif, dentro da pasta htmls a
partir da pasta local no servidor configurada para armazenar os arquivos para o acesso
HTTP.
No servidor Protheus, foram implementadas duas extenses de Link para permitir a
execuo de funes Advpl atravs de uma requisio HTTP : A extenso .APL e a
extrenso .APW . Quando o servidor recebe uma requisio via HTTP, por exemplo da url
http://oservidor/time.apl, e est corretamente configurado para atender esta requisio, o
Protheus Server realiza o processamento, e informa para o Web Browser solicitante que a
string que ser retornada deve ser interpretada pelo Web Browser como sendo um Script
HTML .
O que ir diferenciar uma funo executada via link .apl e .apw ser as etapas de execuo
das mesmas. Esta caracterstica de funcionamento ser melhor esclarecida aps a leitura
dos tpicos sobre desenvolvimento de funes .apl e desenvolvimento de funes .apw
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
Uma pgina ASP (Active Server Pages) uma pgina HTML contendo cdigo interpretvel
em uma linguagem compreensvel ao servidor HTTP em uso. Por exemplo, o IIS da
Microsoft utiliza o VBScript para criar suas pginas ASP, do mesmo modo que o Protheus
utiliza o ADVPL. Uma pgina ASP uma combinao de script HTML e cdigo
interpretvel. No ADVPL ASP esse cdigo padro xBase, portanto a preocupao maior
daqueles que j conhecem e trabalham com o Protheus e desejam desenvolver pginas
ativas para aplicaes Web utilizando essa facilidade conhecer HTML.
uma expresso que ser avaliada em tempo de execuo, e seu resultado inserido como
parte do Html retornado o Browse :
<b>Esta linha HTML, mas o horrio exibido aqui: <%= Time() %> foi obtido em tempo
de execuo no Servidor.</b>
No exemplo acima, a linha HTML ser retornada para o Browser com o resultado da
funo time (ou seja, a hora atual no servidor) inserido no texto.
Utilizando todos esses conceitos, pode-se criar toda uma aplicao Web baseada no
Protheus. Ou seja, o processamento e acesso aos dados fica por conta do Protheus Server, e
a interface fica por conta do Browser (utilizando o HTML) .
Importante
Ao codigicar um arquivo .APH e/ou .AHU , devemos estar atentos s regras de utilizao
dos delimitadores de execuo e avaliao Advpl :
1. A Abertura e fechamendo dos delimitadores de execuo <% ... %> devem estar isoladas
em suas respectivas linhas, no devendo ter qualquer conteudo adicional, nem duas
aberturas e fechamentos na mesma linha. Partindo dessa premissa, veja abaixo alguns
exemplos de como inserir o cdigo Advpl abaixo dentro de um APH:
IF !lOk
nErro++
Endif
CERTO
<%
IF !lOk
nErro++
Endif
%>
CERTO
CERTO
<% IF !lOk
ERRADO
<% IF !lOk %><% nErro++ %> -- 2 aberturas e fechamentos na mesma linha
<% Endif %>
2. Quant os delimitadores de avaliao <%= ... %> , podemos ter vrias aberturas e
fechamentos na mesma lionha , porm no podemos ter uma abertura e seu respectivo
fechamento em linhas diferentes.
3. Uma linha qualquer em um arquivo .APH nao deve conter mais do que 150 Caracteres,
pois o Parser insere caracteres de controle em cada linha do mesmo durante a prcompilao . e a linha final resultante no pode ultrapassar 254 caracteres, pois neste caso
isto impossibilita a compilao do APH.
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
A nica interface possvel a utilizada no client HTTP. Por isso, tais funes devem
SEMPRE retornar uma string de caracteres. Aps o processamento da funo, essa
string de retorno ser enviada diretamente ao client HTTP e este ser o responsvel
por sua interpretao. Por exemplo, utilizando um Web Browser como client podese retornar a string de comandos HTML diretamente. O HTML ento ser
propriamente exibido no Web Browser;
Qualquer retorno diferente de uma string de caracteres gerar um erro que ser
enviado aplicao client HTTP (o erro gerado Invalid Proc Return);
Cdigo da funo:
#include 'rwmake.ch'
User Function
WebDemo(__aCookies,__aPostParms,__nProcID,__aProcParms,__cHTTPPage)
Local cHTML := ''
Local i
// Coloca uma mensagem em HTML
cHTML += '<p><h1 align='center'>Hello World!!!</h1></p>'
// Coloca um separador de linha em HTML
cHTML += '<hr>'
If Len(__aProcParms) = 0
cHTML += '<p>Nenhum parmetro informado na linha de URL.'
Else
For i := 1 To Len(__aProcParms)
cHTML += '<p>Parmetro: ' + __aProcParms[i,1] + '
+
Valor: '
__aProcParms[i,2] + '</p>'
Next i
Endif
Return(cHTML)
Importante
Para crias as funes que sero utilizadas em chamadas via um Web Browser, ou seja, em
qualquer request HTTP, deve-se seguir o procedimento normal de criao de funes no
AP5: utilizando o AP5 IDE para a edio e para a compilao.
Note que no caso de funes do usurio (User Function) o nome chamado na URL do
Browser tambm dever conter o U_ no comeo da funo, por exemplo:
http://servidor/u_WebDemo.apl
Configurao Mnima
Em tpico parte explicada toda a configurao referente seo http do Protheus Server.
A configurao abaixo a mnima necessria para executar o exemplo acima
[http]
Port=80
Path=(caminho absoluto de disco para arquivos publicados no servidor )
Environment=(nome do environment do Serber que ser utilizado para o processamento)
Para testar sua configurao, reinicie o server Protheus e chame via WebBrowser a url :
http://localhost/time.apl
Dever ser mostrada no Browse o horrio atual, no formato hh:mm:ss, no Servidor, pois
este o resultado da funo Advpl TIME() .
Verso 7.10
Verso 8.11
HttpGet
HttpPost
HttpCookies
HttpHeadIn
Verso 8.11
LIB WEBEX
processamento de funes Advpl atravs de links .apl. Por exemlo , caso o ambiente
configurado para o ERP chame-se EnvADS710 , basta acrescentar na seo http a chave
Environment=EnvADS710 . O .INI ficaria conforme abaixo :
[http]
Enable=1
Path=c:\Ap_Data\http
Environment=EnvADS710
Para testar a execuo de funes , abra um Web Browse na estao servidora, e acesse o
link http://localhost/time.apl . IStoir executar a funo Advpl TIME() , que retornar ao
Browse uma string contendo o horrio atual no servidor no formato HH:MM:SS
Atendendo requisies .apw
A configurao para atendimento de requisies de processamento http atravs de links
.apw envolve a criao de uma nova seo no .INI , com um nome no-especfico, para
configurar o tipo de job que ir executar o processamento ( WEB ou WEBEX ) ,
juntamente com as funes responsveis pela inicializao e conexo das Threads Advpl , e
na seo http configuramos uma chave chamada ResponseJob , apontando para a seo de
configurao do JOB.
Por exemplo , para configurarmos o atendimento de requisies .apw em um ambiente ERP
, utilizando a infra-estrutura APWEBEX , vamos criar uma seo chamada
ERP_APWEBEX, apontando para as funes da Infra-Estrutura APWEBEX
correspondentes :
[ERP_APWEBEX]
type=WEBEX
onstart=STARTWEBEX
onconnect=CONNECTWEBEX
Environment=EnvADS710
Instances=1,3
SigaWeb=MAK
Atravs desta configurao, especificamos um Job do tipo WEBEX , onde a funo de
inicializao utilizada ser a STARTWEBEX , a funo de conexo ser a
CONNECTWEBEX ( ambas da Infra-estrutura APWEBEX ) , que utilizaro o ambiente
AnvADS710 para processamento, e sero colocadas no ar apenas uma Working Thread
para atendimento de processamento, at o mximo de 3 Threads. As threads colocadas no ar
acima do nmero mnimo ( no exemplo, apenas 1 ) , so colocadas 'on-demand' caso sejam
realizadas requisies .apw ao Servidor e no hajam Working Threads dispovveis no
momento e o nmero de Working Threads no ar ainda no tenha atingido o mximo
definido. Atravs da configurao SigaWeb=MAK, informamos ao sistema, que a mesma
est sendo utilizada para o desenvolvimento de um mdulo especfico, e no estamos
utilizando um mdulo Web da ferramenta Protheus 8. Caso a configurao SigaWeb no
seja informada, o valor 'MAK' assumido como default.
Agora , para que esta seo de Jobs seja utilizada para o atendimento efetivo de
requisies .;apw , devemos estecific-la na seo http , atravs da chave REsponseJob. No
caso , inserimos a chave ResponseJob=ERP_APWEBEX , fincando a seo HTTP
conforme abaixo:
[http]
Enable=1
Path=c:\Ap_Data\http
Environment=EnvADS710
ResponseJob=ERP_APWEBEX
Como as requisies via .apl e via .apw so independentes , possvel configurar a seo
http para que Environments diferentes respondam requisies .apl e .apw , ou que no
sejam atendidas requisies .apl , apenas .apw .
Configurando a seo http para multi-host
Todas as configuraes acima vistas pertencem seo default do HTTP . De modo que ,
tanto faz acessarmos o servidor pelo nome como pelo IP, que o resultado serr o mesmo.
Porm, para a utilizao de demais recursos, como diretrios virtuais e mais de um site no
mesmo servidor , precisamos configurar um host de acesso.
Por exemplo, vamos criar uma configurao de HOST para que o servidor , caso seja
acessado pelo NOME da maquia via HTTP , seja visualizado um outro site , e apenas sejam
atendidos links .apl : Para isso , devemos criar uma nova seo no .INI , cujo nome deve
ser exatamente o host que ser acessado ( como o exemplo vamos supor que o servidor de
testes chama-se srvteste ) , logo devemos criar uma seo com este nome .
Nesta seo do INI , devemos no mnimo especificar um Path de acesso os arquivos, e as
demais configuraes vistas at agora da seo http so opcionais. A configurao PORT do
HTTP em um host no suportada: No possvel subir um server protheus em mais de
uma porta HTTP.
[srvteste]
Path=c:\Ap_Data\Testes
Environment=EnvTOP710
Deste modo, caso o servidor seja acessado via http atravs de LOCALHOST ou do IP do
Server , ser permitido o acesso s funcionalidades configuradas na seo HTTP. Caso seja
acessado via nome do servidor ( http://srvteste ) , sero acessados os arquivos de outra pasta
, e as requisies .apl sero atendidas pelo Ambiente EnvTOP710 .
Utilizando este tipo de configurao, podemos subir vrios sites diferentes na mesma
aplicao servidor Protheus, cada qual com o seu diretrio raiz de publicaes , seus
ambientes independentes, atendendo ou no requisies .apl e/ou .apw.
Configurando diretrios virtuais
Ao configurar um host especfico, podemos acrescentar ao mesmo uma barra "/", seguido
de um nome para acesso um diretrio virtual, criando desse modo um endereo de acesso
composto por um host e um diretrio, que pode se comportar como um outro site, com os
arquivos publicados em um path especfico, que poder atender requisies de links .apl
e/ou .apw sob um outro ambiente e configurao distinta.
Utilizando diretrios virtuais, possvel, dentro do mesmo host, instalar vrias aplicaes
web independentes, todas acessveis sob o mesmo endere base, alterando apenas o
diretrio de acesso. Por exemplo, utilizando como host principal o nome do equipamento ,
"servertst", podemos instalar o mdulo Web "Portal Protheus" sob o host
"servertst/portal", o mdulo TCF sob o host "servertst/rhonline", e no host "servertst"
podemos configurar um site esttico em Html , com uma apresentao institucional e links
para os demais mdulos.
Observaes Importantes
Ao configurarmos um Host, ele herda as configuraes de atendimento de requisies .apl e
.apw especificados na seo HTTP ! De modo que o host do exemplo continuar a atender
requisies .apw , porm no ambiente EnvADS710.
Visto desta forma, recomendamos fortemente que a seo [http] possua apenas especificado
um Path em disco que esteja vazio, e seja criada uma ou mais configuraes de host com as
suas devidas propriedades especificas.
Todas as demais chaves relacionadas configurao HTTP e aos Jobs WEB e WEBEX so
opcionais, para atender necessiades especficas. Estas chaves esto explicadas em maiores
detalhes no DEM , na seo XXX
Configurando diretrios virtuais
Da mesma forma que a criao de hosts, podemos criar um novo host utilizando a barra de
diviso '/' para especiicar uma 'pasta virtual' , quue permite a flexibilidade de termos uma
pasta dentro de um mesmo host que se comporte como um outro host : Ainda baseando-se
no .INI montado nestes exemplos para o servidor de testes, vamos supor que exista uma
pasta no disco ( por exemplo , c:\Ap_data\Docs ) , que contenha arquivos HTML de uma
documentao que deve estar disponivel na web , utilizando tambm o host http://srvteste .
Porm , o host srvteste j aponta para o diretrio c:\Ap_data\Testes.
Com o recurso de criao de diretorio virtual no HTTP , criamos apenas uma nova entrada
do mesmo host , colocando no nome do mesmo uma barra de diviso'/' , seguido do nome
de uma pasta a ser acessada via HTTP ( que no precisa necessariamente existir no disco) ,
e dentro desta seo acrescentar a chave path , apontando para o diretrio desejado , da
mesma maneira utilizada para configurar um host.
No exemplo abaixo , criamos a pasta virtual info, dentro do host srvteste, apontando para o
path do disco c:\Ap_Data\Docs. De modo que , ao ser acessado via url o endereo
http://srvteste/info , a partir dele sero acessados os arquivos da pasta c:\Ap_Data\Docs
[srvteste/info]
Path=c:\Ap_Data\Docs
Vejamos agora como ficou o nosso arquivo .INI, com todas as configuraes acima
exemplificadas :
;; Configuiracao de Working Threads usando a infra-estrutura APWEBEX
[ERP_APWEBEX]
type=WEBEX
onstart=STARTWEBEX
onconnect=CONNECTWEBEX
Environment=EnvADS710
Instances=1,3
;; Configurao da seo httpo default para atender requisies de .apl e .apw
[http]
Enable=1
Path=c:\Ap_Data\http
Environment=EnvADS710
ResponseJob=ERP_APWEBEX
SigaWeb=MAK
;; Configurao do host srvteste para atender requisies via .apl atravs do environment
EnvTOP710
[srvteste]
Path=c:\Ap_Data\Testes
Environment=EnvTOP710
;; Configurao da pasta virtual info , no host srvteste , para apontar para um path no
disco com documentos
[srvteste/info]
Path=c:\Ap_Data\Docs
Infra-Estrutura APWEBEX
Reviso: 27/04/2004
Abrangncia
Verso 8.11
A Infra-Estrutura APWEBEX
Visando o melhor aproveitamento da tecnologia de working threads, implementada no
servidor Protheus para o processamento de requisies de uma aplicao web, foram
desenvolvidas funes de apoio, miscelnea e infra-estrutura, compiladas no repositrio
padro de Infra-Estrutura do ERP Microsiga, visando simplificar e auxiliar o
desenvolvimento de uma soluo web. A este conjunto de funes , demos o nome de "Lib
de Infra-Estrutura APWEBEX", que engloba atualmente os tratamentos comuns s funes
de inicializao de ambiente e conexo ( atendimento de requisies http via link .apw ),
com seus respectivos pontos de entrada, comandos e funes de miscelnea comuns os
projetos de solues web integradas com o ERP.
Como utilizar este recurso no desenvolvimento de solues ?
As funes pertinentes Infra-Estrutura APWEBEX j esto implementadas no repositrio
padro da ferramenta Protheus 8, e os comandos especficos que envolvem este recurso
encontram-se no arquivo header 'apwebex.ch', disponibilizado tambm jonto com a
ferramenta Protheus 8.
A utilizao destes recursos para integrao de aplicaes envolve a leitura desta
documentao, onde ser visto com maiores detalhes as possibilidades de uso da
ferramenta, como a integrao de uma aplicao Web com um ambiente e funcionalidades
do ERP Microsiga.
Como usufruir desta documentao ?
Todos os tpicos pertencentes este grupo so direcionados o desenvolvimento de
solues web utilizando as funes de Infra-Estrutura APWEBEX, alm de ser explicado
com detalhes o funcionamento da tecnologia WEBEX do Protheus, e dos recursos nativos
da ferramenta, englobando os comandos e funes publicados, exemplos de cdigos Advpl
utilizando estes recursos, configurao da ferramenta e mensagens de ocorrncias de
erro das funes e comandos, com possveis causas e solues.
fortemente recomendado que os documentos constantes neste grupo fossem apreciados,
antes de aprofundar-se nas informaes dos prximos tpicos.
Verso 8.11
HttpCookies
HttpGet
HttpPost
HttpHeadIn
HttpHeadOut
HttpSession
HttpCookies
Atravs do alias virtual HttpCookies, possvel consultar os Cookies do Header Http
enviados pelo Browser, e criar ou alterar o contedo de um cookie a ser devolvido o
Browser. Um cookie, visto de forma geral, um parmetro ao qual atribumos um nome,
que uma vez devolvido o Browse solicitante, re-enviado ao Protheus a partir da prxima
requisio realizada pelo Browser.
HttpGet
Para receber os parmetros enviados atravs da URL (mtodo GET do HTTP) , j
devidamente convertidos e tratados, utilizamos o alias virtual HttpGet, onde acessamos
pelo nome a propriedade desejada, e caso a mesma tenha sido enviada pelo Browser, a
mesma retornada como uma String.
HttpPost
Para receber os parmetros submetidos (enviados) pelo Browser atravs do mtodo POST,
j devidamente convertidos e tratados, utilizamos o alias virtual HttpPost, onde acessamos
pelo nome a propriedade desejada, e caso a mesma tenha sido enviada pelo Browser, a
mesma retornada como uma String.
HttpHeadIn
Para a recepo e tratamento das informaes recebidas atravs do Header do pacote HTTP,
foi criado o alias virtual HttpHeadIn, que alm de consultar as informaes constantes no
Header HTTP proveinente da requisio do usurio, permite tambm acesso propriedades
da conexo atual do usurio, como o IP do usurio solicitante, por exemplo.
HttpHeadOut
Atravs deste alias virtual de retorno, podemos alterar ou criar um parmetro no Header de
retorno HTTP do Protheus , a ser devolvido o Browser solicitante de uma requisio de
processamento.
HttpSession
O alias virtual HttpSession foi criado para possibilitar a criao de variveis 'session' por
usurio do site, com controle de identificao nativa da ferramenta atravs de um cookie de
identificao , chamado SESSIONID. No tpico 'Alias Virtual HttpSession' explicado em
detalhes o funcionamento deste mecanismo.
Este recurso nos permite criar , atricuir contedo e consultar contedo de uma varivel
relacionada o usurio que est realizando uma requisio http. Podemos armazenar em
uma varivel de Session os seguintes tipos de variveis : A (array) , C (character) , D
(data), L (lgica) e N (numrica) . No so suportados O (Objetos) e/ou B (Code Blocks).
Limitaes de uso dos alias virtuais para recebimento de parmetros
Dadas as caractersticas operacionais e de acesso os alias virtuais, devemos estar atentos
nomenclatura de campos de um formulrio HTML, para serem recuperados com sucesso
pelos alias virtuais correspondentes. A nomenclatura de campos do formulrio deve
obedecer regra de criao de variveis em Advpl : O campo do formulrio deve sempre
ser iniciado com um caracter alfabtico, pode conter letras ou algarismos no nome, e o
caracter "_" ( underline ). No so permititos espas, hfen ou caracteres acentuados como
nome de um campo. Caso utilizado um nome de campo fora do padro suportado, o
contedo do mesmo no ser recupervel em Advpl.
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Atravs do alias virtual HttpGet, podemos consultar se uma determinada propriedade nos
foi enviada atravs da URL ( mtodo GET ).
Trata-se portanto de uma propriedade de leitura (read-only), disponvel apenas quando a
funo Advpl executada atravs de uma requisio http via link .apw utilizando a
configurao de Working Threads WEBEX.
Consultando um Parmetro
O retorno da consulta de um parmetro pode ter dois tipos : NIL , caso o parmetro no
tenha sido enviado , ou String , contendo o contedo do parmetro. Por exemplo, vamos
realizar uma requisio a um link .apw , passando pela URL o parmetro IMAGEM , com o
contdo TESTE :
http://localhost/u_TesteGet.apw?imagem=teste&cor=azul
Para recuperarmos em Advpl o contedo dos parmetros imagem e cor , utilizamos:
cImagem := HttpGet->imagem
cCor := HttpGet->cor
Podemos inserir tambm um tratamento default : Caso algum parmetro no seja enviado
( resulte NIL ) , assumimos um valor para o mesmo
DEFAULT cImagem := 'LogoAp8'
DEFAULT cCor := 'amarelo'
Existe tambm uma propriedade do alias virtual HttpGet chamada aGets , onde podemos
recuperar um array de strings , contendo a lista com os nomes dos parmetros enviados pelo
browser solicitante . Por exemplo :
aInfo := HttpGet->aGets
For nI := 1 to len(aInfo)
conout('GET '+str(nI,3)+' = '+aInfo[nI])
Next
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
LIB WEBEX
Atravs deste alias virtual de retorno, podemos alterar ou criar um parmetro no Header de
retorno HTTP do Protheus , a ser devolvido o Browser solicitante de uma requisio de
processamento.
Trata-se portanto de uma propriedade de retorno, disponvel apenas quando a funo Advpl
executada atravs de uma requisio http via link .apw utilizando a configurao de
Working Threads WEBEX.
A criao de uma linha no Header HTTP merece uma ateno especial, pois para que a
operao realizada com sucesso , o header deve ser criado antes de haver qualquer
processamento de APH / AHU, pois neste caso o Header de Retorno HTTP j teria sido
enviado o browser solicitante.
Verso 8.11
LIB WEBEX
Atravs do alias virtual httpSession, podemos criar e consultar variveis do tipo 'session',
relacionadas o usurio que realizou a requisio atravs do Browser.
Para diferenciar os usurios que esto navegando num site, o Protheus busca por um cookie
identificador de usurio, retornado para o browser a cada requisio de link . APW,
chamado SESSIONID. Caso o Protheus receba este cookie, ele identifica quais sessions
pertencem a este usurio.
Quando um usurio realiza a primeira requisio http ao Protheus, o Protheus no recebe o
cookie identificador , e automaticamente inicializa um identificador de sessions para o
mesmo, retornando o identificador ao Browser via Header HTTP. Este identificador pode
ser recuperado em uma funo advpl atravs de httpSession->SESSIONID.
Quando criamos uma varivel de session, ela pode ser acessada nas prximas requisies
provenientes deste mesmo usurio. Caso uma varivel de session consultada no exista, ela
retorna o valor NIL (nulo). Vejamos os exemplos abaixo :
Criando variveis Session
HttpSession->UserId := '123'
HttpSession->UserName := U_GetUserName()
Nas linhas acima , criamos uma session para o usurio atual , chamada UserId , com o
contedo do tipo String, e criamos outra session chamada UserName , com o retorno da
funo U_GetUserName()
Consultando variveis Session
Ao consultar uma varivel 'session', sempre devemos prever que a mesma no pode ter sido
criada, de modo que a consulta pode retornar NIL, ou caso a session j exista , retornar o
valor do tipo que foi atribudo `a mesma.
If HttpSession->UserId = NIL
// Session ainda no foi criada ! Usurio no est logado.
conout('Usuario no est logado')
Else
// Session j criada, o usurio est logado
conout('Usuario est logado : ID = ' + HttpSession->UserId )
Endif
Exemplo de Funcionamento de Session
No exemplo abaixo, criamos uma session para identificar quantas vezes o usurio chamou
esta funo especfica. Damos o nome da session de MyCounter, que ir conter um nmero.
no fosse tratado , poderia gerar perdas no contedo da session caso a mesma session fosse
atualizada simultaneamente.
Para resolver esta questo, de maneira a no sobrecarregar o Servidor com solicitaes de
Processamento Sequencial ( Critical Sessions ) , foi montado um esquema de Lock de
Session de Usurio automtico, com liberao automtica aps o processamento do APW,
ou liberao manual atravs da chamada da funo HttpLeaveSession() antes do
processamento ser terminado.
Exemplificando a aplicao prtica e funcionamento deste conceito , partimos de um
ambiente hipottico utilizando 3 frames , onde um usurio realiza uma requisio funo
que retornar o source HTML da pgina de frames, e a mesma ao chegar no Browser, faz o
mesmo realizar as trs requisies simultaneamente, todas elas referentes ao mesmo
usurio. Porm , o primeiro e o segundo frames realizam uma operao qualquer com uma
ou mais variveis da Session do usurio , e o terceiro frame realiza um outro processamento
que no depende da consulta de nenhuma varivel da Session : As trs requisies referente
a este usu;ario sero processadas simultaneamente por working Threads diferentes ( vamos
supor que naquele momento haviam trs Working Threads disponveis) ; porm quando
uma das duas working Threads que tentarem acesso uma varivel de Session daquele
usurio , o Servidor verifica se alguma outra Thread est com o flag de acesso s sessions
deste usuario : Se nenhuma outra thread em uso por este usurio est com a bandeira , ento
a thread atual pega a bandeira para ela; seno o processamento da Thread congelado no
aguardo da liberao da bandeira.
A liberao da bandeira ocorre automaticamente no retorno da Working Thread para o
Browser , antes da chamada do ponto de entrada para Reset do Ambiente, atravs da
chamada na KlibEx da funo HttpLeaveSession(). Caso seja vivel para o usurio liberar
as sessions antes do retorno da funo , ele pode utilizar-se da funo httpLeaveSession()
no seu fonte , sem necessariamente aguardar pelo encerramento efetivo e reset de ambiente
da Working Thread.
Logo , retornando ao exemplo acima , os Frames 1 e 2 iro concorrer pela banceira de
atualizao de contedo de sessions, onde o primeiro frame que a ser executado pegar a
bandeira para ele e atualizar a session , e o segundo frame ir esperar o primeiro liberar a
bandeira para continuar a ser processado; e o terceiro frame , como no utiliza nenhuma
varivel da session , ser processado sem depender de nenhum dos outros dois frames
anteriores.
Quando utilizamos ASP ( Microsoft Active Server Pages ) , o mesmo realiza uma
serializao de requisies de pginas ASP por usurio, de modo que , caso o mesmo
usurio solicite trs frames .asp , as requisies de processamento chegaro ao Servidor
ASP simultaneamente , mas a bandeira de processamento unica por pgina .asp , sendo
liberada apenas apos o trmino do processamento da pgina , de modo que , mesmo que
nenhuma das pginas faa uso de sessions , todas as pginas deste usurio sero
processadas em sequncia.
Verso 8.11
LIB WEBEX
Verso 8.11
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Sintaxe
CLOSE QUERY cAlias
Parmetros
Argumento
Tipo
Descrio
cAlias
Descrio
Atravs do comando Close Query , realizamos o fechamento de uma query aberta atravs
do comando OPEN QUERY.
ATENO : Uma query aberta pelo comando OPEN QUERY deve ser fechada pelo
comando CLOSE QUERY . Poderamos fechar o alias aberto atravs de uma Query
simplesmente com a funo DbCloseArea(), porm isto deixaria em aberto elementos
internos de controle criados pelo comando OPEN QUERY.
Verso 8.11
LIB WEBEX
Sintaxe
OPEN QUERY <cQuery> ALIAS <cAlias> [ [NOCHANGE] ]
Parmetros
Argumento
Tipo
Descrio
<cQuery>
Caracter
ALIAS <cAlias>
[NOCHANGE]
Descrio
Atravs do comando OPEN QUERY , realizamos a abertura de uma Query de busca no
Banco de Dados atravs do RDD TOPCONN , retornando os dados consultados atravs de
um 'ALIAS' Advpl.
Caso a Query nao possa ser aberta, por erro de sintaxe , devido thread atual no estar
conectada com o TopConnect , ou outro erro , ser gerado um log de erro , informando o
Alias , o Stack ( Pilha de Chamadas ) de execuco , e o contedo da Query para Debug.
OBSERVAES IMPORTANTES
Verso 8.11
LIB WEBEX
Sintaxe
WEB EXTENDED END <cHtml> [ START <cFnStart> ]
Parmetros
Argumento
Tipo
Descrio
<cHtml>
Verso 8.11
LIB WEBEX
Sintaxe
WEB EXTENDED INIT <cHtml> [ START <cFnStart> ]
Parmetros
Argumento
Tipo
Descrio
<cHtml>
APWEBEX , e a definio do mesmo est no arquivo #include 'apwebex.ch' , que deve ser
declarado no incio do arquivo fonte Advpl.
Verso 8.11
LIB WEBEX
/*
-----------------------------------------------------------------------------Ponto de Entrada ENDSESSION(cSessionId) => NIL
Ponto de entrada chamado em uma working Thread quando a session de um
usurio ser
eliminada da memria por time-out. Recebe como parametro o Id de
sessions de usuario
que est sendo finalizado.
------------------------------------------------------------------------------ */
USER Function ENDSESSION(cSessionId)
Conout("Sesssion "+cSessionId+" limpa da memria...")
Return
/*
--------------------------------------------------------------------------Ponto de Entrada WebExError(e,cErrorLog,cHtml) => cCustomHtml ou ""
Esta funcao chamada pela rotina de tratamento de erro WEBEX , quando
ocorre um erro fatal ,
e permite que seja retornado um Html de tratamento de erro diferenciado.
Ela recebe como
parametro o objeto do erro , a mensagem ASCII que foi acrescentada ao
arquivo error.log ,
e o Html original montado pela rotina de tratamento de erro default .
IMPORTANTE : Por sem um ponto de entrada executado em um momento crtico
(tratamento
de erro ) , esta funo deve ser o mais suscinta e simples possvel , no
utilizando
sessions, banco de dados , etc....
--------------------------------------------------------------------------- */
USER Function WebExError(oError,cErrorLog,cHtml)
Local cCustomHtml := ''
// Monta mensagem de erro mais amigavel ...
cCustomHtml += ''
cCustomHtml += ''
cCustomHtml += ''
cCustomHtml += ''
cCustomHtml += ''
cCustomHtml += '
'
cCustomHtml += '
Ocorreu um erro inesperado no '
cCustomHtml += 'processamento desta pgina. O Administrador do sistema ser
notificado desta '
cCustomHtml += 'ocorrncia . Recomendamos fortemente que esta janela do
navegador seja '
cCustomHtml += 'fechada, e uma nova janela seja aberta para retornar navegao
do site.
'
cCustomHtml += '
'
cCustomHtml += '
'
cCustomHtml += ''
cCustomHtml += ''
Return cCustomHtml
Verso 8.11
LIB WEBEX
Nos exemplo abaixo, utilizamos a funo escape() para formatar parmetros para inserir em
uma URL.
cUrl := 'http://localhost/webinfo.apw'
cPAram1 := 'Teste de Parametro 01-02'
cPAram2 := '#reserva#'
cPAram3 := '1+2+3'
cUrl += '?Par01=' + escape(cPAram1) + '&PAr02=' + escape(cPAram2) +
'&Par03=' + escape(cPAram3)
// O conteudo de cUrl dever ser "http://localhost/webinfo.apw?
Par01=Teste%20de%20Parametro%2001-02&PAr02=%23reserva%23&Par03=1%2B2%2B3"
, prprio para a monyahem de um link .
Verso 8.11
LIB WEBEX
:=
:=
:=
:=
GetJobProfString('type','(empty)' )
GetJobProfString('Instances','(empty)' )
GetJobProfString(InactiveTimeout','(default)' )
GetJobProfString('ExpirationTime','(default)' )
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Atravs do exemplo abaixo, geramos a string com o DUMP de um arquivo HTML, salvo na
pasta WEB a partir do RootPath do Environment. O Dump do arquivo ser mostrado no
Console do servidor e no Web Browser que solicitou a funo U_DumpTest.apw .
#include "protheus.ch"
#include "apwebex.ch"
User Function DumpTest()
Local cHtml := ''
Local cTXTFile := ''
Local cDump := ''
WEB EXTENDED INIT cHtml
// Le o arquivo
cTTXFile := memoread('\Web\Default.htm')
// Gera a string com o Dump do arquivo
cDump := HExStrDump(cTTXFile)
// Mostra o Dump no console
conout(cDump)
// Gera HTML para a visualizao do DUMP
cHtml := VarInfo('DUMP',Htmlnotags(cDump),,.t.,.f.)
WEB EXTENDED END
Return cHtml
/*
Exemplo do Texto mostrado no Console
HexSTRDump ( String 237 / Start 1 / Length 237 )
-----------------------------------------------------------------------------3C 48 54 4D 4C 3E 3C 48 45 41 44 3E 0D 0A 3C 4D | <HTML><HEAD>__<M
45 54 41 20 48 54 54 50 2D 45 51 55 49 56 3D 22 | ETA HTTP-EQUIV="
43 6F 6E 74 65 6E 74 2D 54 79 70 65 22 20 63 6F | Content-Type" co
6E 74 65 6E 74 3D 22 74 65 78 74 2F 68 74 6D 6C | ntent="text/html
22 0D 0A 3C 4D 45 54 41 20 48 54 54 50 2D 45 51 | "__<META HTTP-EQ
55 49 56 3D 22 70 72 61 67 6D 61 22 20 63 6F 6E | UIV="pragma" con
74 65 6E 74 3D 22 6E 6F 2D 63 61 63 68 65 22 3E | tent="no-cache">
0D 0A 3C 4D 45 54 41 20 48 54 54 50 2D 45 51 55 | __<META HTTP-EQU
49 56 3D 22 45 78 70 69 72 65 73 22 20 63 6F 6E | IV="Expires" con
74 65 6E 74 3D 22 2D 31 22 3E 0D 0A 3C 4D 45 54 | tent="-1">__<MET
41 20 48 54 54 50 2D 45 51 55 49 56 3D 22 52 65 | A HTTP-EQUIV="Re
66 72 65 73 68 22 20 63 6F 6E 74 65 6E 74 3D 22 | fresh" content="
30 3B 20 75 72 6C 3D 2F 77 5F 77 45 78 30 30 30 | 0; url=/w_wEx000
2E 61 70 77 22 3E 3C 2F 48 45 41 44 3E 0D 0A 3C | .apw"></HEAD>__<
2F 48 45 41 44 3E 3C 2F 48 54 4D 4C 3E
| /HEAD></HTML>
-----------------------------------------------------------------------------*/
Verso 8.11
LIB WEBEX
'+HtmlNoTags(
'
Verso 8.11
LIB WEBEX
No exemplo abaixo , utilizamos a funo RetSqlAce para montar uma query de busca por
ttulo de uma determinada informao , considerando todas as possibilidades de acentuao
, independentemente de como o banco foi alimentado e/ou a string de busca foi digitada.
IMPORTANTE : Na expresso da Query , o campo da tabela deve ser passado pela funo
LOWER do BAnco , pois a funo retsqlace monta a string para busca com letras
minsculas.
cFind := 'acentuao'
cQuery := "SELECT * FROM " + RetSqlTab('ZZ1')
cQuery += "WHERE LOWER(ZZ1_TITULO) LIKE '%"+RetSqlAce(cFind)+"%'
"
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
10) [08/12/2003]
Time -> C (
*/
8) [20:17:48]
Verso 8.11
LIB WEBEX
+=
+=
+=
+=
+=
+=
+=
"Original ..........
"Upper() ...........
"Lower() ...........
"Capital() .........
"UPPERACE() ........
"LOWERACE() ........
"CAPITALACE() ......
"
"
"
"
"
"
"
+
+
+
+
+
+
+
cFrase + CRLF
upper(cFrase) + CRLF
lower(cFrase) + CRLF
capital(cFrase) + CRLF
UPPERACE(cFrase) + CRLF
LOWERACE(cFrase) + CRLF
CAPITALACE(cFrase) + CRLF
/*
Neste ponto , a varivel cRetorno dever conter :
Original .......... no h EXPLICAES considerando excesses PARA O
inexplicvel.
Upper() ........... NO H EXPLICAES CONSIDERANDO EXCESSES PARA O
INEXPLICVEL.
Lower() ........... no h explicaes considerando excesses para o
inexplicvel.
Capital() ......... No H Explicaes Considerando Excesses Para O
Inexplicvel.
UPPERACE() ........ NO H EXPLICAES CONSIDERANDO EXCESSES PARA O
INEXPLICVEL.
LOWERACE() ........ no h explicaes considerando excesses para o
inexplicvel.
CAPITALACE() ...... No H Explicaes Considerando Excesses Para O
Inexplicvel.
*/
Verso 8.11
LIB WEBEX
No exemplo abaixo , utilizamos as funes cton e ntoc para realizar converses de nmeros
em base decimal para outras bases numricas e vice-versa.
nNum1 :=
nNum2 :=
CTON('01101001',2)
CTON('00DA25FE',16)
/*
------------------------------------------------------------------------Ao final do programa , cNum1 ser "01101010" e cNum2 ser "00DA25FF"
------------------------------------------------------------------------*/
APWEXADDERR
Reviso: 13/04/2004
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
APWEXADDERR ( [ cTitulo ] , [ cInfo ] ) --> .T.
Parmetros
Argumento
Tipo
Descrio
cTitulo
cInfo
Caracter
Retorno
Tipo
Descrio
Lgico
Descrio
Atravs da funo ApWExAddErr(), podemos acrescentar uma string de informaes
adicionais em um buffer em memria, descarregado na gerao do ERROR.LOG no caso
de uma ocorrncia de erro fatal na working thread atual.
Caso a funo seja chamada sem nenhum parmetro, a ltima ocorrncia acrescentada pela
funo eliminada da pilha interna de informaes.
ATENO : Esta funo deve ser apenas utilizada em casos de necessidade de obteno de
informaes especficas acerca de uma ocorrncia de erro no reproduzida em ambiente de
testes e/ou no depurvel, pois seu uso desnecessrio prejudica a performance da aplicao
final.
CAPITALACE
Reviso: 08/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
CAPITALACE ( < cString > ) --> cStrCapital
Parmetros
Argumento
Tipo
Descrio
cString
Retorno
Tipo
Descrio
Caracter
Descrio
Semelhante funo de Infra-estrutura Capital() , porm converte tambm caracteres
acentuados.
A funo CapitalAce() converte todos os caracteres de uma String para 'minsculo' , e a
primeira letra das palavras significantes para maisculo, semelhante funo Capital() ,
porm considera e converte tambm caracteres acentuados em OEM e/ou ANSI.
CTON
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
CTON ( < cString > , < nBase > ) --> nNumero
Parmetros
Argumento
Tipo
Descrio
cString
Caracter
nBase
Numrico
Retorno
Tipo
Descrio
Numrico
Descrio
Converte um nmero representado em String , de base 2 a 36 , para um nmero em base
decimal (10).
Observao Importante :
So considerados caracteres vlidos para compor um nmero de base 36 os 10 algarismos
numricos de 0 a 9 e os 26 caracteres alfabticos maisculos compreendidos entre A e Z.
Quaisquer caractetes presentes na String de parmetro fora desta faixa de dados e/ou fora
da base ( por exemplo , uma converso de string base 2 - binrio - da string '01001020' )
retornar -1 ( menos um ) .
ESCAPE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
ESCAPE ( < cString > ) --> cEscaped
Parmetros
Argumento
Tipo
Descrio
cString
Retorno
Tipo
Descrio
Caracter
Descrio
A funo Escape() deve ser utilizada para realizar converses de caracteres especiais e
reservados quando da necessidade de passagem de parmetros via URL .
A sintaxe de uma requisio via URL para a passagem de parmetros :
(link)?param=conteudo¶m2=conteudo2&...
Quando passamos parmetros via url , devemos tomar o cuidado de no utilizar caracteres
reservados e especiais nos nomes e contedos de parmetros. Para realizar estas
converses, utilizamos a funo Escape()
EXECINPAGE
Reviso: 12/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
EXECINPAGE ( < cAPHPage > ) --> cHTMLPage
Parmetros
Argumento
Tipo
Descrio
cAPHPage
Caracter
Retorno
Tipo
Descrio
Caracter
Descrio
Atravs da funo ExecInPage(), executamos uma pgina APH passada como parmetro. A
funo dever retornar a String HTML correspondente pgina processada.
Porm a funo ExecInPage() realiza tratamentos adicionais padro relacionaodo o
comportamento dos Projetos WEB referentes customizaes, da segunte maneira :
1. Primeiro verificado se existe uma pgina AHU compilada com o nome
cAPHPage. Caso exista , a mesma ser executada pela execinpage.
2. Caso no exista AHU com este nome , procurado pelo APH. Caso o APH exista , o
mesmo ser executado pela ExecInPage.
3. Caso no existam no RPO atual o APH nem o AHU com o nome especificado no
parmetro cAPHFile, o processamento abortado com a ocorrncia de erro
[APWEXERR_0007] APH page [<cAPHPage>] not found in .RPO
4. Antes de executar o APH ou AHU identificado nos passos anteriores, verificado se
existe um ponto de entrada ( User Function ) compilado com o mesmo nome do
APH. Caso exista , o ponto de entrada executado . Ele dever retornar uma
String HTML. Se for retornada alguma string , a funo retorna a tring retornada e
no processa o APH / AHU. Observao : A funo ExecInPage no ir executar
este tratamento da User Function com o nome de cAPHPage caso a funo
ExecInPage() esteja sendo executada atravs de uma USER FUNCTION .
Observao Importante - Envio parcial de HTML o Browser.
EXISTPAGE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
EXISTPAGE ( < cAphFile > ) --> lFound
Parmetros
Argumento
Tipo
Descrio
cAphFile
Caracter
Retorno
Tipo
Descrio
Caracter
Descrio
Utilizamos a funo ExistPage() para identificarmos no ambiente atual se um determinado
arquivo .APH encontra-se compilado atualmente no RPO em uso.
Exemplo :
If ExistPage('teste')
conout('teste.aph compilado neste RPO')
Else
conout('teste.aph NAO compilado neste RPO')
Endif
EXISTUSRPAGE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
EXISTUSRPAGE ( < cAhuFile > ) --> lExist
Parmetros
Argumento
Tipo
Descrio
cAhuFile
Caracter
Retorno
Tipo
Descrio
Lgico
Descrio
Utilizamos a funo ExistUSRPage() para identificarmos no ambiente atual se um
determinado arquivo .AHU encontra-se compilado atualmente no RPO em uso.
Exemplo :
If ExistUSRPage('teste')
conout('teste.ahu compilado neste RPO')
Else
conout('teste.ahu NAO compilado neste RPO')
Endif
GETJOBPROFSTRING
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
GETJOBPROFSTRING ( < cKey > , < cDefault > ) --> cKeyValue
Parmetros
Argumento
Tipo
Descrio
cKey
Caracter
cDefault
Caracter
Retorno
Tipo
Descrio
Caracter
Descrio
Atravs desta funo , podemos recuperar as configuraes do Job da Working Thread
atual.
GETWEXVERSION
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
GETWEXVERSION ( ) --> cBuildId
Retorno
Tipo
Descrio
Caracter
Descrio
Esta funo no requer argumentos , e retorna o Identificador do build / verso de Release
das funes de Infra-Estrutura APWEBEX.
Observao : A data informada pela verso no corresponde ultima compilao do
RPO de um determinado Projeto WEB, mas sim data de release da LIB de InfraEstrutura APWEBEX.
Tabela A
Simbolo
Descrio
AA
Ano de gerao da Lib
MM
Ms da gerao da Lib
DD
Dia da gerao da Lib
HH
Horrio da gerao da Lib
mm
Minutos do Horrio de Gerao da Lib
Indica que a verso foi compilada com a configuraco de envio progressivo de
(HTTP) HTML simultneo para o Browse . Esta opo imprescindvel para projetos
que se utilizam desta LIB.
Por exemplo :
APWEBEX Version 3.0312021900 (HTTP)
HEXSTRDUMP
Reviso: 15/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
HEXSTRDUMP ( < cString > , [ nStart ] , [ nLength ] ) --> cHExDump
Parmetros
Argumento
Tipo
Descrio
cString
nStart
nLength
Retorno
Tipo
Descrio
Caracter
Descrio
Atravs da funo HexStrDump(), podemos gerar uma string em Advpl em formato de
Dump Hexadecimal a partir da string informada como parmetro, a partir de uma
determinada posio da string, considerando um nmero de bytes informado.
Caso os parmetros nPosIni e nTamString no sejam informados, o dump gerado
corresponde a string recebida como parmetro em sua totalidade.
Observao :
No devemos pasar para a funo HexStrDump uma string maior que 240 Kb , pois a
gerao da String de dump realizada em memria, sendo a string final gerada em mdia
4,2 vezes maior que a string passada como parmetro. Caso a string passada como
parmetro seja maior que 240 Kb , a execuo ser abortada com a ocorrncia de erro fatal
"string size overflow"
HTMLNOTAGS
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
HTMLNOTAGS ( < cStrHtml > ) --> cStrNoTags
Parmetros
Argumento
Tipo
Descrio
cStrHtml
Caracter
Retorno
Tipo
Descrio
Caracter
String original com os caracteres interpretveis Html < > & " convertidos
para caracteres no-interpretveis.
Descrio
A Funo HTMLNOTAGS converte as Tags interpretveis de uma String HTML para
TAGS no interpretveis. Este recurso normalmente utilizado quando precisamos montar
um input Html com um conteudo que nao pode ser interpretado pelo browser como uma
Tag . Esta funo apenas converte os caracteres < ( menor que ) , > ( maior que ) , & ( e
comercial ) e ( aspas duplas ) .
Recomenda-se fortemente que, na montagem do value de um input html , o contedo
do mesmo seja colocado entre aspas duplas, pois caso o contedo do value inicial do
campo contenha aspas simples ( no convertidas pela funo HtmlNoTags) , isto
poder ocasionar perda de dados e erro de sintaxe no formulrio Html.
HTTPISWEBEX
Reviso: 12/12/2003
Sintaxe
HTTPISWEBEX ( ) --> lIsApWEBEX
Retorno
Tipo
Descrio
Lgico
Descrio
Atravs da funo HttpIsWebEx() possvel identificarmos se o programa atual est sendo
executado atravs de uma Working Thread inicializada utilizando-se as funes de InfraEstrutura APWEBEX
ISEMAIL
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
ISEMAIL ( < cEMail > ) --> lEmailOk
Parmetros
Argumento
Tipo
Descrio
cEMail
Caracter
Retorno
Tipo
Descrio
Caracter
Descrio
Utilizada para validar e-mails em Advpl , a funo ISEMAIL recebe como parmetro uma
string contendo um e-mail , retornando .T. caso a string esteja em um formto vlido
respeitando a regra para nomenclatura de endereos de e-mail.
Regra : Um e-mail considerado vlido caso seja iniciado por um caracter , apenas
contenha caracteres asc de a a z e 0 a 9 , e os caracteres @ (arroba) , . (ponto) , - ( hfen) ou
_ (underline) ; e deve conter uma e apenas uma arroba , e no minimo um ponto apos a
arroba, intercalado por um caracter.
LOWERACE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
LOWERACE ( < cString > ) --> cStrLower
Parmetros
Argumento
Tipo
Descrio
cString
Caracter
Retorno
Tipo
Descrio
Caracter
Descrio
A Funo LOWERACE converte todos os caracteres de uma String para minusculo ,
semelhante funo LOWER() , porm considera e converte tambm caracteres acentuados
em ANSI.
NTOC
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
NTOC ( < nNumero > , < nBase > , < nTamStr > ) --> cString
Parmetros
Argumento
Tipo
Descrio
nNumero
Numrico
nBase
Numrico
nTamStr
Numrico
Retorno
Tipo
Descrio
Caracter
Descrio
A Funo NTOC converte um nmero em notao decimal para um nmero representado
por String utilizando uma base numrica entre 2 e 36 , preenchendo-o com 0 (zeros)
esquerda do tamanho especificado.
Observao : O Parmetro nBase deve ser especificado com um nmero entre 2 e 36 .
Caso seja passado como parmetro um nmero base fora desta faixa, o processamento
abortado com a ocorrncia de erro [APWEXERR_0022] INVALID NTOC BASE [X] , onde
<X> foi a base passada como argumento.
REDIRPAGE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
REDIRPAGE ( < cUrl > , [ cTarget ] , [ nTime ] ) --> cScript
Parmetros
Argumento
Tipo
Descrio
cUrl
cTarget
Caracter
nTime
Numrico
Retorno
Tipo
Descrio
Caracter
Descrio
A funo RedirPage utilizada quando desejamos devolver ao Browser um script que , ao
ser executado , redirecionar o Browser abertura de um link passado como parmetro.
RETSQLACE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
RETSQLACE ( < cStrFind > ) --> cStrQuery
Parmetros
Argumento
Tipo
Descrio
cStrFind
Retorno
Tipo
Descrio
Caracter
Descrio
A funo RetSqlAce utilizada para auxiliar de montagem de querys de busca de caracteres
acentuados em bases de dados . A funo automaticamente trata a string original ,
removendo os acentos , convertendo todos os caracteres para minsculas , e trocando todas
as vogais e cedilhas da string original por uma sequncia de caracteres acentuados em
munscilas para busca posicional .
RETSQLCOND
Reviso: 12/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
RETSQLCOND ( < cAliases > ) --> cSqlWhere
Parmetros
Argumento
Tipo
Descrio
cAliases
Retorno
Tipo
Descrio
Caracter
Descrio
Utilizamos a funo RetSqlCond() como auxiliar na montagem de querys para busca de
dados em tabelas em conformidade com o padro adotado pelo ERP Microsiga e o Makira
Hypersite , utilizando aliases de 3 caracteres.
A funo retorna , a partir dos aliases passados como parmetro , as expresses de filtro de
dados para considerar a filial atual ( xFilial ) de acordo com o modo do arquivo
( X2_MODO ) , e para sempre desconsiderar registros deletados.
Observaes :
Esta funo foi mantida apenas por compatibilidade, pois a ordem de comparao
de campos na clusula WHERE de uma query deve procurar seguir a ordem dos
campos dos indexadores do banco para efeitos de performance . Para ganharmos
performance nas Querys , devemos ao invs de utilizar a funo RetSqlCond() ,
utilizar como primeira clasula WHERE o retorno da funo RetSqlFil()
( comparao dos campos _FILIAL , os primeiros do(s) ndice(s) do ERP ) , que
retorna apenas as comparaes de Filial , e por ltimo a funo RetSqlDel, que
retorna o script para verificao dos campos deletados ( que o ltimo campo das
chaves de ndice do ERP , utilizando TopConnect ).
letras) das tabelas informadas, de modo que estes alias devem ser especificados na
clusula FROM , na abertura da Query, quando utilizamos a funo RetSqlName
para retornar o nome fsico das Tabelas no Banco de Dados. A funo RqtSqlTab()
j retorna os nomes fsicos das tabelas juntamente com os alias para este fim .
RETSQLDEL
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
RETSQLDEL ( < cAliases > ) --> cSqlWhere
Parmetros
Argumento
Tipo
Descrio
cAliases
Retorno
Tipo
Descrio
Caracter
Descrio
Utilizamos a funo RetSqlDel() como auxiliar na montagem de querys para busca de
dados em tabelas em conformidade com o padro adotado pelo ERP Microsiga, utilizando
aliases de 3 caracteres.
A funo retorna , a partir dos aliases passados como parmetro , as expresses de filtro de
dados para considerar o campo D_E_L_E_T_ da(s) tabela(s) passada(s) como parmetro.
Observaes :
Devemos tambm atentar ao fato que a funo RetSqlDel() retorna os campos para
a comparao utilizando o prefixo da expresso SQL com o Alias reduzido (3 letras)
das tabelas informadas, de modo que estes alias devem ser especificados na clusula
FROM , na abertura da Query, quando utilizamos a funo RetSqlName para
retornar o nome fsico das Tabelas no Banco de Dados. A funo RqtSqlTab() j
retorna os nomes fsicos das tabelas juntamente com os alias para este fim .
RETSQLFIL
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
RETSQLFIL ( < cAliases > , [ cCompFil ] ) --> cSQlWhere
Parmetros
Argumento
Tipo
Descrio
cAliases
cCompFil
Retorno
Tipo
Descrio
Caracter
Descrio
Utilizamos a funo RetSqlFil() como auxiliar na montagem de querys para busca de dados
em tabelas em conformidade com o padro adotado pelo ERP Microsiga, utilizando aliases
de 3 caracteres.
A funo retorna , a partir dos aliases passados como parmetro , as expresses de filtro de
dados para considerar o campo filial atual ( xFilial ) de acordo com o modo de abertura
do arquivo no ERP ( X2_MODO ) .
Observao :
RETSQLTAB
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
RETSQLTAB ( < cAliasList > ) --> cStrQuery
Parmetros
Argumento
Tipo
Descrio
cAliasList
Caracter
Retorno
Tipo
Descrio
Caracter
Descrio
Utilizamos a funo RetSqlTab() como auxiliar na montagem de query's quando
trabalhamos com o padro de Tabelas ERP Microsiga, que utilizam nomenclarura de alias
com 3 Caracteres.
A funo recebe como parmetro um ou mais alias, separados por vrgula, de tabelas que
desejam ser utilizadas na query, e retorna os nomes fisicos das tabelas e seus respectivos
alias para serem inseridos na query.
SEPARA
Reviso: 15/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
SEPARA ( < cString > , < cToken > , < lEmpty > ) --> aTokens
Parmetros
Argumento
Tipo
Descrio
cString
cToken
Caracter
lEmpty
Retorno
Tipo
Descrio
Caracter
Descrio
Atravs da funco SEPARA(), pode-se parsear uma string de elementos a partir de um
determinado separador , sendo retornado um Array com os elementos identificados na
String.
Exemplo :
aInfo := Separa('1,2,,4',',',.f.) // Resulta {'1','2','4'}
aInfo := Separa('1,2,,4',',',.t.) // Resulta {'1','2','','4'}
Observao :
Para realizar a anlise de uma string, cujo delimitador tenha apenas 1 byte, e as ocorrncias
de dois separadores juntos sejam ignoradas na gerao do array, a funo separa() utiliza a
funo StrTokArr(), funo escrita em C no Protheus Server, mais rpida para este
processamento. Apenas existe a necessidade de utilizarmos a funo Separa() caso as
ocorrncias de dois separadores juntas devam ser consideradas no array de resultado e/ou a
string utilizada como separador possua mais que 1 byte de tamanho.
UNESCAPE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
UNESCAPE ( < cString > ) --> cUnEscaped
Parmetros
Argumento
Tipo
Descrio
cString
Caracter
Retorno
Tipo
Descrio
Caracter
Descrio
Realiza a operao inversa funo Escape() , convertendo os caracteres especiais em
notao %HH em caracteres ASCII.
Observao : Apenas sero convertidos os caracteres originalmente tratados pela
funo Escape()
UPPERACE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
UPPERACE ( < cString > ) --> cStrUpper
Parmetros
Argumento
Tipo
Descrio
cString
Retorno
Tipo
Descrio
Caracter
Descrio
A Funo UPPERACE converte todos os caracteres de uma String para mai\usculo ,
semelhante funo UPPER() , porm considera e converte tambm caracteres acentuados
em OEM e ANSI
UPSTRTRAN
Reviso: 15/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
UPSTRTRAN ( < cString > , < cSearch > , [ cReplace ] , [ nStart ] , [ nCount ] ) -->
cNewString
Parmetros
Argumento
Tipo
Descrio
cString
cSearch
Caracter
cReplace
nStart
nCount
Retorno
Tipo
Descrio
Caracter
Descrio
Similar funo Strtran(), porm realiza a busca da ocorrncia da string considerando letras
maisculas e minsculas. A funo Strtran() case-sensitive, e a funo UpStrtran() no.
VALTOSQL
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
VALTOSQL ( < xExpressao > ) --> cQryExpr
Parmetros
Argumento
Tipo
Descrio
xExpressao
Retorno
Tipo
Descrio
Caracter
Descrio
A Funo VALTOSQL() utilizada como auxiliar na montagem de Query's , convertendo
um contedo varivel Advpl para a string correspondente a ser acrescentada na Query.
Podemos passar como parmetro uma Expresso do tipo C Caracter , D Data ou N
Numrica.
A expresso Catacter ser colocada entre aspas simples, sendo removidas as aspas
simples contidas na mesma , caso existam .
Uma expresso Data ser convertida para formato ANSI ( AAAAMMDD ) , entre
aspas simples.
VARINFO
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
VARINFO ( < cId > , < xVar > , [ nMargem ] , [ lHtml ] , [ lEcho ] ) --> cVarInfo
Parmetros
Argumento
Tipo
Descrio
cId
Caracter
xVar
nMargem
Numrico
lHtml
Lgico
lEcho
Lgico
Retorno
Tipo
Descrio
Caracter
Descrio
A Funo VARINFO() gera um texto ASCII e/ou Html , com possibilidade de ECHO para o
Console do Protheus Server ( caso habilitado ) , com as informaes sobre o contedo de
uma varivel de memria Advpl , de qualquer tipo .
Cada tipo de varivel possui um tratamento para converso em String :
Observao : O segundo parmetro ( xVar ) deve ser uma varivel Advpl que deve existir
no escopo de variveis. Caso a varivel no exista, o processamento abortado com a
ocorrncia de erro "Variable does not exist" . Para saber se uma determinada varivel
existe no escopo da execuo da funo atual, deve ser utilizada a funo Advpl TYPE(),
onde passamos a varivel a ter seu tipo determinado como string ( entre aspas ) .
WEBINFO
Reviso: 12/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
WEBINFO ( ) --> cHtmlInfo
Retorno
Tipo
Descrio
Caracter
Descrio
A funo WebInfo() foi desenvolvida para ser chamada atravs de uma requisio http , via
link .apl ou .apw , e ela identifica todos os parmetros recebidos via uma requisio http:
Parmetros via get , post , o header HTTP, os Cookies, o content-type , Legth , Contentdisposition , SoapRaction (ao SOAP para requisies de WebSErvices ) , e
OtherContent ( caso o contedo postado no seja um text/html )
Esta funo retorna uma pgina Html com todas estas informaes, e utilizada no
desenvolvimento de projetos. quando temos a necessidade prtica de recuperarmos todas as
informales provenientes de uma requisio HTTP. Adicionalmente , a funo WebInfo
Por exemplo, com o Protheus configurado para atender requisies de links .apl via HTTP ,
chame a funo WebInfo.apl atravs do link :
http://localhost/webinfo.apl?param1=teste¶m2=outroteste
Ser exibido no Web Browser uma tela semelhante tela abaixo :
__aCookies -> ARRAY ( 0) [...]
__aPostParms -> ARRAY (
0) [...]
0) [...]
0) []
0) []
0) []
SoapRAction() -> C (
0) []
HttpOtherContent() -> C (
-1]
0) []
Caso a mesma requisio seja realizada atravs de link .apw , utilizando-se a tecnologia
WEBEX , dever ser exibida uma tela semelhante tela abaixo :
aHeaders -> ARRAY ( 9) [...]
aHeaders[1] -> C ( 25) [GET /webinfo.apw HTTP/1.1]
aHeaders[2] -> C ( 172) [Accept: image/gif, image/x-xbitmap, image/jpeg,
image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.mspowerpoint, application/msword, */*]
aHeaders[3] -> C ( 22) [Accept-Language: pt-br]
aHeaders[4] -> C ( 30) [Accept-Encoding: gzip, deflate]
aHeaders[5] -> C ( 61) [If-Modified-Since: Tue, 09 Dec 2003 21:23:03
GMT; length=1480]
aHeaders[6] -> C ( 81) [User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT
5.1; .NET CLR 1.0.3705)]
aHeaders[7] -> C ( 21) [Host: apwebex.automan]
aHeaders[8] -> C ( 22) [Connection: Keep-Alive]
aHeaders[9] -> C ( 41) [Cookie: SESSIONID=1071153371; AP5PROCID=0]
httpCookies -> ARRAY ( 2) [...]
httpCookies[1] -> C ( 9) [SESSIONID]
httpCookies[2] -> C ( 9) [AP5PROCID]
SESSIONID -> C ( 10) [1071153371]
AP5PROCID -> C (
1) [0]
0) [...]
0) [...]
0) []
0) []
SoapRAction() -> C (
0) []
HttpOtherContent() -> C (
-1]
0) []
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Reviso: 13/04/2004
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
Verso 8.11
LIB WEBEX
[APWEXERR_0022] <Start / Connect> Function [X] of Module [Y] not found in Rpo.
Descrio / causa : Esta ocorrncia de erro reproduzida quando, ao configurar um
mdulo web [Y], a funo [X] de inicializao ou conexo referente ao mdulo no foi
encontrada no repositrio de objetos do ambiente em uso pela aplicao web.
Soluo : Certifique-se que o repositrio em uso atualmente possui as funes pertinentes
o modulo configurado.
[APWEXERR_0023] UNSUPPORTED
BREAK CONTROL
Reviso: 13/04/2004
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
LIB WEBEX
[APWEXERR_0024] <Start / Connect / Finish > Function [X] of Module [Y] not found
in Rpo.
Descrio / causa : Esta ocorrncia de erro reproduzida quando, ao configurar um
mdulo web [Y], a funo [X] de inicializao, conexo ou finalizao, referente ao
mdulo, no foi encontrada no repositrio de objetos do ambiente em uso pela aplicao
web.
Soluo : Certifique-se que o repositrio em uso atualmente possui as funes pertinentes
o modulo configurado.
Verso 8.11
DW - Data WareHouse
GE - Gesto Educacional
Caso no seja fornecida uma sigla vlida na chave SIGAWEB, na seo de configurao
das working threads, as mesmas no entraro no ar, e sero abortadas com esta ocorrncia
de erro.
Soluo : Verifique a chave de configurao SIGAWEB e preencha-a com uma sigla de
mdulo vlida para a verso de repositrio / ambiente em uso.
Verso 8.11
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
[APWEXERR_0030] NO WEB
LICENCES AVAILABLE (...
Reviso: 13/04/2004
Abrangncia
Verso 8.11
LIB WEBEX
LIB WEBEX
01. STARTWEBEX
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
01. STARTWEBEX ( [ NIL ] ) --> lSucess
Parmetros
Argumento
Tipo
Descrio
NIL
Retorno
Tipo
Descrio
Lgico
Descrio
Este ponto de entrada executado na inicializao de cada Working Thread,
quando utilizada a configurao para a Lib APWEBEX.
Atravs dele, devemos iniciar o ambiente necessrio o atendimento das requisies de
processamento via Browser , atravsde links .apw, tais como a abertura de dicionrios e
conexo com o Banco de Dados.
Grupos Relacionados
Principal / A Tecnologia Protheus / Programao Advpl para WEB / Infra-Estrutura
APWEBEX / Pontos de Entrada
02. CONNECTWEBEX
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
02. CONNECTWEBEX ( < cFnLink > ) --> cHtmlVld
Parmetros
Argumento
Tipo
Descrio
cFnLink
Retorno
Tipo
Descrio
Caracter
Descrio
Este ponto de entrada executado imediatamente antes do processamento de uma
requisio realizada atravs de um browser para processamento de uma funo Advpl ,
atravs de um link .apw , permitindo realizar uma pr-validao antes de cada
processamento solicitado atravs do Browser.
03. RESETWEBEX
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
03. RESETWEBEX ( < cFnLick > ) --> cHtmlAdd
Parmetros
Argumento
Tipo
Descrio
cFnLick
Retorno
Tipo
Descrio
Caracter
Este ponto de entrada DEVE retornar uma string , podendo ser inclusive
uma string vazia. A String retornada ser acrescentada ao Codigo Html a
ser retornado ao Browser
Descrio
Este ponto de entrada executado imediatamente aps o processamento de uma requisio
de processamento Advpl atravs de um Web Browser utilizando as configuraes e Lib
APWEBEX.
Ele permite que seja executado um processamento adicional aps o processamento de cada
requisio .apw , e aida permite um retorno de html adicional ao browser.
Vale a pena lembrar que este ponto no ser executado em caso de erro fatal no ponto de
entrada U_CONNECTWEBEX ou na execuo da funo principal chamada atravs do
Link.
04. FINISHWEBEX
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
04. FINISHWEBEX ( ) --> NIL
Parmetros
Argumento
Tipo Descrio
Retorno
Tipo
Descrio
(NULO)
Descrio
Este ponto de entrada executado quando da finalizao ( Fechamento ) de uma Working
Thread APWEBEX. No recebe parmetros , e no requer retorno. Ele permite que seja
executado um procedimento qualquer no momento da sada de uma Working Thread, seja
por time-out ou por tempo total de permanncia no ar.
05. ENDSESSION
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
05. ENDSESSION ( < cSessionId > ) --> NIL
Parmetros
Argumento
Tipo
Descrio
cSessionId
Caracter
Retorno
Tipo
Descrio
(NULO)
Descrio
Atravs deste ponto de entrada , podemos executar uma rotina Advpl quando da finalizao
das sessions de um usurio por time-out de inatividade. O Retorno deste ponto de entrada
no utilizado, devendo ser nulo (NIL).
Apenas devemos compilar este ponto de entrada no Projeto caso realmente exista a
necessidade de ser executado um processamento especfico relacionado finalizao das
sessions de um usurio. Vale a pena ressaltar tambm que este ponto de entrada apenas
chamado na finalizao das sessions por tempo de inatividade. Caso seja utilizada a funo
httpfreesession() para limpar da memria as sessions do usurio atual em uma Working
Thread, este ponto de entrada no ser chamado.
06. WEBEXERROR
Reviso: 16/12/2003
Abrangncia
LIB WEBEX
Sintaxe
06. WEBEXERROR ( < oErrorObj > , < cErrorLog > , < cErrorHtml > ) --> cMsgHtml
Parmetros
Argumento
Tipo
Descrio
oErrorObj
cErrorLog
cErrorHtml
Retorno
Tipo
Descrio
Caracter
Descrio
Este ponto de entrada ser chamado no caso de uma ocorrncia de erro fatal Advpl durante
a execuo de uma Working Thread em ambiente / Lib APWEBEX, permitindo a
montagem de uma mensagem de erro HTML customizada a ser devolvida o usurio.
Este ponto de entrada recebe como parmetros o objeto do erro , a descrio ASCII
completa do erro gravada no error.log , e o HTML default montado pela da rotina de
tratamento de erro que ser devolvido ao usuario. Atravs da utilizao deste ponto de
entrada , possvel gerar um Html diferenciado conforme a necessidade, para mostrar a
ocorrncia de erro e/ou maiores instrues ao usurio.
OBSERVAES
Este ponto de entrada ser chamado apenas caso a ocorrncia de erro esteja
relacionada com uma chamada de funo via link .apw, aplicando-se apenas
funo .apw chamada e os pontos de entrada U_CONNECTWEBEX e
U_RESETWEBEX. Em caso de ocorrncias de erro no start da Thread
(U_STARTWEBEX), na finalizao da Thread ( U_FINISHWEBEX ) e na
finalizao de sessions de usurio por time-out ( U_ENDSESSION ), o ponto de
entrada U_WEBEXERROR no ser chamado .
<SCRIPT LANGUAGE='JavaScript'>
function muda()
{
var val_combo =
document.exemplo.teste.options[document.exemplo.teste.selectedIndex].value;
// Mostra qual o usuario selecionou
alert(val_combo);
}
</SCRIPT>
Dicas teis
Procurem sempre utilizar a TAG <noframes> para mostrar uma mensagem de erro
no Browse se o mesmo no possuir o recurso de interpretao de frames ( caso este
de navegadores do I.E. 3.0 ou inferiores e netscape 3.0 ou inferiores).
Sempre especifique TODOS os sources (src) de cada frame. Caso seja necessrio
uma pgina em branco como um dos frames , para criao dinmica ou algo
parecido , utilize o source about:blank
A tag <body> no suportada. na declarao dos frames. Jamais usem esta tag em
uma estrutura de frames.
permita mostrar esta quebra ( caso este no qual a tela ou frame ganha uma barra de scroll no
Web Browser ) .
Exemplo ( em arquivo .aph )
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
oFrm.txt_Fone.value == "" ||
oFrm.txt_End.value == "" )
{
alert( "Preencha Todos Os Dados Do Formulrio" );
return;
}
oFrm.action = "w_ms03.apw";
oFrm.submit();
}
</script>
<body>
<h2 align="center"> Formulrio</h2>
<hr>
<p>Bem Vindo <%=HttpSession->Usuario%></p>
<form name="form" method="post" action="">
<p>Nome : <input name="txt_Nome" type="text" id="txt_Nome"
size="25" value=""></p>
<p>Telefone : <input name="txt_Pre" type="text"
id="txt_Pre" size="3"> <input name="txt_Fone" type="text"
id="txt_Fone" size="10"></p>
<p>Endereo : <input name="txt_End" type="text"
id="txt_End" size="25"></p>
<p><input type="button" value="Enviar"
onClick="envia()"></p>
</form>
<hr>
</body>
</html>
<td colspan="2"><%=HttpPost->txt_End%></td>
</tr>
<tr>
<td width="95">Contador</td>
<td colspan="2"><%=HttpSession->Contador%></td>
</tr>
</table>
<P>
<input name="Reset" type="reset" value="Voltar"
onClick="window.location = 'w_ms02.apw'">
</P>
</HTML>
#INCLUDE "PROTHEUS.CH"
#DEFINE ID "Admin"
#DEFINE SENHA "123"
web function ms01()
//A funo executada quando chamada atravs do browser.
return h_ms01()
web function ms02()
//Verifica se a primeira vez q usurio faz login.
conout( ID, SENHA )
if empty( HttpSession->Usuario )
//Verifica se os campos foram preenchidos.
if empty( HttpPost->txt_Nome ) .And. empty( HttpPost>txt_Senha)
return "Nome e Senha no informados!!"
endif
//Verifica usurio e senha.
if HttpPost->txt_Nome != ID
return "Usurio Invlido!!"
endif
if HttpPost->txt_Senha != SENHA
return "Senha Invlida!!"
endif
//Seta o nome do usuario.
HttpSession->Usuario := HttpPost->txt_Nome
endif
return h_ms02()
Verso 8.11
Este exemplo de ADVPL ASP mostra como realizar o upload de um arquivo via HTTP.
O cdigo abaixo representa o arquivo "ms01.APH", que contm um formulrio
para indicar o local do aquivo para upload.
<html>
<head>
<title>Exemplo Upload</title>
</head>
<body>
<table width="500" border="1" align="center" cellpadding="0"
cellspacing="0">
<tr>
<td width="28%" align="right">Path do arquivo : </td>
<td width="2%"> </td>
<td width="70%"><%=httpPost->txtFile%></td>
</tr>
<tr>
<td align="right">Tamanho : </td>
<td> </td>
<td><%=LengthFile%></td>
</tr>
</table>
</body>
</html>
O cdigo abaixo representa o arquivo "upload.APH", que contm um
formulrio para exibir alguns dados do aquivo enviado.
A parte mais importante desse cdigo, se refere a propriedade
(enctype="multipart/form-data") dentro da tag
, essa propriedade garante que o arquivo seja enviado corretamente.
<html>
<head>
<title>Exemplo Upload</title>
<script>
function jUpFile()
{
if( document.form.txtFile.value == "" )
{
alert( "Informe o nome do arquivo clicando em
Browse..." );
return;
}
document.form.action = "w_upFile.apw";
document.form.submit();
}
</script>
</head>
<body>
<form name="form" action="" enctype="multipart/form-data" method="post">
<p align="center">
<font face="Arial, Helvetica, sans-serif" size="3"><b>Exemplo de
upload de arquivos em ADVPL ASP</b></font><br>
<br>
<input name="txtFile" type="file" id="txtFile" size="50">
<br>
<br>
<input name="btnSub" type="button" id="btnSub" value="Subir arquivo"
onClick="jUpFile()">
</p>
</form>
</body>
</html>
O cdigo abaixo representa o arquivo "upload.PRW", que contm as funes
escritas em ADVPL ASP.
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FILEIO.CH"
Web Function upFile()
Local nH := FOpen( httpPost->txtFile, 0 + 64 )
Private LengthFile := 0
LengthFile := fSeek( nH, 0, FS_END )
Return h_RespUpFile()
HTML
Reviso: 13/04/2004
HTML, abreviao para 'HyperText Markup Language', que significa 'Linguagem de
Formatao de HyperTexto'
HTML a formatao padro adotada para a publicao de HyperTexto na Internet (World
Wide Web). O HTML consiste em uma formatao no-proprietria, baseada no SGML (
Standard Generalized Markup Language ), e pode ser criada e processada por um grande
nmero de ferramentas, desde editores de texto-plano ( como o NotePad, por exemplo), at
sofisticados 'softwares de autoria' WYSIWYG (What You See Is What You Get) .
Basicamente, o HTML utiliza-se dos marcadores < e > para estruturar e formatar texto. Por
exemplo:
Letra normal, <b>negrito</b> e <u>sublinhado </u>
A linha de texto acima, representada em um Web Browser, seria mostrada assim :
Letra normal, negrito e sublinhado
HTTP
Reviso: 13/04/2004
HTTP a abreviao de 'Hyper Text Transfer Protocol', que significa 'Protocolo de
Transferncia de Hyper-Texto'.
O HTTP um protocolo em nvel de aplicao para distribuio de informaes. Trata-se
de um protocolo genrico, que pode ser utilizado para muitas outras aplicaes alm de
transferncia de hypertexto, como nomear servidores e trocas de informaes entre sistemas
integrados, utilizando-se suas extenses, cdigos de erro, mtodos de requisio e
cabealhos (Headers). Uma caracterstica importante do HTTP a tipagem e normalizao
da representao da informao, permitindo a construo de sistemas independente do
modo pelo qual os dados esto sendo transferidos.