Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
</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,
pode-se 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):
<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 pr-compilao . 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.
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,
pode-se 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):
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
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 pr-compilao . 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
#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() .
O Protheus atendendo requisies .apl
Quando solicitado atravs de um Web Browser um processamento de uma funo via
link .apl, a funo solicitada deve ser responsvel por abrir o ambiente necessrio o
processamento, conectar com o Banco de Dados caso necessrio, realizar o
processamento e retornar a String Html ao Web Browser.
Este ambiente criado fechado imediatamente aps o trmino do processamento, o que
exige muito do Servidor da aplicao em se tratando de uma aplicao web com vrios
usurios efetuando acessos simultneos. Para atender com mais eficincia s requisies
de processamento de um projeto web, foi implementada no Protheus a tecnologia de
'Working Threads', explicada em mais detalhes no tpico 'Desenvolvimento de Funes
.apw'.
Verso 7.10
Verso 8.11
HttpGet
HttpPost
HttpCookies
HttpHeadIn
Verso 8.11
LIB WEBEX
Agora, vamos habilitar este host para atender requisies de funes, atravs de link
.apl. Para tal , precisamos apenas do nome de um Environment (ambiente) configurado
no .INI . Podemos usar o prprio ambinete do ERP . Basta acrescentarmos na seo http
a chave Environment=<nome_do_ambiente> , para que este ambiente passe a atender
o 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
[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
O alias virtual HttpCookie possui uma propriedade chamada aCookies, criada apenas
para consulta (read-only), que retorna um Array Advpl de Strings , contendo os nomes
dos Cookies enviados pelo Browser o Protheus . Por exemplo :
aInfo := HttpCookies->aCookies
For nI := 1 to len(aInfo)
// Mostra no console do Server todos os cookies recebidos.
conout('Cookie '+str(nI,3)+' = ' + aInfo[nI])
Next
Criando um Cookie
A criao de um Cookie realizada atravs da atrubuio de um valor diretamente o
cookie desejado. Por exemplo :
HttpCookies->MeuCookie := 'TESTE'
A criao de um Cookie merece uma ateno especial, pois um Cookie retornado o
browser atravs do Header de Retorno HTTP. De modo que, para que a criao de um
cookie seja realizada com sucesso , o mesmo deve ser criado antes de haver qualquer
processamento de APH / AHU, caso este que no seria mais possvel a criao do
Cookie, pois o Header de Retorno HTTP j teria sido enviado o browser solicitante.
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
HttpHeadIn->REMOTE_ADDR
Retorna uma string , no formato nnn.nnn.nnn.nnn , o IP da estao que realizou a
requisio.
httpHeadIn->REMOTE_PORT
Retorna um valor Advpl numrico , informando a porta utilizada para realizar a
requisio.
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
.apw , o Browser envia as trs requisies de .apw para o Protheus Server , e caso
extistam 3 working threads disponveis naquele momento , as trs requisies so
atendidas em paralelo.
Por outro lado , se em duas destas trs requisies faz-se necessria a atualizao e/ou
consulta a uma varivel de Session ( httpsession ) , este processamento em paralelo ,
caso 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
Verso 8.11
LIB WEBEX
Verso 8.11
LIB WEBEX
Sintaxe
CLOSE QUERY cAlias
Parmetros
Argumento
cAlias
Tipo
Descrio
Alias sob o qual o cursor da Query foi aberto. Caso o alias
Caracter passado como parmetro no se encontre aberto , a funo
no gera nenhuma ocorrncia de erro.
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
<cQuery>
ALIAS <cAlias>
[NOCHANGE]
Tipo
Descrio
cQuery corresponde String contendo a Query a ser
Caracter
executada no banco de dados
cAlias corresponde ao nome do alias sob o qual o cursor
de retorno dos dados pesquisados ser aberto no ambiente
Caracter Advpl. No pode ser especificado um nome de alias j em
uso, seno a aplicao ser finalizada com a ocorrncia de
erro "Alias already in Use"
Caso especificada a clusola NOCHANGE na abertura da
Caracter query , a string em cQuery no ser submetida funo
ChangeQuery()
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
<cHtml>
START
<cFnStart>
Tipo
Descrio
cHtml corresponde variavel que ser utilizada para
armazenar a String Html que ser retornada ao Browser
Caracter
solicitante do processamento. Deve ser especificada uma
varivel String , com contedo vazio. ("")
cFnStart corresponde o nome de uma funo Advpl que
Caracter ser executada para pr-validar a execuo do resto do
cdigo. A funo deve ser passada SEM parnteses () .
Descrio
Devemos utilizar este comando para fechar uma seo aberta pelo comando WEB
EXTENDED INIT . Para cada ocorrncia do comando WEB EXTENDED INIT , devese ter um fechamento da mesma atravs do comando WEB EXTENDED END ,
devendo haver apenas uma ocorrncia desta estrutura por funo.
A utilizao deste comando implicita Working Threads inicializadas pela Lib
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
Sintaxe
WEB EXTENDED INIT <cHtml> [ START <cFnStart> ]
Parmetros
Argumento
<cHtml>
START
<cFnStart>
Tipo
Descrio
cHtml corresponde variavel que ser utilizada para
armazenar a String Html que ser retornada ao Browser
Caracter
solicitante do processamento. Deve ser especificada uma
varivel String , com contedo vazio. ("")
cFnStart corresponde o nome de uma funo Advpl que
Caracter ser executada para pr-validar a execuo do resto do
cdigo. A funo deve ser passada SEM parnteses () .
Descrio
Devemos utilizar este comando , juntamente com o comando WEB EXTENDED END
quando montamos uma funco ( Web Function ) que foi construda para ser chamada a
partir de um Web Browser , quando nos utilizamos das funes de Infra-Estrutura
APWEBEX.
Atravs dele , realizada uma pr-validao que certifica que a execuo da funo
somente ser realizada caso a thread atual seja realmente uma Thread montada no
ambiente WEBEX, alm de podermos inserir uma pr-validao (START) de execuo
especfica para esta funo.
Caso seja especificada uma funo na clusula START, a mesma dever retornar uma
String. Retornando uma String em branco , o processamento da funo original ser
efetuado normalmente . Caso a funo retorne uma string no-vazia , esta string ser
retornada para a varivel cHtml , e o processamento do programa ser desviado para a
linha do cdigo-fonte imediatamente posterior o comando WEB EXTENDED END .
Para cada ocorrncia do comando WEB EXTENDED INIT , deve-se ter um fechamento
da mesma atravs do comando WEB EXTENDED END , devendo haver apenas uma
ocorrncia desta estrutura por funo.
A utilizao deste comando implicita Working Threads inicializadas pela Lib
Verso 8.11
LIB WEBEX
EMPRESA '01' ;
FILIAL '01'
;
TABLES "ZX1","ZX2","ZX3","ZX4","ZZ1","ZZ2","ZZ3","ZZ4","ZZ5"
Return .T.
/* -----------------------------------------------------------------------------Ponto de Entrada ConnectWebEx(cFnName) => cHtml ou ""
Ponto de entrada executado imediatamente antes do processamento de uma
requisio de um link .APW
Recebe como parmetro o nome da funo a ser executada, passada no
link.
Deve retornar uma String, que ser retornada ao ao Browser
solicitante. Caso retorne uma string
em branco (vazia) , a funo originalmente solicitada executada pela
lib.
Caso contrrio, a funo original no executada , e a string
retornada enviada ao Browser.
------------------------------------------------------------------------------ */
USER Function ConnectWebEx(cFnName)
Local cHtmlConn := ''
conout('Vou executar '+cFnName)
Return cHtmlConn
/* -----------------------------------------------------------------------------Ponto de Entrada ResetWebEx(cFnName) => cHtml ou ""
Funo chamada imediatamente Apos a execuo de uma requisio .APW
Recebe como parmetro o nome da funo executada, e permite tambm que
seja acrescentado
algo a mais no Html a ser retornado ao Browser.
------------------------------------------------------------------------------ */
USER Function ResetWebEx(cFnName)
Local cHtmlConn := ''
conout('Terminei de executar '+cFnName)
Return cHtmlConn
/* -----------------------------------------------------------------------------Ponto de Entrada FINISHWEBEX()
Funo chamada no fechamendo do ambiente de uma working Thread. Apos a
execuo deste ,
a Thread utilizada eliminada da memria .
------------------------------------------------------------------------------ */
USER Function FINISHWEBEX()
conout('Finalizando a Working Thread.')
Return
/* -----------------------------------------------------------------------------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%200102&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
#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]
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
CTON('01101001',2)
CTON('00DA25FE',16)
APWEXADDERR
Reviso: 13/04/2004
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
APWEXADDERR ( [ cTitulo ] , [ cInfo ] ) --> .T.
Parmetros
Argumento
cTitulo
cInfo
Tipo
Descrio
cTitulo corresponde a um ttulo identificador da
Caracter informao. Deve ter no mximo 20 caracteres. Os
caracteres acima da vigsima posio sero ignorados.
cInfo corresponde Informao a ser acrescentada ao
Caracter
ERROR.LOG em caso de erro.
Retorno
Tipo
Lgico
Descrio
Esta funo sempre retorna .T.
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
cString
Tipo
Descrio
Caracter String a ser convertida.
Retorno
Tipo
Caracter
Descrio
String resultante convertida para munsculo , com as primeiras letras das
palavras significantes em maisculo.
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
cString
nBase
Tipo
Descrio
cString corresponde representao de um nmero em
Caracter
outra base numrica, compreendida entre 2 e 36.
nBase corresponde base numrica utilizada pelo numero
Numrico
representado em cString.
Retorno
Tipo
Numrico
Descrio
Nmero recebido como parmetro em notao decimal ( Base 10 )
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
cString
Tipo
Descrio
Caracter cString uma sequncia de caracteres a ser processada.
Retorno
Tipo
Caracter
Descrio
cEscaped corresponde string original , com os caracteres reservados
utilizando a notao %HH .
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
cAPHPage
Tipo
Descrio
Corresponde o nome do APH que deve ser executado,
Caracter
sem a extenso.
Retorno
Tipo
Caracter
Descrio
cHtmlPage corresponde string HTML gerada pela pgina APH / AHU.
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
EXISTPAGE
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
EXISTPAGE ( < cAphFile > ) --> lFound
Parmetros
Argumento
cAphFile
Tipo
Descrio
Nome do arquivo APH, sem extenso e sem path , a ser
Caracter
verificado.
Retorno
Tipo
Caracter
Descrio
Retorna um valor booleano indicando se o arquivo APH especificado est
compilado no RPO do ambiente atual.
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
cAhuFile
Tipo
Descrio
Nome do arquivo AHU, sem extenso e sem path , a ser
Caracter
verificado
Retorno
Tipo
Lgico
Descrio
Retorna um valor booleano indicando se o arquivo APH especificado est
compilado no RPO do ambiente atual.
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
cKey
cDefault
Tipo
Descrio
cKey corresponde chave da seo de configurao da
Caracter
Working Thread atual a ser retornada.
Valor default (string) a ser retornado pela funo caso a
Caracter
chave especificada no sehja encontrada no .INI
Retorno
Tipo
Caracter
Descrio
Conteudo da Chave solicitada . Caso a chave no seja encontrada ,
retornado o conteudo de cDefault . Caso esta funo no seja executada a
partir de uma Working Thread , ela retornar uma string em branco ("")
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
Caracter
Descrio
Corresponde String Identificadora da verso , no formato <LIB>
V.AAMMDDHHmm . Vide Tabela A
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
Infra-Estrutura 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
cString
nStart
nLength
Tipo
Descrio
Caracter String a ser lida para a gerao do Dump
Corresponde posio inicial de cString a ser considerada
para a gerao do Dump, a partir da posio 1. Caso este
Numrico
parmetro no seja informado , o Default a posio 1 da
string.
nLength corresponde o tamanho a ser considerado para a
gerao do DUMP a partir da posio inicial recebida em
Numrico
nStart. Caso este parmetro no seja informado,
considerado o tamanho at o final da String.
Retorno
Tipo
Caracter
Descrio
O retorno da funo corresponde uma string Advpl , formatadas em 16
bytes em hexadecimal por linha , mais o separador pipe (|) , mais os 16
caracteres em Ansi. Os caracteres de controle ( codigo ascii menor que 32
) so convertidos para visualizao para o caractere underline (_)
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
cStrHtml
Tipo
Descrio
cStrHtml corresponde a uma String que no pode conter
Caracter
caracteres Html interpretveis.
Retorno
Tipo
Caracter
Descrio
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
Lgico
Descrio
A funo retornar .T. caso o ambiente de execuo atual seja uma
Working Thread WEBEX , inicializada pela funo de infra-estrutura
STARTWEBEX.
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 Infra-Estrutura APWEBEX
ISEMAIL
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
ISEMAIL ( < cEMail > ) --> lEmailOk
Parmetros
Argumento
cEMail
Tipo
Descrio
cEmail corresponde a string a ser analizada , contendo um
Caracter
e apenas um endereo de e-mail.
Retorno
Tipo
Caracter
Descrio
Retorna .T. caso a sring recebida como parmetro atenda s definies de
nomenclatura vlidos para um endereo de e-mail.
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
cString
Tipo
Descrio
cString a sequncia de caracteres a ser convertida para
Caracter
letras minsculas.
Retorno
Tipo
Caracter
Descrio
String original em letras minsculas.
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
nNumero
nBase
nTamStr
Tipo
Descrio
nNumero o valor numrico , em base devimal , a ser
Numrico
convertido.
nBase corresponde base binria a ser utilizada para
Numrico
converter nNumero.
nTamStr corresponde ao tamanho da string representando
Numrico
o numero na base desejada .
Retorno
Tipo
Caracter
Descrio
cString corresponde ao numero convertido para a base numrica
especificada como parmetro.
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
cUrl
cTarget
nTime
Tipo
Descrio
Caracter Link para onde o script deve apontar o redirecionamento
Destino do redirecionamento. Caso no especificado , o
Caracter
default _self.
Tempo (em segundos) de delay antes do redirecionamento
Numrico
ser executado.
Retorno
Tipo
Caracter
Descrio
Script Html / JavaScript que , ao ser executado no Browser (client) ,
chama a pgina/objeto chamado no Link.
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
cStrFind
Tipo
Descrio
cStrFind corresponde sequncia de caracteres a ser
Caracter procurada , podendo conter caracteres maisculos e
minsculos , com ou sem acentuao.
Retorno
Tipo
Caracter
Descrio
cStrQuery corresponde string de busca a ser utilizada na query,
utilizando caracteres em minsculo.
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
Lista contendo um ou mais aliases , separados por vrgula ,
Caracter a serem considerados para a montagem da expresso de
validao.
cAliases
Retorno
Tipo
Caracter
Descrio
Corresponde expresso SQL para filtrar os dados atravs da clusula
WHERE
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 :
RETSQLDEL
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
RETSQLDEL ( < cAliases > ) --> cSqlWhere
Parmetros
Argumento
Tipo
Descrio
Lista contendo um ou mais aliases , separados por vrgula ,
Caracter a serem considerados para a montagem da expresso de
validao.
cAliases
Retorno
Tipo
Caracter
Descrio
Corresponde expresso SQL para filtrar os dados atravs da clusula
WHERE
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 :
RETSQLFIL
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
RETSQLFIL ( < cAliases > , [ cCompFil ] ) --> cSQlWhere
Parmetros
Argumento
cAliases
cCompFil
Tipo
Descrio
Lista contendo um ou mais aliases , separados por vrgula ,
Caracter a serem considerados para a montagem da expresso de
validao.
Atravs de cCompFil possvel especificar uma Filial
FIXA a ser comparada com os campos FILIAL do(s)
alias(es) passados no parmetro cAliases. Caso no
Caracter
informado, os campos _FILIAL da(s) tabela(s) passadas
como parmetro em cAliases sero comparados com o
retorno da funo xFilial() de cada alias, respectivamente.
Retorno
Tipo
Caracter
Descrio
Corresponde expresso SQL para filtrar os dados atravs da clusula
WHERE
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
cAliasList
Tipo
Descrio
String contendo um ou mais alias , separados por virgula ,
Caracter
a terem seus nomes fsicos determinados.
Retorno
Tipo
Caracter
Descrio
String contendo nomes fisicos e alias identificadores dos aliases recebidos
como parmetro.
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
cString
cToken
lEmpty
Tipo
Descrio
Caracter String com a sequncia de caracteres a ser "parseada"
cToken corresponde string a ser utilizada como
Caracter
separador para delimitar as informaes.
lEmpty identifica se caso um intervalo vazio entre tokens
Caracter deve ser retornado como um elemento do array. Caso no
especificado , o Default .T.
Retorno
Tipo
Caracter
Descrio
Array de uma dimenso contendo os elementos parseados pela rotina
levando-se em conta o separador passado como parametro.
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
cString
Tipo
Descrio
cString a string a ter os caracteres em formato escape
Caracter
convertidos.
Retorno
Tipo
Caracter
Descrio
cUnescaped corresponde string recebida como parmwetro , com os
caracteres originalmente em notao escape ( %HH ) convertidos para
ASCII
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
cString
Tipo
Descrio
Caracter String a ser convertida. Pode conter tambm acentos .
Retorno
Tipo
Caracter
Descrio
Retorna a string original com todas as letras mauisculas , inclusive as
letras acentuadas.
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
cString
cSearch
cReplace
nStart
nCount
Tipo
Descrio
cString corresponde sequncia de caracteres ou campo
Caracter
memo a ser pesquisado.
Corresponde sequncia de caracteres a ser procurada em
Caracter
cString
cReplace corresponde sequncia de caracteres que deve
substituir a string cSearch. Caso no seja especificado, as
Caracter
ocorrncias de cSearch em cString sero substitudas por
uma string nula ("")
nStart corresponde o nimero sequencial da primeira
ocorrncia de cSEarch em cString a ser substituda por
Numrico cReplace. Se este argumento for omitodo , o default 1 (
um ) . Caso seja passado um numero menor que 1, a
funo retornar uma string em branco ("")
nCount corresponde o nmero mximo de trocas que
dever ser realizada pela funo . Caso este argumento
Numrico
no seja especificado , o default substituir todas as
coorncias encontradas.
Retorno
Tipo
Caracter
Descrio
A funo UPSTRTRAN retorna uma nova string, com as ocorrncias
especificadas de cSearch trocadas para cReplace, conforme
parmetrizao.
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
xExpressao
Tipo
Descrio
Valor Advpl a ser convertido para utilizao em Query.
(Qualquer) Pode ser dos tipos "C" Caracter , "N" Numrico e "D"
Data.
Retorno
Tipo
Caracter
Descrio
Expresso a ser acrescentada na Query.
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.
VARINFO
Reviso: 10/12/2003
Abrangncia
Verso 7.10
Verso 8.11
LIB WEBEX
Sintaxe
VARINFO ( < cId > , < xVar > , [ nMargem ] , [ lHtml ] , [ lEcho ] ) --> cVarInfo
Parmetros
Argumento
cId
xVar
nMargem
lHtml
lEcho
Tipo
Descrio
cId corresponde a um nome atribudo varivel para
Caracter anlise. Internamente , apenas utilizado para prefixar o
retorno das informaes da VarInfo.
(Qualquer) Varivel de qualquer tipo a ser examinada
Corresponde margem esquerda inicial de espaos da
Numrico
String de retorno , multiplicado por 5. Default = 0
Identifica se a String de retorno ser montada em formato
Lgico
Html (.T. / Default ) ou ASCII (.F.)
Define se o Echo do retorno deve ser enviado ao console
Lgico
do Protheus Server , caso habilitado. ( Default = .T. )
Retorno
Tipo
Caracter
Descrio
String contendo o "Dump" da anlise da varivel. Caso lHtml seja .T. ,
retorna String em formato HTML . , seno retorna string ASCII com
quebras CRLF.
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
Caracter
Descrio
cHTMLInfo corresponde string HTML contendo as informaes da
requisio HTTP.
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 ,
Content-disposition , 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
-1]
HttpRCtDisp() -> C ( 0) []
SoapRAction() -> C ( 0) []
HttpOtherContent() -> C ( 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.ms-powerpoint, 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)]
-1]
HttpRCtDisp() -> C ( 0) []
SoapRAction() -> C ( 0) []
HttpOtherContent() -> C ( 0) []
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
LIB WEBEX
Verso 8.11
LIB WEBEX
Verso 8.11
Verso 8.11
LIB WEBEX
[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.
[APWEXERR_0025] Unknow
SIGAWEB Module [Y]
Reviso: 13/04/2004
Abrangncia
Verso 7.10
Verso 8.11
DW - Data WareHouse
BSC - Balanced ScoreCard
MAK - Modulo WEBEX Makira
GE - Gesto Educacional
GPR - Gesto de Pesquisa e Resultado
TCF - Terminal do Funcionario ( RH ONLINE )
PP - Portal PRotheus ( WebServices )
SAV - Sala de Aprendizagem Virtual
GAC - Gesto de Acervos
WPS - WebPrint & WebSpool
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
NIL
Tipo
Descrio
(NULO) Este ponto de entrada no recebe parmetros.
Retorno
Tipo
Descrio
lSucess corresponde o status de montagem de ambiente. Caso o ambiente
tenha sido montado com sucesso , o ponto de entrada deve retornar .T. ,
caso contrrio .F. . Uma vez retornado .F. , o Protheus ir eliminar esta
Working Thread da memria.
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
cFnLink
Tipo
Descrio
Funo chamada atravs do Link . Por exemplo , um link
Caracter no browse chamando http://localhost/w_teste.apw?Opc=03
, seria recebido neste parmetro a string "W_TESTE"
Retorno
Tipo
Caracter
Descrio
Caso retornada uma string em branco , a execuo da funo
originalmente chamada no link .apw prossegue normalmente. Caso
contrrio , a string retornada devolvida ao Browser solicitante , e a
funo chamada atravs do link no executada.
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
cFnLick
Tipo
Descrio
cFnLink corresponde funo Advpl que foi chamada e
Caracter processada imediatamente antes da chamada deste ponto
de entrada.
Retorno
Tipo
Caracter
Descrio
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
(NULO)
Descrio
O Retorno deste ponto de entrada no utilizado.
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
cSessionId
Tipo
Descrio
cSessionId corresponde string identificadora das sessions
Caracter
deste usurio.
Retorno
Tipo
(NULO)
Descrio
O retorno deste ponto de entrada deve ser 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
oErrorObj
cErrorLog
cErrorHtml
Tipo
Descrio
Objeto Objeto do Erro Advpl.
Caracter Mensagem ASCII que ser gravada no arquivo error.log
Caracter Mensagem Html original da rotina de tratamento de Erro
Retorno
Tipo
Caracter
Descrio
Retorno opcional. Caso retornado NIL ou string vazia , ser retornado ao
usuario o html de erro gerado pela rotina de tratamento standard. Caso o
ponto de entrada retorne uma String HTML , ela ser mostrada ao usurio
no ligar do Html gerado pela rotina de tratamento de erro.
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 .
Quando passamos parmetros de uma pgina para outra , via query string (URL) ,
devemos ter o cuidado de no deixar espao(s) em branco entre parmetros na
montagem da URL. Quando utilizamos o Internet Explorer os espaos em branco so
convertidos (*) automativamente para a sequncia String %20, porm quando
utilizamos o Netscape, quando colocamos um espao em branco em um parmetro , o
NetScape IGNORA tudo o que vem aps o primeiro espao em branco , perdendo assim
os demais parmetros.
Consideremos o exemplo abaixo :
<a href='/webinfo.apw?par1=123 &par2=345'>Link</a>
No Internet Explorer no haver problemas (*) , pois os espaos sero convertidos. No
Netscape , o parmetro par2 no ser colocado na URL... A forma correta deve ser
<a href='/webinfo.apw?par1=123%20%20%20&par2=345'>Link</a>
Quando a chamada gerada dinamicamente , devemos utilizar a funo escape() , para
converter caracteres reservados e espaos da stringlist para a notao Hexadecimal
(%HH) para serem enviados corretamente pela URL
<a href='webinfo.apw?par1=<%=Escape(cCodigo)%>&par2=345'>Link</a>
Observao : Vale a pena lembrar que a funo escape() deve ser aplicada apenas os
contedos da stringlist, pois se por exemplo for convertido pela escape() o caracter
separador de parmetros & ( e Comercial ), este caractere ser interpretado como
DADO e no como separador, comprometendo o funcionamento do link.
var val_combo =
document.exemplo.teste.options[document.exemplo.teste.selectedIndex].value;
// Mostra qual o usuario selecionou
alert(val_combo);
}
</SCRIPT>
Dicas teis
A tag <body> no suportada. na declarao dos frames. Jamais usem esta tag
em uma estrutura de frames.
da tela no permita mostrar esta quebra ( caso este no qual a tela ou frame ganha uma
barra de scroll no Web Browser ) .
Exemplo ( em arquivo .aph )
Em Html, para setar um refresh automatico da pgina em <n> segundos, utiliza-se uma
etiqueta meta , na seguinte sintaxe :
<meta HTTP-EQUIV='REFRESH' content='<n> [; URL=<url>']>
<n> Tempo em segundos
[<url>] Endereco a ser carregado. (opcional)
Em Javascript, para setar a execuo de uma funo automaticamente em um intervalo
de tempo, podemos utilizar a funo setTimeOut()
Funo setTimeout(<cFunc>,<nTime>)
Ambiente JavaScript
Parametros :
<cFunc> = Nome da funcao em Java a executar
<nTime> = intervalo de execucao (milisegundos)
Observao : Nas funes de Infra-Estrutura APWEBEX, foi criada a funo Advpl
RedirPage(), que monta o script de redirecionamento conforme os parmetros recebidos,
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
{
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>
<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()
web function ms03()
//Verifica se a Sesssion j foi iniciada.
if empty( HttpSession->Contador )
HttpSession->Contador := 1
//caso tenha sido, incrementa o contador.
else
HttpSession->Contador++
endif
return h_ms03()
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
HTTP
Reviso: 13/04/2004