<script adx="TestScript1">
print("<b>Texto gerado por um script servidor</b>");
</script>
</body></html>
O motor de scipting XTEND permite incluir as livrarias (ficheiro JavaScript) no código via a instrução #include 'pathLib'.
pathLib é o caminho de acesso do ficheiro livraria por relação ao directório raíz dos scripts servidor definido na ficha de parametrização do estabelecimento.
<script adx="TestScript2">
#include 'libs\xtdWsvc.js''
</script>
As livrarias de scripting estão disponíveis sob o diretório a seguir :
WebTools\TOOLS\XTEND\HTMRSRC\LIB\SCRIPTING
WebTools é o directório Tools de instalação do servidor X3WEB
xtdPrototype.js
Esta livraria é uma adaptação da livraria "prototype.js" versão 1.6.0.2 privada das funções de manipulação dos objetos gráficos (DOM)
Ela coloca à diposição do programador um conjunto de funções e classes muito úteis como a gestão de classes com herança, a gestão de quadro e HashMaps...
xtdWsvc.js
Propõe as funções utilitárias para chamada de web services XTEND e a manipulação dos dados JSON (parâmetros e resultado).
Para utilizar estas livrarias é suficiente de as copiar sob o directório dos scrcipts serveur do estabelecimento e de os incuir no código JavaScript via a instrução #include.
O princípio do scripting consiste a construir dinamicamente do texto HTML por execução de instruções JavaScript.
A função print() permite enviar o HTML versus o navegador.
Em realidade a função print permite preencher um buffer que será inserido, após execução do código, na página HTML no acondicionamento do script.
O objeto de "scope" global XTD_CTX dá acesso ao contexto do motor XTEND através de um conjunto de métodos.
//Informações sobre a conta utilizador
public boolean userLogged();
public String userCode();
public String userProfile();
public String userLang();
//Renvoie un block
//Le token block doit être inséré dans la page pour le déclarer
//sans forcément ajouter de fils <!adx="monBlock"><!adx="monBlock">
public IXtdJsTokenBlock getTokenBlock(String aBlockId);
//Reenvia uma entidade Ação ou Sessão
public IXtdJsActEntity getActionEntity(String aId);
//Reenvia o url do servlet corrente em modo segurança (https) ou não
public String getServletUrl(boolean aSecured);
//Reenvoia o url completo para aceder a uma página
public String getPageUrl(String aPage);
//Reenvoie a url completa para executar uma ligação dinâmica em método GET
public String getDlkUrl(String aDynLink);
//Reenvia o tag <a href='' onclick='xtdDoDlk(..)'> associado à ligação dinâmica
//O tag </a> deve ser acrescentada em scripting
public String getDlkAnchor(String aDynLink,String aClass);
//Reenvia o tag input <input type='button' onclick='xtdDoDlk(..)'>
//associado à uma ligação dinâmica
public String getDlkButton(String aDynLink,String aValue,String aClass);
//Reenvia as funções JS gerados por Xtend para o tratamento das
//ligações dinâmicas
public String getDlkOnclick(String aDynLink, boolean aIsInputTag);
public String getDlkOnSubmit(String aDynLink);
//Permite a tomada em conta em Javascript dos tags input de tipo checkbox
//utilizados na ação
//Xtend gera um input escondido para as checkboxes não assinaladas
public void checkBoxAdd(String aInputName);
public void checkBoxAdd(String aInputName,String aUncheckedValue);
Trata-se de um exemplo onde o sub-programa de LOGIN reenvia um campo "ESTABELECIMENTOS" que é guardado na sessão (informações da conta) e que contém uma lista de estabelecimentos autorizados para o utilizador.
A lista dos estabelecimemtos é reenviado sob a forma de uma query string de tipo Clé1=valeur&Clé2=valeur.
O script tem por objetivo de criar um tag select a partir dos dados do campo ESTABELECIMENTOS
Este género de operação não pode ser efetuada via um token e necessita o emprego de um script servidor.
Pode assim realizar a operação de descodificação via um script JavaScript mas não tem acesso ao contexto de dados da sessão XTEND.
Script
<div id="testscript">
<script adx="UserSites">
//Teste se o utilizador está assinado
if (XTD_CTX.userLogged())
{
//Livraria utiliários
#incluir 'libs\xtdWsvc.js'
//Lê o campo ESTABELECIMENTOS que contém a query string
//-> "site1=S1&site2=S2&site3=S3"
var wQs=new String(XTD_CTX.getField("SITES"));
//Analisa a String para criar um objecto JavaScript(ver prototype.js)
//-> {site1:"S1",site2:"S2",site3:"S3"}
var wObj=wQs.parseQuery();
//Objeto utilitário para constituir o HTML que será inserido na página
//-> Livraria xtdWsvc.js
var wHtml=new XTENDWSVC.classHTMLBuffer();
//A HTML é um tag seleto
wHtml.select(["value","SITES","class","xtendInput"]);
//Quadro dos valores (voir prototype.js)
var wValues=Object.values(wObj);
//Quadro das chaves (ver prototype.js)
var wKeys=Object.keys(wObj);
//Acréscimo das opções
for (i=0;i<wKeys.length;i++)
wHtml.option(wValues[i],wKeys[i]);
wHtml.endSelect();
//Escrita da resposta HTML
print(wHtml.html());
</script>
</div>
Resultado
Resultado com por valor do campo ESTABELECIMENTOS
Site Grenoble=FCYGRE&Site Paris=FCYPAR&Site Lyon=FCYLY&Site Rouen=FCYROU
<div id="testscript">
<select class="xtendInput" value="SITES">
<option value="FCYGRE">Site Grenoble</option>
<option value="FCYLY">Site Lyon</option>
<option value="FCYROU">Site Rouen</option>
<option value="FCYPAR">Site Paris</option>
</select>
</div>
A função XTD_CTX.getTokenBlock(BlockID) renvia uma interface IXtdJsTokenBlock que permite aceder aos métodos e propriedades de um token bloco inserido na página HTML.
O token block deve estar inserido na página para os declarar sem forçosamente acrescentar os filhos<!adx="BlockId"><!adx="BlockId">
public interface IXtdJsTokenBlock extends IXtdJsData
{
// Reenviea um iterador sobre as linhas do bloco
public IXtdJsDataIterator getLines();
}
A interface IXtdJsTokenBlock aponta sobre o bloco e permite de aceder aos campos do bloco.
A interface IXtdJsDataIterator permite efectuar uma iteração sobre as linhas de um bloco.
<Html><body>
<!--Declaração do bloco-->
<!adx="MyBlock"><!adx="MyBlock">
<!--Afixação das linhas do bloco-->
<script adx="TestScript">
var wBlock=XTD_CTX.getTokenBlock("MyBlock");
var wLines=wBlock.getLines();
print ("Nombre de page="+wBlock.getField("APAGENB")+"<br>");
print ("Número de linhas="+wBlock.getField("ABLKNBLINES")+"<br>");
while(wLines.hasNext()){
var wLine=wLines.next();
print("<tr>");
print("<td>"+wLine.getField("PRIX")+"</td>");
print("<td>"+wLine.getField("STOCK")+"</td>");
print("</tr>");
}
</script>
</body></html>
A função XTD_CTX.getActionEntity(EntityID) reenvia uma interface IXtdJsActEntity que permite aceder aos métodos e propriedades da entidade.
Apenas as entidades de tipo sessão ou ação são acessíveis diretamente (sem passar por um token bloco) porque elas são guardadas na sessão utilizador (persistantes).
As entidades de tipo Acesso dados não são acessíveis diretamente mas apenas através de um token bloco.
public interface IXtdJsActEntity
{
// Reenvia o código de entidade
public String getCode();
// Reenvoia um iterador sobre as entidades
public IXtdJsDataIterator<IXtdJsActEntityData> getIterator();
// Acrescenta uma entidade e reenvia a interface sobre esta entidade
// --> Falta em seguida acrescentar os campos
public IXtdJsActEntityData addData();
// Suprime a entidade de identificador aId
public IXtdJsActEntityData removeData(String aId);
// Reenvia a entidade de identificador aId
public IXtdJsActEntityData getData(String aId);
}
public interface IXtdJsActEntityData extends IXtdJsData
{
//Dado de uma entidade que acrescenta o método getID
//na interface standard IXtdJsData
public String getId();
}
A interface IXtdJsTokenBlock aponta sobre o bloco e permite de aceder aos campos do bloco.
A interface IXtdJsDataIterator permite efectuar uma iteração sobre as linhas de um bloco.
<Html><body>
<!--Declaração do bloco-->
<!adx="MyBlock"><!adx="MyBlock">
<!--Afixação das linhas do bloco-->
<script adx="TestScript">
var wEntities=XTD_CTX.getActionEntity("XTDLOGINV");
var wIterator=wEntities.getIterator();
print("Size="+wIterator.size() + " - Code="+ wEntities.getCode());
print("<table><br>");
while(wIterator.hasNext()){
var wLine=wIterator.next();
print("<tr>");
print("<td>"+wLine.getId()+"</td>");
print("<td>"+wLine.getField("INVADR1")+"</td>");
print("<td>"+wLine.getField("INVCITY")+"</td>");
print("</tr>");
}
print("</table>");
</script>
</body></html>
A interface IXtdJsDataIterator permite efectuar uma iteração sobre as linhas de um bloco ou entidades ação.
public interface IXtdJsDataIterator
{
// Reenvia o número de dados
public int size();
// Verdade se o iterador contém os dados
public boolean hasNext();
// Reenvia o dado corrente e incrementa
public IXtdJsData next();
// Reenvia o iterador ao formato JSON
public String toJSON();
}
var wEntities=XTD_CTX.getActionEntity("XTDLOGINV");
var wIterator=wEntities.getIterator();
while(wIterator.hasNext()){
var wLine=wIterator.next();
print("<tr>");
print("<td>"+wLine.getId()+"</td>");
print("<td>"+wLine.getField("INVADR1")+"</td>");
print("</tr>");
}
public interface IXtdJsDataIterator<ClassData extends IXtdJsData>
{
public boolean hasNext();
public ClassData next();
public String toJSON();
}
public interface IXtdJsData
{
public void removeField(String aFieldName);
public void setField(String aFieldName, String aValue);
public String getField(String aFieldName);
public String getField(String aFieldName, boolean aFormated);
public String getField(String aFieldName, String aFormat);
public String getMenuLabel(String aFieldName);
public String getFieldJSON(String aFieldName);
public String toJSON();
}
public interface IXtdJsTokenBlock extends IXtdJsData
{
public IXtdJsDataIterator getLines();
}
O interface IXtdJsData permite de aceder aos campos de um bloco ou de uma entidade.
public interface IXtdJsData
{
// Suprime o campo aFieldName
public void removeField(String aFieldName);
// Valoriza o campo aFieldName com o aValue
public void setField(String aFieldName, String aValue);
// Reenvia o valor X3 do campo aFieldName
public String getField(String aFieldName);
// Reenvia o valor formatado do campo aFieldName
public String getField(String aFieldName, boolean aFormated);
// Reenvia o valor do campo aFieldName formatado com aFormat
public String getField(String aFieldName, String aFormat);
// Reenvia a "label" de um campo MenuLocal aFieldName
public String getMenuLabel(String aFieldName);
// Reenvoie o campo aFieldName ao formato JSON
public String getFieldJSON(String aFieldName);
// Reenvia o bloco de dados ao formato AJSON
public String toJSON();
}
var wItems=XTD_CTX.getTokenBlock("BlkItems");
print(wItems.getField("PRIX")+"<br>");
print(wItems.getField("PRIX",true)+"<br>");
A interface IXtdJsWsvcCall permite chamar um web service X3 em scripting servidor
o web service deve estar previamente declarado como um interface XTEND.
Os métodos desta interface transmitem os dados JSON aos web services X3.
Os web serviices X3 aceitam os dois tipos de dados XML ou JSON para o parâmetro "data" mais o formato JSIN é muito mais fácil a manipular em Javascript que o formato XML porque corresponde à representação String dos objetos JavaScript (Objetos literais).
public interface IXtdJsWsvcCall
{
/*------------ Parâmetros ------------*/
// aInterface : o código de interface a chamar
// aJSONData : Dados JSON
// aFailOnX3Err : Verdade para gerar uma exceção se
// uma mensagem de erro está reenviada por X3
/*------------ Sub-programa ------------*/
// Reenvia os parâmetros standards PARCOD/PARVAL ara chamada de um sub-programa
public String[][] callSpgGetAXPAR();
// ------------------------------------------
// Chamada de um web service sub-programa
public IXtdAjaxResult callSpgRun(
String aInterface,
String aJSONData,
boolean aFailOnX3Err
) throws Exception;
/*------------ Objeto X3 ------------*/
// Método Create
public IXtdAjaxResult callObjCreate(
String aInterface,
String aJSONData,
boolean aFailOnX3Err
) throws Exception;
// ------------------------------------------
// Méthode Read
public IXtdAjaxResult callObjRead(
String aInterface,
String aQsKeys,
boolean aFailOnX3Err
)throws Exception;
// ------------------------------------------
// Método Update
public IXtdAjaxResult callObjUpdate(
String aInterface,
String aQsKeys,
String aJSONData,
boolean aFailOnX3Err
) throws Excepção;
// ------------------------------------------
// Método Apagar
public IXtdAjaxResult callObjDelete(
String aInterface,
String aQsKeys,
boolean aFailOnX3Err
)throws Exception;
// ------------------------------------------
// Outro método (aMethod) com uma chave como parâmetro
public IXtdAjaxResult callObjActionKey(
String aInterface,
String aMethod,
String aQsKeys,
boolean aFailOnX3Err
)throws Exception;
// ------------------------------------------
// Outro método (aMethod) com dados objeto XML como parâmetro
public IXtdAjaxResult callObjActionData(
String aInterface,
String aMethod,
String aJSONData,
boolean aFailOnX3Err
)throws Exceção;
// ------------------------------------------
//Chamada lista-esquerda
public IXtdAjaxResult callObjQuery(
String aInterface,
String aQsKeys,
boolean aFailOnX3Err
)throws Exception;
/*------------ Trace ------------*/
// Rasto XTEND acessível via o navegador
// Verdade se rasto ativado
public boolean traceOn();
// ------------------------------------------
// Ínício de um bloco de rasto
public void traceBeginStep(String aTrace);
// ------------------------------------------
// Rasto
public void traceWrite(String aTrace);
// ------------------------------------------
// Fim de um bloco de rasto
public void traceEndStep();
/*------------ Diversos ------------*/
// Reenvia a URL de acesso à web aplicação XTEND
//http://host:port/xtend - ouhttps://host:portssl/xtend
public String getWebApplicationUrl(boolean aSecure);
}
public interface IXtdAjaxResult
{
// ------------------------------------------
//Dados JSON reenviados pela web service
public String getResponseBody();
// ------------------------------------------
//Comprimento dos dados JSON
public int getResponseBodyLength();
// ------------------------------------------
//Verdade se mensagem X3
public boolean hasMessage();
// ------------------------------------------
//Verdade se mensagem erro X3
public boolean hasMsgErr();
// ------------------------------------------
//Verdade se mensagem warning X3
public boolean hasMsgWarn();
// ------------------------------------------
//Verdade se mensagem informação X3
public boolean hasMsgInfo();
// ------------------------------------------
//Lista das mensagens de erro X3
public String[] getMsgErrLst();
// ------------------------------------------
//Lista das mensagens warning X3
public String[] getMsgWarnLst();
// ------------------------------------------
//Lista das mensagens de informação X3
public String[] getMsgInfoLst();
}
Esta livraria propõe os utilitários para manipular :
Esta livraria utiliza a livraria xtdPrototype.js.
/*------------------ INCLUI-----------------------*/
//Sempre incluir a livraria xtdPrototype.js
#inclui "xtdPrototype.js"
/*------------------ OBJETOS JAVA/JAVASCRIPT -------------------*/
//Reenvia verdade se objeto aObj é um código de objecto JAVA
//Reenvia falso se é um objeto JavaScript
ObjetoxtdIsJava(aObj);
//-----------------------------------------------
//Permite converter um objecto Java ou de converter um objeto Java ou JavaScript en String
Object.xtdToString(aObj);
/*------------------ PARÂMETROS ------------------*/
//Reenvia os parãmetros para chamada de um web service
//Classe XTENDWSVC.classParam
//aOptionsJson sont les options JSON (Classe XTENDWSVC.classJsonOpt)
XTENDWSVC.newParam(aOptionsJson);
//-----------------------------------------------
//Reenvia os parãmetros para chamada de um web service OBJETO X3
//Classe XTENDWSVC.classParamObject
//->aTimeStampX3 est une String qui contient le TimeStamp de l'ojet X3
//->aTimeStampX3 ="" se não TimeStamp
XTENDWSVC.newParamXtdObject(aTimeStampX3,aOptionsJson);
//-----------------------------------------------
//Reenvia os parâmetros para a chamada de um web service Sub-Programa
//Classe XTENDWSVC.classParamXtdSpg
XTENDWSVC.newParamXtdSpg(aOptionsJson);
//-----------------------------------------------
//Reenvia os parãmetros para chamada de um web service Sub-Programa
//de tipo "Acesso dados" Acrescenta os parâmetros específicos
//Classe XTENDWSVC.classParamXtdSpgAccess
//->aNbLines é o nº de linhas a reenviar
//->aStartAt é a fila da linha de partida (paginação)
XTENDWSVC.newParamXtdSpgAccess(aNbLines,aStartAt,aOptionsJson);
/*------------------ RESULTADO ------------------*/
//Avalia a cadeia de caracteres aJSON resultado de um web service X3
//Reenvia um objeto JavaScript
XTENDWSVC.evalResult(aJSON);
//-----------------------------------------------
//Avalia o resultado de um sub-programa
//Acrescenta os métodos específico ao tipo de resultado
//Métodos XTENDWSVC.methodsResultSpg
XTENDWSVC.evalResultSpg(aJSON);
//-----------------------------------------------
//Avalia o resultado de um sub-programa "'Acesso dados"'
//Acrescenta os métodos especícfico ao tipo de resultado
//Métodos XTENDWSVC.methodsResultSpg
XTENDWSVC.evalResultSpgAccess(aJSON);
//-----------------------------------------------
//Avalia o resultado de um web service Objeto
//Acrescenta os métodos específico ao tipo de resultado
//Métodos XTENDWSVC.methodsResultObject
XTENDWSVC.evalResultObject(aJSON);
/*------------------ CLASSES PARÂMETRO -------------------*/
XTENDWSVC.classParam=Class.create({
//Reenvia as opções JSON
opções:function();
//Acrescenta o parâmetro aCode com o valor aValue
add:function(aCode,aValue);
});
//-----------------------------------------------
XTENDWSVC.classParamXtdSpg=Class.create(XTENDWSVC.classParam,{
//Acrescenta um parâmetro aCode/aValue ao grupo AXPAR
addAXPAR:function(aCode,aValue);
});
/*------------------ OBJET RESULTAT -------------------*/
//Resultado chamada sub-programa
methodsResultSpg:{
//Reenvia o valor String do parâmetro aCode do grupo AXPAR
AXPAR:function(aCode);
//Reenvia o valor Integer do parâmetro aCode do grupo AXPAR
//aDefValue é o valor se parâmetro não encontrado
AXPARInt:function(aCode,aDefValue);
}
//-----------------------------------------------
//Resultado chamada sub-programa de tipo "Acesso dados"
//Os métodos permitem gerar a paginação
methodsResultSpgAccess:{
//Número de registos pedidos
askedRecords:function();
//Número de registos total
totalRecords:function();
//Número de registos reenviados
returnedRecords:function();
//Fila de partida
startRank:function();
//Verdade se existem registos seguintes
hasNext:function();
}
//-----------------------------------------------
//Resultado chamada sub-programa de tipo "Objeto X3"
//Os métodos permitem aceder às informações de última modificação
methodsResultObject:{
//Reenvia o valor do campo aField para o grupo ADXTEC
adxADXTEC:function(aField);
//Reenvia o TimeStamp
adxTimeStamp:function();
//Reenvia o último código utilizador X3 que foi modificado o objeto
adxUser:function();
}
XTENDWSVC.classJsonOpt=Class.create({
//Sem grupos de publicação em retorno
//Cada parâmetro é um quadro de String
noGroups:function();
//Sem linhas no quadro com dim>1
//Cada parâmetro é um quadro de String
noRows:function();
//Sem labels para os menus locais
noLabels:function();
//Os campos clob não são reenviados
noClobs:function();
//Exclui os grupos contidos na aValue
//aValue é uma String ou Array de string
excludeGrp:function(aValue);
//Inclui os grupos contidos no aValue
includeGrp:function(aValue);
//Exclui os campos contidos em aValue
//aValue é uma String ou Array de string
excludeFld:function(aValue);
//Inclui os campos contidos em aValue
includeFld:function(aValue);
});
Exemplo:
// Opções JSON
var wJsonOpt=new XTENDWSVC.classJsonOpt().noRoups().noRows().excludeGrp(["GRP1","GRP2");
// Criaçãon parâmetro chamada sub-programa
var wParams=XTENDWSVC.newParamXtdSpg();
wParams.add("AXUSERCODE",wInput.P1);
wParams.add("AXPWD",wInput.P2);
wParams.options().noGroups().includeGrp(["AXLOG_X3"]
A livraria inclui uma classe XTENDWSVC.classHTMLBuffer que permite construir uma resposta HTML a enviar versus o cliente.
Exemplo de chamada de um sub-programa
Este exemplo chamada interface AXTDLOGIN (sub-programa de login) :
Trata-se de um exemplo sabendo que é muito mais simples no caso de utilizar os tokens.
#inclui 'libs\xtdWsvc.js'
function callXTDLogin(){
//Parâmetros user/password
var wInput={P1:'dis001',P2:'adonix'};
//Rasto ativado ?
var wTraceOn=XTD_CTX.traceOn();
if(wTraceOn){
//Início de bloco de rasto dos parãmetros
XTD_CTX.traceBeginStep("Build WSVC params");
XTD_CTX.traceWrite("P1="+wInput.P1+ " - P2="+wInput.P2);
}
//Criação objeto parâmetro sub-programa
var wParams=XTENDWSVC.newParamXtdSpg();
//Valorização dos parâmetros
//AXUSERCODE et APWD são os nomes dos parâmetros utilizados
//para transmitir o user/password
wParams.add("AXUSERCODE",wInput.P1);
wParams.add("AXPWD",wInput.P2);
//Acréscimo das opções JSON para chamada do sub-programa
wParams.options().noGroups().includeGrp(["AXLOG_X3"]);
// Parâmetros JSON passados ao web services (como os parâmetros XML)
wParams=Object.toJSON(wParams);
if(wTraceOn){
//Fim do bloco de rasto dos parâmetros
XTD_CTX.traceWrite(wParams);
XTD_CTX.traceEndStep();
}
//Início do bloco de rasto de chamada
if(wTraceOn)XTD_CTX.traceBeginStep("Call spg");
//Chamada do sub-programa
//->falso para tratar os erros X3 por programa
var wResult=XTD_CTX.callSpgRun("AXTDLOGIN",wParams,false);
if (wResult.hasMsgErr()){
//Tratamento dos erros
if(wTraceOn) XTD_CTX.traceWrite("Error message");
var wLst=$A(wResult.getMsgErrLst());
print("<span class='intUserMsg'>"+wLst.join('\n')+"</span>");
}else{
//Tratamento do resultado
//Avaliação dos dados JSON
var wJSON=XTENDWSVC.evalResultSpg(wResult.getResponseBody());
//Rasto
if(wTraceOn) XTD_CTX.traceWrite(Object.toJSON(wJSON));
//Construção de resposta HTML
//->Quadro dos códigos de acesso aos diferentes dossiers X3
var wHtml=new XTENDWSVC.classHTMLBuffer;
wHtml.table(["border","0","class","intLine"]);
wHtml.trFill(["SolutionX3","DossierX3","LangX3","UserX3"],
["class","intRowTitle"]);
if (wJSON.AX3SOL){
var wLen=wJSON.AX3SOL.length;
for(var i=0;i<wLen;i++)
//Gestão dos estilos por linha alternada
wHtml.trFill([wJSON.AX3SOL[i], wJSON.AX3FLDR[i], wJSON.AX3LANG[i],
wJSON.AX3USER[i]],["class",i%2==0?"intEvenLine":"intOddLine"]);
wHtml.endTable();
}
print(wHtml.html());
}
if(wTraceOn) XTD_CTX.traceEndStep();
}
}
O interface IXtdAjaxScriptContext está disponível via objeto XTD_CTX para os scripts que são chamados por pedidos AJAX.
Este interface permite :
A instrução print escreve os dados num buffer caracteres que serão reenviados versus o cliente com o ContentType indicado por método setHttpContenType.
// Herança de interface de chamada aos web services IXtdJsWsvcCall
public interface IXtdAjaxScriptContext extends IXtdJsWsvcCall
{
//Contenu {{body}} ao formato TEXTE do pedido HTTP
public String getHttpBody();
//Array JSON que contém o quadro dos parâmetros (chave/valor) do pedido
//Útil se o formato está application/x-www-form-urlencoded
public String getHttpParams();
//Atualizar o ContentTYpe da resposta
public void setHttpContenType(String aStr);
// Login utilização
public boolean userLogged();
public String userCode();
public String userProfile();
public String userLang();
// Acesso aos campos da sessão
public Object getSessField(String aFieldName);
public object getSessField(String aFieldName, boolean aFormated);
public void setSessField(String aFieldName, String aValue);
// Reenvia os dados utilizador
public IXtdJsData getUserInfo();
// Reenvia as variáveis utilizadores
public IXtdJsData getUserVariables();
// Reenvia uma entidade ação
public IXtdJsActEntity getActionEntity(String aEntityCode, boolean aCreate);
// Suprime uma entidade ação
public void removeActionEntity(String aEntityCode);
// Gestão das mensagens para resposta
void addMsgErr(String aMsg);
void addMsgWarn(String aMsg);
void addMsgInfo(String aMsg);
}