Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Os navegadores possuem características e medidas de segurança que podem trazer mudanças de comportamento ao WebApp durante o uso do ERP, este documento descreve essas características, para apoia-los durante a transição.

🚨 Um bom exemplo é o TWebEngine TWebEngine, no SmartClient Desktop este componente é um Chromium embutido na aplicação, enquanto no WebApp, ele é um iframe. 🚨

Onde encontro as informações consolidadas sobre o WebApp?

...

Caso seja imprescindível para sua aplicação abrir um site com este bloqueio, pode utilizar a função ShellExecute, mais informações no link: TWebEngine:Navigate

Exemplo:

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
// Exemplo de uso para Windows
ShellExecute( "open", "http://www.google.com.br", "", "", 1 )
 
// Exemplo de uso para Linux
shellExecute("Browser", "/usr/bin/firefox", "http://www.google.com.br", "/", 1 ) 

...

Esta também é uma medida de segurança dos navegadores, como contorno, recomendamos copiar o arquivo em questão para uma pasta temporária no Servidor através da função CpyF2Web, acessando este arquivo na sequencia, mais informações no link: TWebEngine:Navigate

Exemplo:

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
DEFINE DIALOG oDlg TITLE "Contorno para file://" FROM 0,0 TO 800,1200 PIXEL

  // Copia o arquivo da Estacao para o Servidor, retornando seu caminho
  // Este exemplo foi esritoescrito para Linux, ao utilizar em Windows,
  //   basta mudar o caminho para o arquivo, paraex: "c:/dir/arquivo" 
  cFilePath := CpyF2Web("l:/home/mansano/totvs/file.txt", .T., .F., .F., .F.)
  
  oWebEngine := TWebEngine():New(oDlg, 0, 0, 100, 100,,)
  oWebEngine:Align := CONTROL_ALIGN_ALLCLIENT

  // Executa o Navigate para o arquivo temporario no Servidor
  oWebEngine:navigate(cFilePath)

ACTIVATE DIALOG oDlg CENTERED 

Ao utilizar o TWebEngine (iframe):
Comportamento do InactiveTimeout ao digitar/navegar em uma aplicação HTML(POUI)

...

O tempo de inatividade (inactive timeout) é definido pelo administrador do ERP para garantir, que caso uma conexão fique inativa por N minutos, ela seja automáticamente encerrada.

Para o WebApp avaliar se uma rotina está realmente em uso, enquanto o usuário digita/navega em uma aplicação HTML carregada em um iframe, é necessário executar um conjunto de scripts.

Porém, por questões de segurança, um navegador só permite a execução desses scripts, quando a página carregada em um iframe possuir o mesmo protocolo+host-name+porta da página principal.

Exemplo:

Se a página principal for a http://www.totvs.com:8080/index.html

Seria possível usar um iframe apontando para http://www.totvs.com:8080/app1.php

Mas seria bloqueada a execução desses scripts, no caso de utilizar a página https://www.totvs.com:8080/pag1.html, pois o protocolo foi alterado de HTTP para HTTPS.

Neste caso, esgotado o prazo do inactive timeout, mesmo que o usuário estivesse atualizando dados no iframe, sua sessão seria interrompida.

Mais informações no link: WebEngine+InactiveTimeout


🚨 O mecanismo da Porta Multiprotocolo pode ajudar, garantindo que possam publicar sub-rotinas, respeitando o mesmo protocolo+host-name+porta, mudando apenas a rota para esta sub-rotina.

Exemplo:

Neste exemplo temos dois serviços (sub-rotinas) utilizando o mesmo caminho, cada um em sua respectiva rota, o primeiro o WebApp, o segundo o WebMonitor.

ProtocoloHost name / IPPortaRota
http://10.173.1.12:8081/webapp
http://10.173.1.12:8081/webmonitor

A importância do WebAgent para a integração com a estação de trabalho

...

O WebApp é homologado para Tablets, sem qualquer configuração adicional.

🚨 É possível também acessar o é possível navegar pelo ERP a partir de um celular, porém a experiência de navegação será muito prejudicada, motivo pelo qual não é homologado.

Mais informações no link: SmartClient HTML (WebApp) - Navegadores homologados

🚨 O WebAgent não é homologado para dispositivos móveis, devido à diversas limitações de segurança impostas pelo Android/IOS.

Cadastro de Clientes sendo executado em um Galaxy S a partir do Samsung Dex

Image Added

Passagem de parâmetros na abertura do ERP através do Navegador

...

O SmartClient Desktop permite a passagem de parâmetros quando executado em via linha de comando, o WebApp permite a mesma ação, passando os parâmetros diretamente na URL de seu navegador, abaixo um exemplo:

...

É possível também executar o WebAgent passando parâmetros via linha de aberturacomando, uma característica importante caso queira automatizar algum processo customizado, sem precisar utilizar seu navegador para issopor exemplo.

Ao utilizar o parâmetro launch, o navegador será iniciado sem abas, passando a sensação ao usuário de estar rodando uma aplicação convencional.

