You are on page 1of 8

Pessoal, seguem algumas dicas de um teste que realizamos, para quem quer

comear a trabalhar com ADVPL ASP.



Primeiramente vale a pena ler e entender um pouco sobre a diferena entre as
extenses .APL e .APW, que se encontram disponveis no portal TDN:
http://tdn.totvs.com.br/pages/viewpage.action?pageId=6064073
http://tdn.totvs.com.br/pages/viewpage.action?pageId=6064074


Entendendo a diferena bsica entre os dois tipos, optamos por testar arquivos
com extenso .APW, que apresentam ganho de performance.
Primeiramente devemos configurar o servidor do Protheus para atender as
requisies deste tipo de pgina. Seguem as diretivas inseridas no
totvsappserver.ini:
[HTTP]
ENABLE=1
PATH=C:\Filipe\Protheus_Data\web\
PORT=8080
ENVIRONMENT=P10_LOCAL
UPLOADPATH=\Protheus_Data\web\
RESPONSEJOB=ERP_APWEBEX

[ERP_APWEBEX]
type=WEBEX
onstart=STARTWEBEX
onconnect=CONNECTWEBEX
Environment=P10_LOCAL
Instances=1,3
SigaWeb=MAK

Mais detalhes podem ser encontrados em:
http://tdn.totvs.com/home#21044

Depois, necessrio compilar os pontos de entrada que efetivamente vo
responder s requisies Web vindas do JOB.
Seguem os rdmakes utilizados:

#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOTVS.CH"
#INCLUDE "TBICONN.CH"

/*
==============================================================
======================
Exemplo de Arquivo de Lib de Projeto APWEBEX , utilizando os pontos de entrada
da lib para preparao de ambiente , reset de ambiente e tratamento de erro
utilizando APWEBEX em conjunto com o ERP Microsiga
==============================================================
====================== */

/* ----------------------------------------------------------------------------
Ponto de Entrada StartWebEx( NIL ) => .T. ou .F.

Ponto de entrada executado na inicializao de cada Working Thread ( ONSTART )
a responsvel por preparar o ambiente para atender s requisies WEB de links .apw
No recebe parmetro algum da lib , e deve retornar .T. caso tenha inicialziado com
sucesso
ou .F. em caso de falha de inicializao .
---------------------------------------------------------------------------- */

User Function StartWebEx()

// Prepara o Ambiente ERP

PREPARE ENVIRONMENT ;
EMPRESA '99' ;
FILIAL '01' ;
TABLES 'SA1';

Return .T.

#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBEX.CH"

/* -------------------------------------------------------------------------------
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 := ''

If Type("cFnName") <> "U"
conout('Fim de execuo de: '+cFnName)
EndIf

Return cHtmlConn

#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBEX.CH"

/* -------------------------------------------------------------------------------
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

#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBEX.CH"

/* -------------------------------------------------------------------------------
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

#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBEX.CH"

/* -------------------------------------------------------------------------------
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('Executando: '+cFnName)
Return cHtmlConn

#INCLUDE "PROTHEUS.CH"
#INCLUDE "APWEBEX.CH"

/* ----------------------------------------------------------------------------
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 += '<br>'
cCustomHtml += 'Ocorreu um erro inesperado no <br>'
cCustomHtml += 'processamento desta pgina. O Administrador do sistema ser
notificado desta <br>'
cCustomHtml += 'ocorrncia . Recomendamos fortemente que esta janela do navegador
seja <br>'
cCustomHtml += 'fechada, e uma nova janela seja aberta para retornar navegao do
site. <br>'
cCustomHtml += '<br>'
cCustomHtml += cErrorLog

Return cCustomHtml

Agora devemos criar o arquivo que poder acessar as chamadas aos Alias
virtuais.
No teste efetuado, foi utilizado o Alias virtual HTTPHeadIn para acessar o
contedo do parmetro REMOTE_ADDR que retorna o IP do usurio que
estiver acessando a pgina.
Abaixo segue o rdmake criado e salvo com a extenso .APH


Seu IP : <%=HttpHeadIn->REMOTE_ADDR%>


Arquivo: tgetip.aph
Chamada no navegador: http://localhost:8080/h_tgetip.apw

Mais informaes e detalhes sobre todo o processo envolvido podem ser
obtidos em:
http://tdn.totvs.com.br/pages/viewpage.action?pageId=6063975

Espero que tenha sido til.
Abraos!

You might also like