Histórico da Página
O SmartClient Desktop é uma aplicação C++ monolítica (independente) e apresenta caracteristicas diferentes em relação ao WebApp, que , enquanto o WebApp é executado a partir de um navegadorá partir dos navegadores.
Os navegadores acabam impondo algumas possuem características e medidas de segurança que podem trazer mudanças de comportamento ao WebApp , por consequencia, ao durante o uso do ERP, que descrevemos neste documento para apoiar durante sua migração.este documento descreve essas características, para apoia-los durante a transição.
🚨 Um bom exemplo é o 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?
...
Neste link você terá acesso às informações de download, configuração e notas de release do WebApp:
Configurando a Porta Multiprotocolo
...
A porta multiprotocolo é um facilitador, criando rotas para ferramentas como o WebApp, WebMonitor, Rest e outras.
A documentação abaixo é importante para sua correta configuração:
- Application Server - Porta Multiprotocolo
- Porta Multiprotocolo - Geração de Certificado
- Porta Multiprotocolo - Instalação de Certificado
Ao utilizar o TWebEngine (iframe)
...
:
Não é possível executar o método navigate para a página https://www.google.com/
...
A grande maioria dos sitesites, incluido do incluíndo o google, impede seu uso através de um iframe por questões de segurança, não existe contorno para essa questão, porem pode ser utilizada a função ShellExecute para exibir a página em um navegador apartado do WebAppsendo apresentado o seguinte erro no console de seu navegador:
chromewebdata/:1 Refused to display 'https://www.google.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
// 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 ) |
Ao utilizar o TWebEngine (iframe)
...
:
Não é possível executar o método navigate para um arquivo local, exemplo: file:///dir/arquivo
...
sta 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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
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 escrito para Linux, ao utilizar em Windows,
// basta mudar o caminho para o arquivo, ex: "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.
Protocolo | Host name / IP | Porta | Rota |
---|---|---|---|
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
...
Informações |
---|
Para uso das rotinas padrão, como cadastros e relatórios, não existe impedimento no uso do ERP sem a utilização do WebAgent. |
O navegador não permite que você acesse arquivos locais, ou aplicações instaladas em sua estação de trabalho, mais uma vez, por questões de segurança.
Isso implica no bloqueio de funções importantes ao ERP, como por exemplo, a FCREATE(), para criar um arquivo, ou mesmo a integração com o Excel.
O WebAgent é um serviço websocket, seguro, que permite esses acessos bloqueados pelos navegadores, mais informações no link: 2. WebApp - WebAgent
WebApp em dispositivos móveis
...
O WebApp é homologado para Tablets, sem qualquer configuração adicional.
🚨 É possível também acessar o 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
Passagem de parâmetros na abertura do ERP através do Navegador
...
O SmartClient desktop Desktop permite a passagem de parâmetros na abertura do ERPquando executado via linha de comando, o WebApp também, utilizando, por exemplo, permite a mesma ação, passando os parâmetros diretamente na URL de seu navegador o link, abaixo um exemplo:
http://10.173.9.215:5011?E=ambiente&P=SIGAFAT&A=param1&A=param2&A=param3
Mais informações no link: Parâmetros de Linha do SmartClient HTML
Passagem de parâmetros na abertura do ERP através do WebAgent (parâmetro launch)
...
É possivel possível também executar o WebAgent passando parâmetros via linha de aberturacomando, uma caracteristica 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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
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
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
...
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.
Mais informações nos links:
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.
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
Browser | Nú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 bloquados pelos navegadoresproprietárias, impedindo seu uso através do WebAppda 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 atalho | Descrição | |
---|---|---|
Windows/Linux | Mac | |
Ctrl+T | ⌘+t | Abrir uma nova guia do navegador. |
Ctrl+Shift+T | ⌘+Shift+t | Reabrir guias fechadas anteriormente na ordem em que foram fechadas. |
Ctrl+N | ⌘+n | Abrir uma nova janela do navegador. |
Ctrl+Shift+N | ⌘+Shift+n | Abrir 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 esquerda | Acessar a guia aberta anterior |
Alt+Home | Abrir a página inicial na guia atual | |
Ctrl+W ou Ctrl+F4 | ⌘+w | Fechar a guia atual do navegador. |
Ctrl+Shift+W ou Alt+F4 | ⌘+Shift+w | Fechar a janela do navegador. |
Alt+Espaço+n | ⌘+m | Minimizar 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.
Mais informações no link: WebEngine+InactiveTimeout
Evolução do WebApp com a adoção de Web Compnents
A adoção da biblioteca LitElement permitiu uma grande evolução da camada de interface do WebApp.
...
WebApp em
...
O WebApp é homolodado para Tablets, é possivel fazer sua utilização a partir de um celular, porém a experiência de navegação será prejudica, motivo pelo qual não é homologado.
Mais informações no link: SmartClient HTML (WebApp) - Navegadores homologados
...
telas sensíveis ao toque
...
É possivel possível utilizar o WebApp em telas sensiveis sensíveis ao toque, seja um notebook ou um tablet, mas existem algumas diferenças de comportamento para facilitar seu uso.
...
Mais informações no link: Telas de toque Toque (touchscreenTouchscreen) / mobile Mobile - mudança Mudança de comportamentoComportamento
Templatedocumentos |
---|