Exemplo:

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
C:\Users\Administrator\AppData\Local\Programs\web-agent\web-agent.exe launch "http://10.173.9.215:5011?E=ambiente&P=SIGAFAT&A=param1&A=param2&A=param3" --browser="C:\Program Files\Google\Chrome\Application\chrome.exe" 

Mais informações no link: 2. WebApp - WebAgent#2.WebAppWebAgent-Launch

Image Added

Execução de

...

rotinas sem interface através do WebAgent (parâmetro launch com --headless)

...

Informações

O parâmetro --headless está disponível a partir da versão 1.0.9 do WebAgent.

Existem algumas rotinas de processamento que não necessitam de interface (tela), é possivel executar essas rotinas utilizando em conjunto os parâmetros launch e --headless.

...

Mais informações no link: 2. WebApp - WebAgent#2.WebAppWebAgent-Headless

Image Added

Diferenças na aplicação de CSS (SetCSS) entre o WebApp e o SmartClient Desktop

...

Dadas as diferenças de tecnologia entre os dois Clients, a renderiação de estilo (CSS) também sofre pode apresentar diferenças de comportamento.

No ERP essas diferenças são tratadas pelas Squads responsaveis pelo pelos produtos, e caso sua empresa possua possua customizações que utilizam CSS, podem ser necessários pequenos ajustes caso comece a utilizar o WebApp.

...

Limite de conexões por browser

...

Todos os browsers no Os navegadores atuais de mercado possuem um limite máximo de conexões ( paralelas ) por domínio, para evitar ataques como Denial of Service.

No no caso do ERP, não serão possiveis mais novas conexões com o Servidor de Aplicação quando este limite for atingido pelo mesmo navegadoratingido.

Caso esteja utilizando no Chrome, por exemplo, o SIGAMDI, o Menu Principal irá consumir uma conexão com o domínio (Servidor), desta forma, você poderá executar (no mesmo navegador), mais 5 rotinas simultâneas do ERP,  chegando neste limite, não serão permitidas aberturas de novas rotinas.

🚨 Abrir uma sessão deste mesmo navegador em modo anônimo/privado não irá permitir novas conexões, porém, poderá utilizar um segundo navegador, respeitando seu novo limite de conexões.

Mais informações no link: Limite de conexões por browser

BrowserNúmero de conexões simultâneas
Firefox®6
Chrome™6
Safari®6
Opera®6
Edge®6
Yandex®5
iOS®6
Android™6

Teclas de atalho bloqueadas pelos navegadores

...

Existe Os navegadores possuem um conjunto de teclas bloqueadas pelos navegadoresproprietárias, impedindo seu uso através da função SetKey no WebApp.

🚨 Caso possua alguma customização que utiliza esses conjuntos de teclas, será necessário ajustar sua rotina.

Mais informações no link: SetKey no Webapp

Teclas de atalhoDescrição
Windows/LinuxMac
Ctrl+T⌘+tAbrir uma nova guia do navegador.
Ctrl+Shift+T ⌘+Shift+tReabrir guias fechadas anteriormente na ordem em que foram fechadas.
Ctrl+N⌘+nAbrir uma nova janela do navegador.
Ctrl+Shift+N⌘+Shift+nAbrir uma nova janela de navegação anônima.

Ctrl+Tab ou Ctrl+PgDn

⌘+Option+seta para a direita

Navegar entre as abas do navegador.

Ctrl+Shift+Tab ou Ctrl+PgUp

⌘+Option+seta para a esquerdaAcessar a guia aberta anterior
Alt+Home
Abrir a página inicial na guia atual
Ctrl+W ou Ctrl+F4⌘+wFechar a guia atual do navegador.
Ctrl+Shift+W ou Alt+F4⌘+Shift+wFechar a janela do navegador.
Alt+Espaço+n⌘+mMinimizar a janela atual
Alt+Espaço+x

Maximizar a janela atual

InactiveTimeout ao utilizar uma aplicação HTML através do componente TWebEngine

Para o WebApp confirmar se o usuário ainda esta utilizando o ERP, enquanto digita/navega em uma aplicação HTML carregada em um iframe, impedindo que o inactive timeout derrube esta sessão, precisamos executar um conjunto de scripts.

Porém, um iframe só permite a execução de scripts quando a página carregada nele possui o mesmo protocolo+host-name+porta da página onde se encontra este iframe.

Exemplo:

Se a página "mãe" é a http://www.totvs.com:8080/index.html

Seria possivel usar um iframe apontando para http://www.totvs.com:8080/app1.php

Mas seria bloqueada a execução de scripts no caso de utilizar a página https://www.totvs.com:8080/pag1.html, pois o protocolo foi alterado de HTTP para HTTPS.

Neste caso, esgotado o prazo do inactive timeout, mesmo que o usuário estivesse atualizando dados no iframe, sua sessão seria interrompida.

Mais informações no link: WebEngine+InactiveTimeout

Evolução do WebApp com a adoção de Web Components

A adoção da biblioteca LitElement permitiu uma grande evolução da camada de interface do WebApp.

...

WebApp em telas sensíveis ao toque

...