apostila webspeed

Upload: madmau

Post on 05-Jul-2018

384 views

Category:

Documents


34 download

TRANSCRIPT

  • 8/15/2019 Apostila WebSpeed

    1/166

    WEBSPEED APPLICATION DEVELOPMENT

  • 8/15/2019 Apostila WebSpeed

    2/166

     Índice 

     Í  Í nnd d i i c c ee 

    Prefácio V 

    OBJETIVO

     ................................................................................................................................... V 

    TIPOGRAFIA ................................................................................................................................ V 

    OBSERVAÇÕES EM SINTAXES ..................................................................................................... VI REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................................ VIII 

    1.  Introdução 9 

    2.  Ferramentas do WebSpeed 10 

    2.1.  APPBUILDER ..................................................................................................................... 10 2.1.1.  Desenvolvimento Gráfico e Procedural .......................................................... 10  2.1.2.  SmartDataObjects ........................................................................................... 10  2.1.3.  Templates e Wizards ...................................................................................... 10  2.1.4.  Editores de Texto ............................................................................................ 11 

    2.2.  EXECUTANDO O WEBSPEED NO APPBUILDER .................................................................. 11 2.2.1.

     

    Configuração do WebSpeed ........................................................................... 11 

    2.2.2.  Identificando o Browser Padrão e o Broker do WebSpeed ............................ 12  2.2.3.  Setando o Modo de Desenvolvimento ............................................................ 13 

    2.3.  WEBTOOLS – FERRAMENTAS EM AMBIENTE WEB ........................................................... 14 2.4.  OUTROS COMPONENTES DO WEBSPEED ......................................................................... 23 2.5.   ARQUIVOS FONTE DO WEBSPEED ................................................................................... 24 

    3.  Arquitetura do WebSpeed 25 

    3.1.  COMPONENTES DO WEBSPEED ...................................................................................... 25 3.1.1.  Distribuição dos Componentes no WebSpeed ............................................... 25  3.1.2.  Produtos do WebSpeed Transaction Server .................................................. 26  

    3.2.  GERENCIAMENTO DE REQUISIÇÕES PELO WEBSPEED ...................................................... 26 

    4. 

    Exemplos de Objetos WEB 30 

    4.1.  TIPOS DE OBJETOS WEB ............................................................................................... 30 4.1.1.  Objeto HTML Padrão ...................................................................................... 30  4.1.2.  Embedded SpeedScript .................................................................................. 30  4.1.3.  CGI Wrapper ................................................................................................... 31 4.1.4.  HTML Mapeados ............................................................................................. 31 4.1.5.  Critério de Uso ................................................................................................ 31 

    4.2.  EXEMPLOS DE OBJETOS WEB ........................................................................................ 32 4.2.1.  URL’s para o Objeto WEB e PROPATH  ......................................................... 32  

    4.3.  EXEMPLOS DE EMBEDDED SPEEDSCRIPT ........................................................................ 32 4.3.1.  QUERY Simples .............................................................................................. 32  4.3.2.  Gerenciando a Entrada de Dados .................................................................. 34 

    4.4.  CGI WRAPPER ............................................................................................................... 37 4.5.

     HTML M APPING ............................................................................................................. 39

     

    4.5.1.  HTML Mapping Simples .................................................................................. 39 4.5.2.  HTML Mapping e SDO .................................................................................... 39 

    5.  SpeedScript 41 

    5.1.  SIMILARIDADE - SPEEDSCRIPT E 4GL PROGRESS ............................................................ 41 5.1.1.  Similaridade .................................................................................................... 41 5.1.2.  Diferenças ....................................................................................................... 41 

    5.2.  SINTAXES E ELEMENTOS DO SPEEDSCRIPT ..................................................................... 42 5.2.1.  Executando Procedures e Objetos WEB ........................................................ 44 5.2.2.  Blocos e Contextos ......................................................................................... 45  5.2.3.  Contexto do Bloco e Escopo ........................................................................... 45  5.2.4.  Tempo de Compilação X Tempo de Execução .............................................. 46  

    5.3. 

    PREPROCESSADORES DO WEBSPEED ............................................................................. 47 

    5.4.   API’S DO WEBSPEED ..................................................................................................... 47 

  • 8/15/2019 Apostila WebSpeed

    3/166

     Índice 

    5.4.1.  Gerenciamento de Mensagens ....................................................................... 47  5.4.2.  Passando Informações entre Requisições WEB ............................................ 48  5.4.3.  Troca Geral de Informação ............................................................................. 50  5.4.4.  Gerenciamento de Datas e Informação de Tempo ......................................... 51 

    5.4.5. 

    Gerando Cabeçalhos da Página WEB ............................................................ 51 

    5.4.6.  Checando Opções de Configurações ............................................................. 52  

    5.5.  EMBEDDED SPEEDSCRIPT .............................................................................................. 52 5.6.  COMO COLOCAR SPEEDSCRIPT NO HTML ...................................................................... 53 

    5.6.1.  Comandos de Escape ..................................................................................... 53 5.6.2.  Expressões de Escape ................................................................................... 54 

    5.7.  CONSTRUÇÃO DE P ÁGINAS WEB INTERAGINDO COM EMBEDDED SPEEDSCRIPT ............... 55 5.7.1.  Passando Parâmetros ..................................................................................... 55  5.7.2.  Gerenciamento de Páginas Dinâmicas com Forms ....................................... 57  

    5.8.  DESENVOLVENDO OBJETOS WEB COM EMBEDDED SPEEDSCRIPT ................................... 62 5.8.1.  Construindo Objetos WEB Embedded SpeedScript ....................................... 63 

    5.9.  EXEMPLO COMPLETO DO EMBEDDED SPEEDSCRIPT ........................................................ 63 

    6. 

    CGI Wrapper 85 

    6.1.  CONHECENDO O CGI WRAPPER ..................................................................................... 85 6.2.  ESTRUTURA DO CGI WRAPPER ...................................................................................... 85 

    6.2.1.  Estrutura de um CGI Wrapper ........................................................................ 85  6.2.2.  Processamento do CGI Wrapper .................................................................... 86  

    6.3.  EXEMPLO COMPLETO DO CGI WRAPPER ......................................................................... 87 

    7.  HTML Mapping 102 

    7.1.  HTML M APPING ........................................................................................................... 102 7.1.1.  HTML Mapping Simples ................................................................................ 102  7.1.2.  Novas Funcionalidades no HTML Mapping .................................................. 110  7.1.3.  HTML Mapping usando SDO ........................................................................ 116  

    8. 

    Gerenciando Saída com DISPLAY 124 

    8.1.  TRABALHANDO COM A S AÍDA DISPLAY ......................................................................... 124 8.1.1.  Saída Direta do DISPLAY ............................................................................. 124 8.1.2.  Formatando a Saída com DISPLAY ............................................................. 126  

    8.2.   ALTERANDO O FORMATO P ADRÃO DE S AÍDA .................................................................. 128 8.2.1.  Setando um Padrão para {&WEBSTREAM} ................................................. 129 8.2.2.  Setando Atributos Padrões no HTML ........................................................... 129 

    9.  Controlando Transações WebSpeed 131 

    9.1.  ESTADOS NO WEBSPEED ............................................................................................. 131 9.1.1.  Estados dos Objetos WEB ............................................................................ 131 9.1.2.   Aplicações WebSpeed usando os Estados .................................................. 131 

    9.1.3. Vantagens e Desvantagens do State-persistent ............................................. 132  

    9.2. 

    ENTENDENDO O CONTROLE DE TRANSAÇÃO NO WEBSPEED .......................................... 132 

    9.2.1.  Como Fazer um Objeto Web State-aware .................................................... 133 9.2.2.  Objetos WEB no Contexto de Stateless e State-persistent .......................... 134 

    9.3.  OBJETOS WEB PRIMÁRIOS E SECUNDÁRIOS ................................................................. 134 9.3.1.  Executando Objetos WEB Primários e Secundários .................................... 135  9.3.2.  Objetos WEB State-aware e Persistence ..................................................... 136  

    9.4.  IMPLEMENTAÇÃO DO CONTROLE DE TRANSAÇÃO ........................................................... 136 9.4.1.  Modificando a Procedure outputHeader ....................................................... 137  9.4.2.  Modificando a Procedure process-web-request ........................................... 137  9.4.3.  Sobrescrevendo Procedures e Funções ....................................................... 138  9.4.4.  Modificando a Lista de Atributos ................................................................... 138  9.4.5.  Modificando a Lista de Campos do Usuário ................................................. 138  

    9.5. 

    CONTROLE DE TRANSAÇÃO USANDO EMBEDDED SPEEDSCRIPT ..................................... 139 

    9.6.  CONTROLE DE TRANSAÇÃO USANDO CGI WRAPPER ..................................................... 139 9.7.  CONTROLE DE TRANSAÇÃO USANDO HTML-M APPING ................................................... 139 

  • 8/15/2019 Apostila WebSpeed

    4/166

     Índice 

    9.7.1.  Entendendo o process-web-request no HTML-Mapping .............................. 140  9.7.2.  Modificando a Lógica de Requisição ............................................................ 141 9.7.3.  Movendo os Dados Através do HTML-Mapping ........................................... 142  9.7.4.  Criando as Definições ................................................................................... 144 

    9.7.5. 

    Modificando o Main Block ............................................................................. 145  

    9.7.6.  Customizando Campos no Control Handlers ................................................ 146  

    9.8.  GERENCIANDO O TIME-OUT DO STATE-AWARE .............................................................. 149 9.8.1.  Usando o Atributo Web-Timeout-Handler ..................................................... 149 9.8.2.  Resetando o Tempo do Time-Out do Objeto WEB ...................................... 150  

    10. Controlando Transações no Banco de Dados 151 

    10.1.  ESCOPO DE UMA TRANSAÇÃO ....................................................................................... 151 10.2.  SUB-TRANSAÇÕES ....................................................................................................... 153 10.3.  CONTROLANDO O INÍCIO E FIM DE UMA TRANSAÇÃO ....................................................... 153 10.4.  COMPONENTES DO SPEEDSCRIPT E TRANSAÇÕES ......................................................... 154 

    10.4.1.  Sub-Procedures ............................................................................................ 154 10.4.2.  I/O de Arquivos ............................................................................................. 154 

    10.4.3. 

    Variáveis dos Programas .............................................................................. 155  

    10.5.  TRANSAÇÕES NAS APLICAÇÕES .................................................................................... 155 10.5.1.  Aplicações com Múltiplos Bancos de Dados ................................................ 155  10.5.2.  Aplicações Distribuídas ................................................................................. 156  

    10.6.  DETERMINANDO QUANDO TRANSAÇÕES ESTÃO ATIVAS .................................................. 156 10.7.  TRANSAÇÕES EM MÚLTIPLAS P ÁGINAS .......................................................................... 156 

    10.7.1.  Gerenciamento de Transações com Múltiplas Páginas ............................... 156  10.7.2.  Trabalhando com Transações de Múltiplas Páginas .................................... 157  10.7.3.  Guia para Uso da Transação com Múltiplas Páginas ................................... 159 

    11. Executando Aplicações 161 

    11.1.  SETANDO O AMBIENTE DA APLICAÇÃO ........................................................................... 161 11.1.1.  Criando o Diretório de Trabalho da Aplicação .............................................. 161 11.1.2.

     Movendo a Aplicação para o Diretório Correto ............................................. 161

     

    11.1.3.  Compilando Objetos WEB ............................................................................ 162  11.1.4.  Tornando sua Aplicação Segura ................................................................... 163 

    11.2.  INICIANDO E P ARANDO UMA APLICAÇÃO ......................................................................... 163 11.3.  DEBUGANDO APLICATIVOS NO WEBSPEED .................................................................... 163 

    11.3.1.  Adicionando debug=on para URL ................................................................. 163 11.3.2.  Debugando com Cookies .............................................................................. 164 11.3.3.  Chamando o Debugador Virtual do Objeto WEB ......................................... 164 11.3.4.  Debugando e Opções Administrativas .......................................................... 164 11.3.5.  Utilizando o Debugador na Aplicação ........................................................... 166  11.3.6.  Arquivos de LOG’s do Broker e Agentes ...................................................... 166  

  • 8/15/2019 Apostila WebSpeed

    5/166

     Prefácio 

    PrefácioOBJETIVO Introduz o aluno ao ambiente web, passando nosso conhecimento de como utilizar asferramentas inclusas no AppBuilder do WebSpeed, bem como os três métodos de criação depáginas HTML, fornecidos pelo WebSpeed. Incluirá também as técnicas normalmenteutilizadas para aperfeiçoar seu aplicativo em relação à migração para o código de reutilizaçãodos aplicativos já existentes.

    TIPOGRAFIA Fontes em negrito

    Comando ou caracter que o usuário editaÊnfase em uma palavra ou expressão específica

    Fon te Itáli ca Argumentos de programaçãoComentários no código fonteNovos termosTítulos das publicações

    Fonte CouriewExemplos de CódigosNome de arquivos e pastas específicas

    PALAVRAS EM LETRAS MAIÚSCULASExpressões usadas para indicar termos com funções específicas ou teclas de atalhosExemplo: END-ERROR, GET, GO, ALT, CTRL, SPACEBAR, TAB

    Combinações De Teclas Quando é utilizado duas ou mais teclas simultaneamente, isto é, quando será precisopressionar uma tecla, manter esta tecla pressionada e pressionar a outra.Exemplo: CLTR-X

    Duas teclas usadas uma em seguida da outra.Exemplo: ESCAPE H

  • 8/15/2019 Apostila WebSpeed

    6/166

     Prefácio 

    OBSERVAÇÕES EM SINTAXES  As sintaxes desta apostila seguem a seguinte convenção:

     As palavras-chaves estarão escritas em letras maiúsculas e opções ou argumentosestarão em itálico:

    SINTAXE

    ACCUM aggregate expression 

    No exemplo acima, a palavra ACCUM é uma palavra-chave. As palavras “aggregate” e“expression” são as opções definidas para a função ACCUM no PROGRESS  LanguageReference.

    Colchetes em volta de um item indicam que são opcionais:SINTAXE

    DISPLAY [ STREAM stream ] [ unless-hidden ] [ no-error ] 

    Mas cuidado, em alguns casos, os colchetes não são observação, mas parte da linguagem.Neste caso ela estará impressa normalmente, com a mesma fonte do restante do texto,conforme vemos a seguir:

    SINTAXE

    INITIAL [ constant [ , constant ] … ] 

    Chaves em volta de um item indicam que esse item é obrigatório:SINTAXE

    { BY expression [ DESCENDING ] } 

    No exemplo, você deverá usar o BY e expression  e a especificação DESCENDING seráopcionalmente.

    Em alguns casos, as chaves não são observações para o leitor, mas parte da linguagem. Nestecaso ela estará impressa normalmente, com a mesma fonte do restante do texto, conformevemos a seguir:

    SINTAXE

    {&argument-name} 

    Barra vertical entre dois ou mais itens indica opção de escolha:

    SINTAXE

    PRESELECT [ EACH | FIRST | LAST ] record-phrase 

    No exemplo, EACH, FIRST e LAST são opções e você poderá escolher entre uma delas. Já no

    exemplo abaixo, você deverá escolher um dos itens logical-name ou alias SINTAXE

  • 8/15/2019 Apostila WebSpeed

    7/166

     Prefácio 

    CONNECTED ( { logical-name | alias } ) 

    Reticências (...) indicam que você pode atribuir um ou mais itens além dosapresentados. Se um grupo de itens está entre chaves e seguido de reticência, vocêdeverá escolher um ou mais dos itens. Se um grupo de itens está entre colchetes eseguidos por reticências, você pode opcionalmente escolher um ou mais itens:

    SINTAXE

    MAXIMUM ( expression , expression [ , expression]…) 

    No exemplo acima, você deverá incluir duas expressões, mas pode opcionalmente incluir mais.Note que cada expressão subseqüente deve estar precedida de vírgula.

    SINTAXE

    MESSAGE { expression | SKIP [ (n)]}... 

    Já neste exemplo, deverá especificar a mensagem com a opção expression  ou SKIP eopcionalmente atribuir valor a este item

    Em alguns casos, a sintaxe é muito longa e não cabe na mesma linha, então poderáacontecer de cada item estar entre seu próprio colchete em múltiplas linhas.

    SINTAXE

    WITH [ ACCUM max-length ][ expression DOWN ][ CENTERED ][ DOWN ][ n COLUMNS ][SIDE-LABELS][ STREAM-IO] 

    No exemplo, as opções estão em linhas diferentes, mas se referem à mesma função WITH.

  • 8/15/2019 Apostila WebSpeed

    8/166

     Prefácio 

    REFERÊNCIAS BIBLIOGRÁFICAS 

    Princípios BásicosP ROGRESS Database Administration Guide and ReferenceP ROGRESS Installation Notes Version 9P ROGRESS Update BulletinP ROGRESS /400 DataServer Installation Notes

    P ROGRESS Application Development Environment – Getting Started  P ROGRESS Language Tutorial  P ROGRESS Master Glossary  Welcome to P ROGRESS 

    Ferramentas de DesenvolvimentoP ROGRESS  AppBuilder Developer’s Guide P ROGRESS Basic Database ToolsP ROGRESS Basic Development Tools

    P ROGRESS Debugger GuideP ROGRESS Help Development GuideP ROGRESS Translation Manager GuideP ROGRESS Visual Translator Guide

    Ferramentas de RelatóriosP ROGRESS Report Builder Deployment GuideP ROGRESS Report Builder TutorialP ROGRESS Report Builder User’s Guide P ROGRESS R ESULTS User’s Guide 

    4GLBuilding Distributed Applications Using the P ROGRESS AppServerP ROGRESS External Program InterfacesP ROGRESS Internationalization GuideP ROGRESS Language ReferenceP ROGRESS Programming HandbookP ROGRESS Database Administration Guide and Reference

    DataServersP ROGRESS DataServer GuidesSystem AdministrationP ROGRESS System Administration GuideP ROGRESS System Administration Reference

    SQL/Open AccessP ROGRESS Embedded SQL Guide and Reference

    P ROGRESS Open Client Developer’s Guide P ROGRESS SQL Guide and Reference

    SQL-92P ROGRESS Embedded SQL-92 Guide and ReferenceP ROGRESS JDBC Driver GuideP ROGRESS ODBC Driver GuideP ROGRESS SQL-92 Guide and Reference

    DeploymentP ROGRESS Dev eloper’s Toolkit  P ROGRESS Portability Guide

    ReferencePocket P ROGRESS

  • 8/15/2019 Apostila WebSpeed

    9/166

     INTRODUÇÃO 

    1. IntroduçãoEspecificamente, este curso descreve:

     A criação de uma página na Web com texto e imagens.Organização de dados com tabelas do HTML.Organização de páginas na web com HTML frames.Transferência de dados de uma página para outra utilizando a URL.Manipulação de eventos.Como Interagir com o usuário através de janelas alert, prompt e confirm.Descrever e instalar a arquitetura e a configuração do WebSpeed.Criar páginas de HTML utilizando os três métodos fornecidos pelo WebSpeed.Embedded SpeedScript;CGI-WrapperHTML Mapping.

  • 8/15/2019 Apostila WebSpeed

    10/166

     FERRAMENTAS DO WEBSPEED 

    2. Ferramentas do WebSpeedO ambiente de desenvolvimento do WebSpeed possui diversos recursos, ferramentas ecomponentes para a construção de páginas WEB dinamicamente, permitindo assim que acriação dos aplicativos para WEB seja feitos de forma produtiva.

    2.1. APPBUILDER

    O AppBuilder é o ambiente de desenvolvimento para ambientes caracter, Client/Server e paraHTML-based (ambiente WEB). Em uma mesma ferramenta é possível desenvolver osaplicativos para qualquer que seja o ambiente desejado.

    Esta ferramenta pode ser encontrada nas licenças Progress para:

    WebSpeed: Criar, testar e desenvolver objetos WEBProvision: Criar, testar e desenvolver aplicativos Client/Server multi-camadasProvision Plus: Criar, testar e desenvolver aplicativos tanto em ambientes Client/Server

    como em ambientes WEB, além de integração com outros aplicativos não Progress comoJava e ActiveX.

    2.1.1. Desenvolvimento Gráfico e Procedural

    O uso do Provision permite o desenvolvimento dos aplicativos utilizando objetos gráficos como

    botões, campos de edição (Fill-in), combo-boxes, radio-sets, toggle-boxes entre outros.Entretanto para desenvolver graficamente é possível apenas para ambiente Client/Server.

    O WebSpeed necessita de um ambiente procedural, onde existem SpeedScript que é baseadono Progress 4GL, CGI Wrapper e objetos WEB HTML-Mapping.

    2.1.2. SmartDataObjects

    O WebSpeed é compatível com o SmartObject SmartDataObject, sendo este escrito paragerenciar as regras de negócio e acesso ao banco de dados como leituras, cadastros evalidações. Portanto, esse objeto não foi desenvolvido para permitir interface com o usuário,

    mas para ser o objeto de dados, criando a interface entre a página WEB e o banco de dados.

    2.1.3. Templates e Wizards

    Para a construção de novos programas, existem ferramentas que otimizarão o processo.

    Templates são os objetos básicos para o desenvolvimento de programas e aplicações. Sãomodelos pré-construídos com as funcionalidades mais básicas dos objetos, ou seja, com asfunções que são comuns a todos os objetos de um mesmo tipo. Caso as Templates sejamalteradas, somente os novos Masters construídos a partir deste momento receberão esta novaimplementação. Ao selecionar um novo programa a ser criado, o Progress listará todas as

    templates existentes de acordo com o tipo da licença Progress instalada. No caso do ProvisionPlus, todos os tipos de templates possíveis como Caracter, SmartObjects, Procedurais e WEBestarão disponíveis.

  • 8/15/2019 Apostila WebSpeed

    11/166

     FERRAMENTAS DO WEBSPEED 

    O Wizard é a capacidade de algumas templates de direcionar a criação do aplicativo,auxiliando no processo passo a passo até a sua conclusão, e na escolha de itens e situações.O aplicativo resultante é o mínimo necessário para o funcionamento normal do aplicativo.

    Tanto a Template pronta, como o uso de um Wizard, permitem a criação de um programaautomaticamente, sem que uma única linha HTML de código seja escrita manualmente.

    Blank: Template que possui tags HTML, incluindo uma seção para SpeedScript.CGI Wrapper:  Template usado para criar um código HTML dinamicamente usando

    SpeedScriptDetail: Template que usa o Wizard para auxiliar na construção de uma interface WEB,

    possibilitando o uso de um form para atualizar dados, além de conexão com o banco dedados ou uso de SDO’s. O resultado é um programa HTML 

    Frameset: Template que possui tags HTML com abertura de 3 frames ou mostra umamensagem quando o browser usado não suporte o uso de frames.

    HTML Mapping:  Template que usa o Wizard para auxiliar no mapeamento de umarquivo HTML existente com campos de tabelas dos bancos de dados.

    Main: Uma página de texto estática para uma aplicação WebSpeed.Report:  Template que usa o Wizard para auxiliar na criação de um relatório em

    WebSpeed, indicando tabelas e campos a serem usados.Report Template: Template que possui tags HTML com preprocessadores definidos

    para auxiliar na construção de um aplicativo de relatório.Table: Template que possui tags HTML, incluindo uma seção para SpeedScript para

    possibilitar a geração de uma página WEB.

    2.1.4. Editores de Texto

    É possível utilizar diversos editores de texto para criar ou alterar programas criados pelo AppBuilder. O Section Editor é a ferramenta utilizada pelas Templates para possibilitar aseparação em seções dos aplicativos criados, facilitando a localização dos pontos para inserircódigos.

     Ainda é possível utilizar o próprio Procedure Editor do Progress que mostrará todo o programaem sua área de edição e ainda o próprio NotePad do Windows. Entretanto esse não terá osrecursos dos editores do Progress, como compilação e teste de sintaxe, mas o seu uso nãonecessita de um ambiente Progress iniciado, o que ocorre nos outros casos.

    2.2. EXECUTANDO O WEBSPEED NO APPBUILDER 

    O Progress utiliza a mesma ferramenta AppBuilder para desenvolver objetos em Client/Servere para WEB. Entretanto é necessário configurar o ambiente para que o WebSpeed estejadisponível para ser acessado.

    2.2.1. Configuração do WebSpeed

    AdminServer  NameServer  Database Server  WebSpeed Broker  Web Server  

  • 8/15/2019 Apostila WebSpeed

    12/166

     FERRAMENTAS DO WEBSPEED 

    2.2.2. Identificando o Browser Padrão e o Broker doWebSpeed

    Para execução dos programas criados pelo WebSpeed é necessário identificar qual será obrowser padrão onde os aplicativos serão executados e testados e também identificar qual oBroker do WebSpeed que será utilizado. Isto é feito colocando o nome do executável dobrowser e do Broker no AppBuilder.

    Para configurador o nome do browser a ser usado e do Broker, é necessário selecionar nomenu do AppBuilder a opção Options e depois Preferences. A janela Preferences será aberta:

    Selecionar a pasta WebSpeed e colocar no campo Web-Browser o nome do executável,inclusive o caminho completo, do browser que será usado. Por exemplo:

    NETSCAPE: c:\program files\netscape\communicator\program\netscape.exeINTERNET EXPLORER: c:\program files\plus!\microsoft internet\iexplorer.exe

    O campo Broker URL deve informar o URL usado para acessar o Broker do WebSpeed queexecutará os objetos WEB. Por exemplo:

    http://host_name[:port]/scripts_dir/messenger/WService=broker

    Onde:

    host_name: Identifica o nome da máquina que executa o Web Server.

  • 8/15/2019 Apostila WebSpeed

    13/166

     FERRAMENTAS DO WEBSPEED 

    port: Identifica o número da porta do Web Server. Pode ser opcional caso o Web Server use aporta padrão que é a 80.scripts_dir: Identifica o diretório de Scripts do Web Server para os Messengers CGI ou ISAPI.Caso o Messenger NSAPI estiver sendo usado, essa opção pode ser omitida.

    messenger:  Identifica o nome do Messenger. No caso do Messenger CGI, é necessáriocolocar o nome do executável. No caso do Messenger ISAPI ou NSAPI deve ser informado oarquivo DLL.Broker: Identifica o nome do Broker.

    O botão Test irá verificar se a conexão com o Broker está correta.

    Para desenvolver aplicativos para WEB é necessário identificar o Broker do WebSpeed no AppBuilder. Este Broker deve conectar os mesmos bancos de dados que o AppBuilder.

    Lembrando que no ambiente de desenvolvimento os bancos de dados usados pelo aplicativo

    devem estar conectados, permitindo assim sua compilação e checagem de sintaxe.

    2.2.3. Setando o Modo de Desenvolvimento

    O ambiente de desenvolvimento pode estar no próprio servidor, onde o WebSpeed Server estáinstalado. Para isso algumas considerações devem ser levadas em conta:

    O AppBuilder estar sendo executado na mesma máquina que o WebSpeed Server.Tanto o AppBuilder quanto o WebSpeed Server devem ter o mesmo diretório de

    trabalho e PROPATH.

  • 8/15/2019 Apostila WebSpeed

    14/166

     FERRAMENTAS DO WEBSPEED 

    No caso de desenvolvimento remoto, isto é, o desenvolvimento será feito em uma máquinadiferente de onde exista o WebSpeed Server, pode-se usar o AppBuilder, mas com algumascaracterísticas próprias:

    O PROPATH do Progress usado no ambiente remoto e do servidor devem serdiferentes.O diretório de trabalho do WebSpeed Server deve ser diferente do ambiente remoto.Os programas usados, salvos e compilados serão gravados nos diretórios doWebSpeed Server.

    Para preparar o AppBuilder para trabalhar remotamente é necessário clicar no botão Switch toRemote Development para que o AppBuilder trabalhe como ambiente remoto ou clicar nomesmo botão quando este se chamar Switch to Local Development para transformar emambiente local.

    Caso exista algum problema que impeça o acesso remoto do WebSpeed Server, é possívelsalvar os programas localmente. Entretanto no ambiente local não é possível compilar fontesque possuam SpeedScript.

    2.3. WEBTOOLS – FERRAMENTAS EM AMBIENTE WEB

    O WebTools contém ferramentas do Progress mas em uma página WEB, permitindo acessar

    dados e, apesar de mais trabalhoso, construir programas. A principal vantagem é não precisarter instalado o WebSpeed localmente para acessar as ferramentas de desenvolvimento.

    Entretanto o AppBuilder possui um ambiente de desenvolvimento mais amigável e ainda pode-se acessar dele as WebTools. Para isso acessar a opção Tools no menu e depois WebTools.

     A execução dessa opção abre uma página da internet com o WorkShop diretamente.

    Modo Local

    Modo Remoto

  • 8/15/2019 Apostila WebSpeed

    15/166

     FERRAMENTAS DO WEBSPEED 

    Esta página do WebTools possui um frame de detalhe com todos os links paradesenvolvimento e ajuda e um frame de trabalho.

    Cada link do frame de detalhes permite o acesso a uma atividade ou informação:

    Application ManagerPossui informações do gerenciador da aplicação como quem são os serviços disponíveis e osdiretórios de trabalho do WebSpeed Server.

  • 8/15/2019 Apostila WebSpeed

    16/166

     FERRAMENTAS DO WEBSPEED 

    Data BrowserMostra as informações como nome, serviço e localização dos bancos de dados conectados no

    WebSpeed Server.

    EditorO editor do WorkShop funciona basicamente como o Procedure Editor do 4GL. Possui opçõespara trabalhar com os arquivos e ainda checar sintaxe, criar Rcode e executar os programas.

  • 8/15/2019 Apostila WebSpeed

    17/166

     FERRAMENTAS DO WEBSPEED 

    File Tools

    Esta opção possibilita a pesquisa de programas e arquivos utilizando filtros. Além de possibilitarexecutar, compilar, gerar offset e eliminar arquivos.

  • 8/15/2019 Apostila WebSpeed

    18/166

     FERRAMENTAS DO WEBSPEED 

    OS CommandEsta opção possibilita a informar comandos do sistema operacional.

    Scripting LabEsta opção possibilita a realizar pequenas testes e possui pequenos códigos exemplos. Amaior vantagem é que os programas não precisam ser gerados, compilados e depoisexecutados.

  • 8/15/2019 Apostila WebSpeed

    19/166

     FERRAMENTAS DO WEBSPEED 

    Agent Variables

    Mostra as variáveis correntes do ambiente atual.

  • 8/15/2019 Apostila WebSpeed

    20/166

     FERRAMENTAS DO WEBSPEED 

    DatabasePossui informações sobre todos os bancos de dados conectados ao agente do WebSpeed.

    MessagesPossibilita pesquisar as mensagens de erro ocasionadas no Progress e buscar pordetalhamentos. O botão Query Knowledge Base for Error permite o acesso à página daProgress que possui maiores informações de erro.

  • 8/15/2019 Apostila WebSpeed

    21/166

     FERRAMENTAS DO WEBSPEED 

    Object StateMostra uma lista de todos os objetos WEB ativos com informações como tipo do objeto e ainda

    sua atual situação neste ambiente WEB.

  • 8/15/2019 Apostila WebSpeed

    22/166

     FERRAMENTAS DO WEBSPEED 

    PropathMostra a lista de todos os diretórios usados pelo ambiente do WebSpeed.

    Virtual System TablesMostra as estatísticas de performances existentes nessas Virtual System Tables (VST).

  • 8/15/2019 Apostila WebSpeed

    23/166

     FERRAMENTAS DO WEBSPEED 

    2.4. OUTROS COMPONENTES DO WEBSPEED Variáveis Globais do WebSpeedSão variáveis existentes para todo objeto WEB que está sendo executado em um mesmo Agente, e que mantém o ambiente CGI atual e outras informações sobre a atualização dapágina WEB ou transações persistentes no WebSpeed. Estas variáveis estão definidas noinstalação-progress/src/web/method/cgidefs.i.

    Definições de preprocessadores no WebSpeedOs preprocessadores são definidos para tratar consistências no acesso para o ambiente WEB.Estes preprocessadores estão definidos no instalação-progress/src/web/method/cgidefs.i.

    Função API

    Conjunto de funções padrões do WebSpeed que possui uma grande variedade de serviçospara os objetos WEB. Estas funções realizam tarefas diversas como tratar URL’s e retornarvalores específicos do ambiente CGI, estando todas disponíveis para todas as aplicações.Estas funções estão definidas no instalação-progress/src/web/method/cgidefs.i.

    Method ProceduresConjunto de procedures em SpeedScript disponibilizando diversos serviços para os objetosWEB. Algumas procedures e funções (API) são duplicadas para possibilitar compatibilidadecom outras versões do WebSpeed. Algumas procedures podem ser customizadas para cadaobjeto WEB. Os fontes de diversas procedures são localizadas no objeto web-util.p do diretórioinstalação-progress/src/web/objects.

    Control HandlersÉ uma classe especial de procedures que responde a pseudos eventos nos objetos WEBHTML-Mapping e que podem ser customizadas. Por exemplo, customizando (OVERRIDE) as

  • 8/15/2019 Apostila WebSpeed

    24/166

     FERRAMENTAS DO WEBSPEED 

    procedures WEB.INPUT e WEB.OUTPUT é possível trocar o tratamento padrão por outro.Cada procedure converte os dados entre um tipo de elemento HTML e um campo SpeedScriptdo tipo correspondente. Estes controles estão localizados em um utilitário de mapeamento detags no instalação-progress/src/web/support.

    TAGMAP.DATEste arquivo contém o mapeamento entre os tipos de elementos no HTML e campos nosobjetos SpeedScript. Cada entrada no arquivo inclui a localização padrão do WEB.INPUT eWEB-OUTPUT para cada campo mapeado, podendo ainda customizar esse arquivo para criarseus próprios mapeamentos.

    WEB-DISP.PÉ o programa de controle que é executado em todos os agentes do WebSpeed, executandotodos os objetos WEB. O fonte SpeedScript fica no instalação-progress/src/web/object,gerenciando o estado de diversas transações que a aplicação usa, sendo ainda incluído com oambiente de desenvolvimento, pois é a central de operações da aplicação, afetando como eonde deve ser setado o estado da transação nos objetos WEB. Ainda é iniciado o programaweb-util.p possuindo mais funções e procedures em tempo de execução.

    2.5. ARQUIVOS FONTE DO WEBSPEED 

    ExemplosPossui códigos exemplos, incluindo HTML e OFFSETS.

    MétodosVários fontes de includes SpeedScript definindo procedures e funções usados no WebSpeed.

    ObjetosPossui o fonte do principal objeto WEB executando as procedures web-disp.p e web-util.p.

    SupportContém todas as procedures TAGMAP para os objetos HTML-Mapping, estando estesespecificados no arquivo tagmap.dat, possuindo também procedures de execução paradebugar e interpretar os arquivos de offset pata um objeto HTML-Mapping.

    TemplateSão os programas bases para a construção de novos objetos WEB e outros tipos deprocedures.

  • 8/15/2019 Apostila WebSpeed

    25/166

     ARQUITETURA DO WEBSPEED 

    3. Arquitetura do WebSpeed

    3.1. COMPONENTES DO WEBSPEED 

    Agente WebSpeed  –  Processo que executa o objeto WEB, realiza transações edinamicamente combina dados com o formato HTML. Basicamente é um Progress 4GLCharacter executado em Batch.

    WebSpeed Broker – Este processo pode ser dividido em:-  Registrar o serviço WebSpeed fornecido para um NameServer para ser

    acessado por um ou mais cliente HTML. O cliente HTML é executado por umbrowser.

    -

      Gerencia conexões entre clientes e um conjunto de Agentes WebSpeed.-  Mantém o status de cada Agente neste conjunto e dinamicamente escala o

    número de Agentes de acordo com a variação da demanda.

    WebSpeed Messenger   –  Processo que gerencia a transferência de dados entre oWEB Server e o Agente WebSpeed durante uma simples transação WEB. OMessenger é um programa CGI ou um processo ISAPI ou NSAPI, dependendo doWEB Server e como é planejado o desenvolvimento da aplicação.

    NameServer – Processo que mantém uma lista de WebSpeed Transaction Servers. OTransaction Servers registra os serviços da aplicação providas com o NameServer. ONameServer pode diretamente requisitar a conexão de um cliente para um WebSpeedBroker que suporta um serviço de uma aplicação requisitada. Isto dá uma maior

    escalabilidade e transparência da localização da aplicação.

    Quando o Enterprise Transaction Server é instalado, o NameServer também realiza oLoad Balancing, permitindo balancear a carga do cliente entre múltiplos Brokers quesuportam um mesmo serviço da aplicação, isto é, o mesmo conjunto de procedures erecursos.

    WorkShop – Ferramenta para desenvolver e testar as aplicações WebSpeed.

    3.1.1. Distribuição dos Componentes no WebSpeed

     A figura a seguir mostra a máxima distribuição dos componentes que se pode alcançar com oscomponentes do WebSpeed em uma rede, mostrando os principais componentes do modelorun-time do WebSpeed que devem residir juntos em uma mesma máquina. O Messenger deveestar na mesma máquina do WEB Server. O Broker e o Agente também ficam em uma mesmamáquina. Caso contrário, pode-se combinar essas configurações em qualquer combinação deuma ou mais máquinas suportadas pelo WebSpeed.

    Máquina 1 Máquina 2 Máquina 3 Máquina 4 Máquina 5WebSpeedWorkShop

    Web ServerMessenger

    NameServer Broker Agente

    DB SERVER

     Ainda é possível adicionar o Progress AppServer em qualquer máquina que possa suporta-lona rede. O AppServer pode esecutar procedures Progress no lugar do Agente, como um

    Progress Client.

  • 8/15/2019 Apostila WebSpeed

    26/166

     ARQUITETURA DO WEBSPEED 

    3.1.2. Produtos do WebSpeed Transaction Server

    O WebSpeed Transaction Server deve ser visto como WebSpeed Development Server,

    WebSpeed Transaction Server ou WebSpeed Enterprise Transaction Server. Todos essesprodutos são consistidos dos mesmos componentes. Entretanto, existem diferenças no númerode Agentes suportados para cada um, além do que, apenas o WebSpeed EnterpriseTransaction Server suporta load balancing.

    Produto Número de Agentes Load BalancingWebSpeed Developmente Server 2 NãoWebSpeed Transaction Server 5 ou 25 NãoWebSpeed Enterprise Transaction Server 50 ou 250 Sim

    Os 3 produtos contem essencialmente os mesmos componentes, tanto para desenvolver comoem ambiente de produção. Mas é importante lembrar que em ambiente de produção pode sernecessário uma maior quantidade de Agentes.

    O WebSpeed Enterprise Transaction Server suporta Load Balancing, aumentando a eficiênciano gerenciamento de requisições dos clientes. Load Balancing é implementado permitindo oNameServer para gerenciar múltiplos WebSpeed Transaction Servers, que podem serdistribuídos em diversas máquinas no ambiente.

    3.2. GERENCIAMENTO DE REQUISIÇÕES PELOWEBSPEED 

    O ciclo básico de requisição é o mesmo para o WebSpeed Development Server, WebSpeedTransaction Server ou WebSpeed Enterprise Transaction Server. Este ciclo também é omesmo para todos os tipos de objetos WEB.

    1 – O WEB Server recebe a requisição, uma URL, de um Browser de internet:

    2 – O WEB Server gera um CGI Messenger ou dispara um ISAPI ou NSAPI Messenger:

    3 – O Messenger envia uma requisição para o NameServer por um Broker disponível:

  • 8/15/2019 Apostila WebSpeed

    27/166

     ARQUITETURA DO WEBSPEED 

    4  –  O Messenger inicializa uma conexão com o Broker no endereço retornado pelo

    NameServer e seguindo a requisição para o Broker:

    O WebSpeed Enterprise Transaction Server pode ordenar ao NameServer gerenciar múltiplosBrokers que suportam a mesma aplicação. A escolha do Broker será feita baseado no LoadBalancing.

    5 – O Broker consulta o conjunto de Agentes e atualiza a requisição para um Agente ocioso.

  • 8/15/2019 Apostila WebSpeed

    28/166

     ARQUITETURA DO WEBSPEED 

    6 – O Agente e o Messenger estabelecem uma conexão. O nome do objeto WEB e o ambientepara a requisição são passados para o Agente:

    7 – O Agente executa o objeto WEB. Também realiza as leituras e gravações necessárias nobanco de dados, mantendo a conexão com o Messenger enquanto o objeto WEB está sendoexecutado:

  • 8/15/2019 Apostila WebSpeed

    29/166

     ARQUITETURA DO WEBSPEED 

    8  – O Agente passa o HTML gerado para o Messenger que envia para o Browser através doWEB Server:

    Um objeto WEB state-aware, apesar de não ter uma execução prolongada, mantém o contextopersistente para execuções futuras do Agente.

     Após completar a execução, o Agente disconecta do Messenger e atualiza seu estado comodisponível para o Broker. O WEB Server desconecta do Browser depois de enviar a páginaWEB HTML.

  • 8/15/2019 Apostila WebSpeed

    30/166

     EXEMPLOS DE OBJETOS WEB 

    4. Exemplos de Objetos WEB A programação WEB pode ser feita utilizando diversos tipos de objetos, sejam HTML Mappingou CGI Wrapper. O importante é lembrar que a programação WEB tem como característicaprincipal à separação da interface da regra de negócio. Sendo assim, o conceito de BUFFERdeve estar bem claro para evitar problemas nas leituras e alterações de registros.

    4.1. TIPOS DE OBJETOS WEB

    Qualquer objeto WEB para o WebSpeed é uma procedure (Rcode) que pode ser executado poruma URL. Estes objetos podem tanto gerar páginas WEB, como acessar objetos de dados que

    fazem o acesso aos bancos de dados, permitindo o cadastro, alteração, eliminação e leitura deregistros. Uma aplicação WEB pode ser composta de um ou mais objetos WEB. Todos os tiposde objetos WEB são compilados e geram Rcodes onde podem ser executados pelos agentesdo WebSpeed.

    Estes objetos WEB são:

    HTML padrão HTML com SpeedScript CGI Wrapper  HTML Mapeado 

    4.1.1. Objeto HTML PadrãoUsando o WebSpeed é possível compilar praticamente qualquer programa HTML dentro de umWEB Object. A compilação cria um arquivo .w temporário para depois criar um Rcode. EsteRcode cria a página WEB que é idêntica ao arquivo original HTML quando visualizado nobrowser.

    Um arquivo HTML pode ser executado diretamente no browser, dispensando a compilação.Entretanto, o arquivo HTML será executado em uma aplicação WebSpeed, em um agente doWebSpeed, onde este agente executa apenas arquivos compilados (Rcodes). Por isto acompilação dos arquivos HTML é necessária para gerar os Rcodes. Quando este programa éexecutado pelo agente do WebSpeed, a saída HTML é recriada.

     A aplicação desenvolvida para o WebSpeed é composta de objetos WEB simples e por outrosobjetos WEB dinâmicos. Esta combinação permitirá a interação dos objetos.

    4.1.2. Embedded SpeedScript

    SpeedScript é um subconjunto do 4GL Progress. Os objetos WEB Embedded SpeedScript sãoarquivos HTML com o código SpeedScript. A identificação de um código SpeedScript em umHTML é feita por tags específicas que delimitam a área usada pelo SpeedScript. A abertura datag é:

     

    Para encerrar o uso do SpeedScript, deve-se fazer:

  • 8/15/2019 Apostila WebSpeed

    31/166

     EXEMPLOS DE OBJETOS WEB 

     A compilação do objeto WEB Embedded SpeedScript também gera um arquivo .W temporário

    e a partir dele um Rcode é criado. Ao gerar o HTML a ser usado pelo browser, o HTML originalé montado e as informações geradas pelo SpeedScript são criadas nesse HTML.

    Tanto a template Detail Wizard como a Report Wizard criam um Rcode usando o EmbeddedSpeedScript em um arquivo HTML. Além da existência da template Blank que um arquivoHTML com as tags para Embedded SpeedScript prontas.

    4.1.3. CGI Wrapper

    O código fonte do objeto WEB CGI Wrapper é um arquivo (.w) SpeedScript, sem estarassociado a nenhum código fonte HTML. O Rcode criado pela compilação do programa fonte

    (.w) é executado pelo agente do WebSpeed. Quando o objeto WEB CGI Wrapper é executado,um arquivo HTML é criado dinamicamente com as informações corretas para serem mostradasem um browser.

    O CGI Wrapper utiliza o preprocessador {&OUT} na procedure interna process-web-requestpara gerar uma página WEB (HTML) válida. Este HTML final possui um cabeçalho gerado pelopróprio CGI Wrapper.

    Para usar o CGI Wrapper, existe uma template no AppBuilder própria para isso. Esta templatepossui o corpo do SpeedScript para gerar e criar um arquivo HTML para o browser.

    4.1.4. HTML MapeadosO HTML Mapeado é um arquivo HTML padrão com objetos para criar a interface de tela paraentrada de dados. A procedure SpeedScript (.w) mapeia esses objetos para os campos detabelas dos bancos de dados ou para o SmartDataObject. A compilação nesse caso gera umarquivo de offset (.off) antes de gerar o Rcode. Este arquivo de offset mantém a localização doscampos no layout do HTML. O uso do template HTML Mapping Wizard auxilia ao mapear oscampos do HTML com os campos do banco de dados ou do SmartDataObject.

    O HTML Mapeado é útil para aplicações com atualizações no banco de dados, pois estetratamento é nativo deste tipo de template.

    4.1.5. Critério de Uso

     A escolha da template a ser usada para construir uma aplicação deve ser feita de acordo comsua aplicação.

    Para trabalhar diretamente em HTML, Embedded SeepdScrip pode ser o mais apropriado.

    Para separar a interface da lógica de negócio, o uso do CGI Wrapper ou HTML Mapeado podeser o mais indicado.

    Para construir aplicações persistentes, pode-se usar CGI Wrapped ou HTML Mapeado.

    Para cada tipo de objeto WEB existe um tipo de interação entre o HTML e a lógica de negócio.No caso do Embedded SpeedScript e do CGI Wrapper, a combinação entre o HTML e a lógica

  • 8/15/2019 Apostila WebSpeed

    32/166

     EXEMPLOS DE OBJETOS WEB 

    de negócio existe na compilação. O HTML Mapeado converge para HTML puro no momento daexecução.

    Em tempo de compilação, existe uma melhoria de performance, pois todo código fica contido

    em um único arquivo, inclusive expressões SpeedScripts (strings). Entretanto, fica a limitaçãode 60KB como tamanho máximo dos programas gerados. Em compensação, em tempo deexecução dos HTML Mapeados existe uma separação entre HTML e SpeedScript,automatizando entrada e saída de dados no HTML. Mas as gerações das páginas WEB sãomais complexas devido às interações necessárias.

    4.2. EXEMPLOS DE OBJETOS WEB

     Antes de iniciar os exemplos, é importante ter configurado o WebSpeed. No caso, verificar naopção PREFERENCES localizada na opção OPTIONS do menu do AppBuilder. Na janelaaberta, verificar se o nome do browser a ser usado está correto e se o nome do Broker tambémestá correto na pasta WebSpeed.

    4.2.1. URL’s para o Objeto WEB e PROPATH 

     A URL deve indicar o nome do objeto WEB a ser executado:

    http://host_name[:port]/scripts_dir/messenger/WService=broker/web_object

    Onde WEB_OBJECT é o nome do objeto WEB a ser executado pelo browser. Este nome deveconter o caminho parcial para a execução do programa, onde o agente do WebSpeed usará oPROPATH com o qual foi executado para localizar e executar o objeto passado pela URL.

    4.3. EXEMPLOS DE EMBEDDED SPEEDSCRIPT

    Os programas a serem construídos podem ser criados inicialmente de arquivos vazios ou dastemplates Report Wizard e Detail Wizard. As templates possuem informações iniciais para usaro Embedded SpeedScript.

    4.3.1. QUERY Simples

    Existem duas tags básicas para o WebSpeed. A tag SCRIPT que informa qual a “linguagem”que deve ser usada, que no caso é SpeedScript. Esta tag identifica os comandos 4GL(Comandos SpeedScript) que devem ser usados. Por exemplo:

    FOR EACH customer:  

    Por ser um comando de abertura de um bloco, as mesmas tags deveriam ser usadas paraidentificar o comando END. Ficando:

    END.

    O uso das tags nessa forma, cria um bloco de interação (FOR EACH), executando para cada

    registro lido o HTML existente dentro do bloco.

  • 8/15/2019 Apostila WebSpeed

    33/166

     EXEMPLOS DE OBJETOS WEB 

     A outra tag utilizada são os caracteres de crase ( `...` ). Esta tag inclui o valor corrente de cadaelemento de dados separados pelas crases, diretamente no HTML.

    Listagem de Customer

    Listagem de Customer

    ClienteNomeTelefone

    FOR EACH customer NO-LOCK :

    `customer.custnum``customer.name``customer.phone`

    END.

     

    Exemplo localizado em: exemplo/capitulo4/exemplo01.html

    Este programa gera uma página WEB com uma tabela de três colunas. Cada linha tem 1registro da tabela de Customer impresso com os campos CUSTNUM, NAME e PHONE.

  • 8/15/2019 Apostila WebSpeed

    34/166

     EXEMPLOS DE OBJETOS WEB 

    4.3.2. Gerenciando a Entrada de DadosO Embedded SpeedScript possibilita o gerenciamento de entrada de dados na página WEB.Isso permite a interação do usuário com a página WEB.

    Pesquisa de Customer

    Dados de Customer

     

    Entre com
    Customer:

  • 8/15/2019 Apostila WebSpeed

    35/166

     EXEMPLOS DE OBJETOS WEB 

    Nome:

    Telefone:

    Primeiro Endereço:

    Segundo Endereço:

    Cidade:

    CEP:

    UF:

    Comentários:`customer.comments`

     

    Exemplo localizado em: exemplo/capitulo4/exemplo02.html

    Este programa irá abrir um campo de edição para o código de Customer e um botão depesquisa. Ao clicar o botão, será realizada uma verificação se o campo de edição possui umvalor diferente de vazio. Caso sim, será realizada uma pesquisa na tabela para buscar osdados necessários para mostrar o registro.

  • 8/15/2019 Apostila WebSpeed

    36/166

     EXEMPLOS DE OBJETOS WEB 

    Na tag “

    como CUSTNUM.

    O SpeedScript é usado basicamente duas vezes. Na primeira verifica se o valor lido do campoé diferente de vazio e depois usa o comando FIND para pesquisar o valor do registro. Depois éusado novamente para analisar se o código informado está disponível (AVAILABLE). Casoesteja, é montado um HTML de saída com os campos a serem mostrados. Entretanto, umaterceira vez acaba sendo necessária usar o SpeedScript, pois o comando IF usado abre umbloco com o comando DO, sendo necessário fechar esse bloco com o comando END.

    É importante ressaltar, que toda leitura dos valores dos campos colocados para a entrada dedados, retornam um valor no tipo caracter. Sendo assim, o tipo do campo usado no FINDexistente no SpeedScript deve ser convertido no tipo correspondente ao do campo pesquisado.No exemplo, o tipo é o inteiro e a função usada é a INTEGER.

  • 8/15/2019 Apostila WebSpeed

    37/166

     EXEMPLOS DE OBJETOS WEB 

    4.4. CGI WRAPPER O CGI Wrapper contém uma procedure chamada PROCESS-WEB-REQUEST. Esta procedureinicia a saída para o BROWSER, provendo tags HTML necessárias para completar uma páginaHTML válida.

    PROCEDURE process-web-request :/*----------------------------------------------------------------------------

    Purpose: Process the web request.Parameters: Notes:

    ----------------------------------------------------------------------------*/ 

    RUN outputHeader.

    {&OUT}'':U SKIP '':U SKIP ' Listagem de Customer ':U SKIP '':U SKIP '':U SKIP.

    {&OUT}' Listagem de Customer ':U SKIP '':U SKIP '':U SKIP ' Cliente ':U SKIP ' Nome ':U SKIP 

    ' Telefone ':U SKIP '':U SKIP.

  • 8/15/2019 Apostila WebSpeed

    38/166

     EXEMPLOS DE OBJETOS WEB 

    FOR EACH customer NO-LOCK :{&OUT}

    '':U SKIP ' ':U customer.custnum '':U SKIP 

    ' ':U customer.NAME '':U SKIP ' ':U customer.phone '':U SKIP '':U SKIP.

    END.

    {&OUT}'':U SKIP '':U SKIP '':U SKIP.

    END PROCEDURE. Exemplo localizado em: exemplo/capitulo4/exemplo03.w

    Neste exemplo, a procedure PROCESS-WEB-REQUEST cria toda página WEB que satisfaz arequisição, incluindo todo HTML e dados associados. Primeiramente a procedure OUTPUT-HEADER é executada para gerar o cabeçalho HTTP da página. Após isto, uma tabela émontada apresentando o código, nome e telefone de cada registro de CUSTOMER. Aconstrução dessa tabela é feita pelo comando FOR EACH. O resultado final é mostrado emforma de uma tabela, semelhante ao exemplo do SpeedScript.

    Para a criação de um objeto WEB CGI Wrapper, existe uma template própria para isso com omesmo nome, CGI Wrapper.

    O preprocessador {&OUT} é uma sintaxe do WebSpeed que inicia a saída para uma páginaWEB. Este preprocessador identifica o STREAM de saída, indicando ser uma saída apontadacomo WEB.

  • 8/15/2019 Apostila WebSpeed

    39/166

     EXEMPLOS DE OBJETOS WEB 

    4.5. HTML MAPPING 

    Enquanto um programa desenvolvido como SpeedScript é um HTML e um programa

    desenvolvido como CGI Wrapper é um programa Progress, o HTML Mapping utiliza os doistipos de arquivos, separando a interface do HTML da procedure que interage com os dados.Esta interação entre HTML e Progress é feita por um arquivo criado após o mapeamento comextensão .OFF.

    Uma procedure chamada htmOffSets é criada no HTML Mapping, sendo responsável pelaassociação entre os campos do formulário do HTML e os campos do banco de dados.

    4.5.1. HTML Mapping Simples

    Este código não possui nenhum SpeedScript embutido, é um HTML com um form para entrada

    e impressão de dados. Para a comunicação com este HTML, pode-se usar o HTML MappingWizard do AppBuilder. Este template possibilita o mapeamento entre os HTML’s: 

    Mapear cada campo do tipo INPUT e TEXTAREA com os equivalentes FILL-IN eEDITOR do banco de dados.Cria um arquivo OFFSET especificando a posição no form do HTML que é mostrado aocliente.Na procedure process-web-request é adicionado o comando FIND, como umSpeedScript.Salvar o código fonte com o mesmo nome do HTML, mas usando a extensão W.

    4.5.2. HTML Mapping e SDO Além do mapeamento diretamente com o banco de dados, o mesmo pode ser feito com asSmartDataObjects (SDO). A diferença principal é a fonte onde estão os campos, apenassubstituindo o banco de dados pela SDO.

    É necessário apenas criar a SDO desejada com a tabela e os campos a serem trabalhados noHTML Mapping. Nos dois casos, o importante é desenhar inicialmente o HTML.

    Localizar Customer

    Detalhes de Customer

    Entre com Customer:

    Nome: --------Telefone:

    Endereço 1:
    Endereço 2:

    Cidade: ---Estado:

    ---Cep:

    Comentarios:

  • 8/15/2019 Apostila WebSpeed

    40/166

     EXEMPLOS DE OBJETOS WEB 

     Exemplo localizado em: exemplo/capitulo4/exemplo04.html

    O resultado desse HTML fica como:

  • 8/15/2019 Apostila WebSpeed

    41/166

     SPEEDSCRIPT 

    5. SpeedScript

    5.1. SIMILARIDADE - SPEEDSCRIPT E 4GL PROGRESS 

    O SpeedScript é utilizado para desenvolver aplicações em ambiente WEB, sendo este umaimplementação do Progress 4GL. O conceito básico do Progress 4GL deve ser obedecido nouso do SpeedScript.

    5.1.1. Similaridade

    Regras de escopo e estrutura de blocos.Eventos do banco de dados como CREATE e DELETE de registros.Regras de LOCK de registros e transações.Uso das SmartDataObjects como fontes de dados.Uso do AppServer para requisitar processos.Pode ser desenvolvido usando o AppBuilder.

    5.1.2. Diferenças

    Programas escritos em 4GL são normalmente STATE-AWARE, enquanto aplicaçõesem SpeedScript são STATELESS (sem estado), onde:

    -  STATE-AWARE: Mantém o contexto enquanto houver conexão do Client com oagente. Como uma extensão do Progress Client, mantendo o escopo das variáveise Locks de registros e transações.

    -  STATELESS: Cada acesso ao Agent cria uma nova sessão Client do Progress.Com isso todos os escopos de variáveis e registros são novos.

    Eventos de objetos gráficos (GUI) não usados no SpeedScript, pois são gerenciadospelo HTML.O preprocessador {&OUT} é usado para indicar a saída de dados para uma páginaHTML.O bloco do processo de I/O para WEB é semelhante ao 4GL, mas comandos comoUPDATE e PROMPT-FOR, além de MESSAGE (VIEW-AS ALERT-BOX) e PAUSE nãopodem ser usados ou são simplesmente ignorados.São poucos os eventos que podem ser disparados em ambientes WEB. As triggers de

    bancos de dados funcionam sem problemas, e o evento essencial no SpeedScript é oWEB-NOTIFY. Entretanto, normalmente é usado apenas pelo programa de controle deagentes (WEB-DISP.P). Sendo assim, o comando WAIT-FOR não pode ser usado. Algumas procedures estão disponíveis em arquivos Includes e são acessados pelobotão Insert Call no Section Editor, sendo apropriados apenas em aplicaçõesWebSpeed:

    -  getWebState-  getWebTimeRemaining-  hidden-field-list-  set-cookie-  get-cookie

    Existem dois arquivos, admweb.i e html-map.i, que contém as chamadas apropriadasapenas para o uso em WebSpeed.

  • 8/15/2019 Apostila WebSpeed

    42/166

     SPEEDSCRIPT 

    SpeedScript possui algumas extensões especiais, incluindo o dispositivo de saída WEBvirtual (“WEB”) para definir a STREAM de saída da página WEB para o servidor WEB eo sistema de WEB-CONTEXT para acessar o ambiente de requisições. Entretanto,essas extensões estão em API’s ou includes definidas pelo WebSpeed. O uso dos

    preprocessadores {&OUT} e {&DISPLAY} ajudam a direcionar a saída para o padrãoWEB. Essas definições estão na include instalação-progress/src/web/method/cgidefs.i.

    5.2. SINTAXES E ELEMENTOS DO SPEEDSCRIPT 

    SpeedScript é um bloco estruturado, comando a comando, onde, o comportamento da Aplicação WebSpeed depende da organização dos comandos dentro dos blocos. Entretanto,as unidades básicas de execução das aplicações do WebSpeed são as linhas de comandos.

    Linhas de Comandos

     A sintaxe utilizada no SpeedScript é a mesma utilizada no 4GL. As linhas de comando sãofinalizadas por ponto (.) e os blocos são terminados com dois pontos (:).

    O SpeedScript não é case-sensitive, mas, por convenção, as palavras-chaves epreprocessadores do SpeedScript são colocadas em letras maiúsculas. As variáveis deambiente CGI definidas no SpeedScript são expressas em maiúsculas, entretanto,comparações com textos e queries de banco de dados podem ser case-sensitive, dependendodo contexto e especificações de comparação e query.

    Exemplo de SpeedScript

    /*------------------------------------------------------------------File:Description:Created:

    -------------------------------------------------------------------*/{&OUT} ' Primeiro exemplo usando SpeedScript! '.

     

    Exemplo localizado em: exemplo/capitulo5/exemplo05.html

    Este exemplo possui apenas o “{&OUT}” para realizar a saída da informação na página WEB,identificada como linguagem SpeedScript.

     Ainda é possível visualizar esse código pelo WorkShop. Para isto, basta acessar WebTools naopção Tools do menu. No WorkShop aberto, acessar Scripting Lab. Na área aberta paraedição, colocar o código do {&OUT} com o texto a ser mostrado.

  • 8/15/2019 Apostila WebSpeed

    43/166

     SPEEDSCRIPT 

    Comentários

    Dentro da área do SpeedScripts, é possível colocar comentários. Seu uso é idêntico ao uso no4GL, iniciando com “/*” e finalizando com “*/”. 

    Blocos

    Como no 4GL, para o SpeedScript o bloco é uma seqüência de um ou mais linhas decomandos, incluindo outros blocos. O funcionamento do bloco, incluindo o escopo de registrose variáveis são os mesmos do 4GL. A procedure externa é o bloco mais básico para oSpeedScript, pois pode conter uma ou mais linhas de comandos e é a menor unidade que podeser compilada separadamente. Objetos WEB são sempre procedures externas. Outracaracterística é que a procedure externa é o único bloco que necessita de uma sintaxe especialpara ser executada, enquanto os demais blocos continuam usando sua própria terminologiapara abrir os blocos e o comando END para encerrá-los.

     A diferença básica está na maneira de construir um aplicativo no SpeedScript. A interaçãoentre o Progress e o HTML acontece com o uso de TAGS específicas. Ao abrir e fechar asTAGS do SCRIPT, os blocos não necessitam ser abertos e fechados dentro de uma mesmaTAG SpeedScript. A abertura do bloco pode acontecer em um momento, separada porinformações da montagem do HTML e depois as TAGS SpeedScript para encerrar o bloco.

    WebSpeed Script

  • 8/15/2019 Apostila WebSpeed

    44/166

     SPEEDSCRIPT 

    /*------------------------------------------------------------------File:Description:Created:

    -------------------------------------------------------------------*/REPEAT WHILE TRUE: /* Inicia bloco de interação */ RUN maxCustomers.

    END. /* finaliza bloco de interação */ PROCEDURE maxCustomer: /* Inicia bloco de procedure interna */ FOR EACH customer USE-INDEX NAME NO-LOCK : /* Inicia bloco de interação */ IF customer.balance > 30000 THEN DO: /* Inicia bloco */ {&DISPLAY} customer. NAME customer.balance.

    END. /* Finaliza bloco */ END. /* Finaliza bloco de interação */ 

    END PROCEDURE. /* Finaliza o bloco de procedure interna */ 

     

    Exemplo localizado em: exemplo/capitulo5/exemplo06.html

    E o resultado final é semelhante a uma listagem.

    5.2.1. Executando Procedures e Objetos WEB

     A execução de procedures no SpeedScript é feita pelo comando RUN, podendo ser usado dediversas formas. O mais básico é a execução da procedure diretamente, sendo uma procedureinterna ou externa. Lembrando ainda que, como no 4GL, as procedures internas são

    identificadas pela palavra PROCEDURE na sua definição, enquanto a procedure externa é

  • 8/15/2019 Apostila WebSpeed

    45/166

     SPEEDSCRIPT 

    todo e qualquer tipo de conjunto de linhas de comandos. Ainda para as procedures, sejainterna ou externa, a passagem de parâmetros é a mesma aplicada no 4GL.

    Procedures Persistentes

    Quando uma procedure externa é executada de modo persistente, permanece em memóriacom todo seu contexto de variáveis e procedures internas mesmo depois do código principal(MAIN BLOCK) ter sido executado e finalizado. Isto nos permite a facilidade de instanciarobjetos WEB, no caso SpeedScripts. Isto é possível porque na execução da procedure, oendereço (HANDLE) do mesmo pode ser armazenado em variáveis, possibilitando seu acesso,mesmo depois do fim do MAIN BLOCK da procedure externa. Com o HANDLE da procedureexecutada persistentemente, é possível acessar suas procedures e funções internas. Mas paraisso é necessário utilizar a opção IN com a variável que contém o endereço da procedure.

    Procedures próprias do WebSpeed

    O WebSpeed possui um conjunto de procedures chamadas “Conventions”. A primeira delas é ométodo run-web-object, onde tem como finalidade executar um objeto WEB de uma outraprocedure. Outra procedure básica é a web-disp.p que é executada por objetos WEB,respondendo requisições WEB. O método run-web-object segue um padrão garantindo aintegridade do objeto WEB, seja STATELESS ou STATE-AWARE, permitindo ao WebSpeedgerenciar os objetos WEB. Este método é encontrado no objeto instalação-progress/src/web/objects/web-util.p.

     A outra convenção é sobre o disparo dos métodos. Ao executar a procedure, diversos métodospodem ser sobrescritos, mas sem alterar o método original. Assim a customização feita éexecutada antes e/ou depois da execução do método original. Os métodos estão definidos nainclude instalação-progress/src/web/method/admweb.i.

    5.2.2. Blocos e Contextos

    O contexto ou escopo de um bloco está ativo sempre do início ao fim do bloco. Os blocospodem ser divididos basicamente em dois tipos: Explícitos e Implícitos. Os blocos explícitosiniciam com comandos, como, por exemplo, o FOR EACH, REPEAT e DO seguidos de doispontos (:) e são finalizados com o comando END. Os blocos implícitos são as proceduresexternas com todo seu conteúdo. O escopo da procedure externa para o SpeedScript contémtodos os dados, objetos, triggers, procedures internas e funções.

    Uma trigger no SpeedScript é um comando ou bloco que responde a um evento doSpeedScript e é descrito com o comando ON. Apesar de limitados, os eventos no SpeedScriptsão importantes para o WebSpeed, sendo identificados pelos eventos chamados WEB-NOTIFY, CLOSE e os diversos eventos do banco de dados.

    Normalmente, qualquer dado ou objeto definido dentro do contexto de uma procedure, estarádisponível apenas para os comandos desta procedure. Entretanto, estas definições de objetose dados em outros tipos de blocos são parte do contexto da procedure e não apenas do blocoonde foram definidos.

    5.2.3. Contexto do Bloco e Escopo

    O contexto de alguns blocos ajuda a determinar o escopo de alguns recursos. Escopo é aduração de uma atividade na aplicação, estando dependente do tipo de comando utilizado e dacondição de execução da aplicação. O escopo é iniciado quando o recurso é instanciado efinalizado na sua destruição. Por exemplo, o comando FOR determina o escopo do buffer de

  • 8/15/2019 Apostila WebSpeed

    46/166

  • 8/15/2019 Apostila WebSpeed

    47/166

     SPEEDSCRIPT 

    Elementos da Sintaxe no Tempo de Execução

     As opções e frases associadas com comandos em tempo de execução, incluindocomponentes executáveis de comandos de cabeçalhos de blocos, exceto opções e

    frases que também estão associadas com comandos de tempo de compilação.Comandos de atualização e expressões não literais (variáveis, funções, atributos emétodos).

    Interação entre Tempo de Compilação e de Execução

    Como o SpeedScript é uma linguagem interpretada em tempo de execução, é possívelcombinar os dois tempos em diversos modos. Um exemplo bem simplista para esse caso, seriaa execução pelo comando RUN de outro programa.

    5.3. PREPROCESSADORES DO WEBSPEED 

    O preprocessador é uma função do 4GL que também é aplicável ao SpeedScript. O valor dopreprocessador é uma constante e onde for usado, no momento da compilação serásubstituído pelo valor que foi atribuído a ele. O uso do preprocessador no código fonte é entrechaves e a palavra é iniciada sempre com o caracter ‘&’. 

    O uso dos preprocessadores no WebSpeed facilita a utilização para o ambiente WEB,simplificando o desenvolvimento, especialmente, quando se deve referenciar a saída doSTREAM para WEB. Essas definições dos nomes dos preprocessadores estão localizadas eminstalação-progress/src/web/method/cgidefs.i.

    Preprocessadores do WebSpeed

    Nome do Preprocessador Valor Atribuído ao Preprocessador&WEBSTREAM STREAM Webstream&OUT PUT {&WEBSTREAM} UNFORMATTED&OUT-FMT PUT {&WEBSTREAM}&DISPLAY DISPLAY {&WEBSTREAM}

    5.4. API’S DO WEBSPEED 

    5.4.1. Gerenciamento de MensagensExiste um número de funções das API’s do WebSpeed para mensagens. Essas funções podemser localizadas em instalação-progress/src/web/method/message.i.

    Funções de Mensagens das API’s 

    Função Tipo Retorno Descriçãoavailable-messages Lógico Retorna TRUE se existe qualquer mensagem na fila

    para um grupo específico ou para todos os grupos.get-messages Caracter Retorna qualquer mensagem da fila para um grupo

    específico ou todos os grupos. Opcionalmente podeeliminar uma mensagem da fila.

    get-message-groups Caracter Retorna a lista de mensagens da fila separadas porvírgula.

  • 8/15/2019 Apostila WebSpeed

    48/166

     SPEEDSCRIPT 

    output-messages Inteiro Saída da mensagem para a WEB que estava na fila eretorna o número da mensagem que saiu. Inclui opçãopara formatar a saída e pode especificar um grupo demensagens ou todas as mensagens.

    queue-message Inteiro Enfileira a mensagem para posteriormente poder usá-lapelo método output-messages e retorna o número damensagem na fila. Opcionalmente, associa a mensagemcom um grupo específico.

    Gerando as Mensagens Diretamente

    Em SpeedScript, onde o código do programa controla a saída do HTML, é possível chamaruma função de mensagem da API diretamente. Na maioria dos casos, é necessário somente ouso do output-message e queue-message. Essas funções executam outras funções da API.

    5.4.2. Passando Informações entre Requisições WEBExistem quatro meios de passar informações entre requisições WEB:

    CookiesQuery String na URLCampos escondidos no FORMCampos dos Usuários.

     As três primeiras técnicas estão disponíveis para todos os objetos WEB, STATELESS ouSTATE-AWARE. Entretanto, campos dos usuários estão disponíveis apenas para uma simplesrequisição ou uma transação do WebSpeed.

    WebSpeed suporta todas as técnicas com funções de API’s ou métodos. Algumas funções sãoespecíficas para uma técnica e algumas combinam essas técnicas para disponibilizar asinformações para um objeto WEB.

    Cookies

    Os Cookies permitem passar informações como parte do cabeçalho HTTP da página WEB e éuma das técnicas mais usadas, pois pode identificar o usuário do WEB site. De fato, atransação WebSpeed depende na forma de passagem do cookie pelo programa de controle doagente de transação WebSpeed (web-disp.p) e o Broker.

    Funções da API de passagens de parâmetros por Cookie

    Função Tipo Retorno Descriçãodelete-cookie Caracter

    (Desconhecido ou ?)Elimina um Cookie específico pelo seu nome, URL,caminho e domínio na internet.

    get-cookie Caracter Dá um nome ao Cookie, retornando um ou mais valorescombinados, delimitados pelo valor da variável globalWebSpeed SelDelim, separado por vírgula. Se o nomedo Cookie é um valor desconhecido (?), retorna a listade todos os nomes de Cookies.

    set-cookie Caracter Retorna um cabeçalho Set-Cookie HTTP com opçõesespecíficas e retorna o valor do Cookie específico.

     As definições dessas funções estão no instalação-progress/src/web/method/cookies.i.

    Deve-se invocar as funções delete-cookie e set-cookie com o método output-header do objetoWEB. Nos objetos WEB do SpeedScript deve-se incluir a definição da procedure output-header

  • 8/15/2019 Apostila WebSpeed

    49/166

     SPEEDSCRIPT 

    no comando de saída da TAG. Para geração dos objetos WEB SpeedScript e HTML-Mapping,o WebSpeed possui uma definição da procedure output-header padrão que pode sermodificada no editor do WebSpeed.

    Query String na URL

    Estes são usados para passar faixas de informações, da requisição do CGI para valoresexplícitos colocados nos links dinâmicos. Existem diversas funções das API’s para facilitar aconstr ução e leitura das URL’s. 

    Funções de API’s para URL 

    Função Tipo Retorno Descriçãourl-decode Caracter Decodifica o formato de entrada da URL de métodos de

    requisição GET e CGI POST ou valores de Cookies codificados eretorna um texto decodificado.

    url-encode Caracter Codifica caracteres na URL por RFC 1738 sessão 2.2, disponívelem: URL:http://ds.internic.net/rfc/rfc1738.txt,  adicionandocaracteres ASCII entre 0 e 31 e entre 127 e 255. Opções podemmodificar a codificação para o Query Strings do endereço URL,Cookies persistentes, ou um texto específico de caracteres,retornando o texto codificado.

    url-field-list Caracter Codifica uma lista de pares de Nomes/Valores de uma lista denomes cujos valores são recuperados de uma requisição correntede uma função GET-VALUE. Parâmetros incluem o nome da listae o delimitador. Retorna uma lista codificada de pares deNomes/Valores.

    url-field Caracter Codifica pares de Nomes/Valores para usar como argumentos de“campos” no URL. Parâmetros incluem nomes, valores e

    delimitadores para cada par. Retorna o par Nome/Valorcodificado.url-format Caracter Formata uma URL de uma URL base, lista de nomes e

    delimitadores (A lista de nomes está codificada usando a url-field-list). Retorna a URL codificada.

     As definições dessas funções estão em instalação-progress/src/web/method/cgiutils.i.

    Para mais aplicações, a função url-format está na função principal da API para construir URL’s.Esta função chama as funções da tabela anterior. Para construir Query Strings na URL, deve-se também chamar a função set-user-field para montar o par nome/valor para o Query Strings.

    Para ler uma string de texto na URL, a função mais comum e fácil para usar é o get-value, que

    pesquisa diversos fontes para o valor associado com o nome.

    Query Strings da URL são limitados pela quantidade de informações por URL’s. Para umamaior lista de dados que podem ser acumulados na aplicação, deve-se usar camposescondidos.

    Campos Escondidos no Form

    Campos escondidos permitem passagens de parâmetros praticamente inesgotável nasrequisições WEB. Baseado na entrada de dados de um FORM é possível retornar valores decampos como campos escondidos para uma próxima requisição WEB, isto mantém um registrocorrente de dados entre objetos WEB para objetos WEB e de Agentes para Agentes.

    Funções para Campos Escondidos

    Função Tipo Retorno Descrição

    http://ds.internic.net/rfc/rfc1738.txthttp://ds.internic.net/rfc/rfc1738.txthttp://ds.internic.net/rfc/rfc1738.txt

  • 8/15/2019 Apostila WebSpeed

    50/166

     SPEEDSCRIPT 

    hidden-field Caracter Retorna um texto contendo um campo escondido no form doHTML com caracteres especiais do HTML codificados. Osparâmetros incluem o nome e valores dos campos.

    hidden-field-list Caracter Formata e retorna uma lista de campos escondidosdelimitados por uma nova linha de caracteres. Os parâmetrosincluem uma lista de nome de campos recuperados de umarequisição corrente

    Essas funções podem ser visualizadas em instalação-progress/src/web/methodcgiutils.i.

    Na maioria das aplicações, hidden-field-list é a principal função para construir camposescondidos, pois, pode-se definir um ou mais campos escondidos com ela. Para construir umalista de campos escondidos, a função set-user-field é usada para definir o par nome/valor paracada campo escondido, chamando em seguida a função hidden-field-list para construir oscampos escondidos da lista de campos do usuário.

    Para leitura dos campos escondidos individualmente, deve-se usar a função get-value.

    Campos dos Usuários

    WebSpeed possui uma lista global que permite os objetos WEB se comunicarem no mesmo Agente. Esta é a lista de campos dos usuários. Como uma estrutura de dados globais, muitosobjetos WEB são executados em uma única requisição WEB ou em uma mesma transação doWebSpeed, podendo passar informações em campos de usuários, sem passar parâmetros.

    Funções de Campos de Usuários

    Função Tipo Retorno Descriçãoget-user-field Caracter Retorna o valor associado de um campo de usuário específico

    que foi setado com a função set-user-field. Se um nome decampo de usuário é definido como desconhecido (?), a listainteira de campos de usuários é retornada.

    set-user-field Caracter Seta os valores associados para um campo de usuárioespecífico. Os parâmetros incluem os nomes e valores doscampos. Se o número de campos é menor ou igual a 255, afunção retorna TRUE, senão retorna FALSE.

    Estas funções estão armazenadas em instalação-progress/src/web/method/cgiutils.i.

    Campos de usuários são setados como Nome/Valor que mantém uma lista de variáveisWebSpeed globais do tipo caracter. Estes campos estão disponíveis, sem necessitar dedeclaração, para todos os objetos WEB executados no mesmo Agente para uma mesma

    requisição WEB ou transação do WebSpeed (Se o Agente estiver preso). Caso não exista umatransação do WebSpeed, os campos de usuários possuem um meio de passar dados entrediversos objetos WEB por uma simples requisição.

     A função set-user-field tem uma larga aplicação no WebSpeed. Setar os pares denomes/valores para diversos dados passando por funções, incluindo url-format, url-field-list(para Query Strings), hidden-field-list e get-value.

    5.4.3. Troca Geral de Informação

    WebSpeed suporta diversas funções para troca de informações.

    Funções para trocas de informações

  • 8/15/2019 Apostila WebSpeed

    51/166

     SPEEDSCRIPT 

    Função Tipo Retorno Descriçãoget-cgi Caracter Retorna o valor de uma variável CGI especificada, ou retorna a

    lista de todas as variáveis CGI se o nome da variávelespecificada for um valor desconhecido (?). Retorna em branco(“ ”) se o nome é inválido. 

    get-field Caracter Retorna um valor associado para um campo do formespecificado ou um Query Strings, ou retorna a lista de todos oscampos da form na requisição corrente se o nome do campoespecificado tem o valor desconhecido (?). Retorna branco (“ ”),se o nome é inválido.

    get-value Caracter Retorno o primeiro valor disponível associado com o nome deum campo de usuário, um campo do form, um Query Strings ouum cookie.Se o nome especificado tem o valor desconhecido (?),retorna a lista de todos os campos do usuário e cookies. Retornabranco (“ “) se o nome é inválido. Esta é a função mais usada. 

    html-encode Caracter Converte vários caracteres ASCII de uma string para umarepresentação HTML. Retorna uma string HTML codificada. Estafunção é normalmente usada para construir uma saída HTML deum programa SpeedScript. Entretanto, não se deve repetir aexecução de uma string para evitar a corrupção de umacodificação.

     As definições dessas funções estão no instalação-progress/src/web/method/cgiutils.i.

    5.4.4. Gerenciamento de Datas e Informação de Tempo

    Funções de Data e Hora

    Função Tipo Retorno Descriçãoconvert-datetime Caracter

    (Branco, “ “)  A entrada para conversão é uma data especificada com otipo de DATE do SpeedScript e a hora especificada comonúmero de segundos deste a meia-noite (função TIME). Asaída é a data e hora convertida da hora local para UTC, deUTC para hora local, ou normalizado para ter o número desegundos em um dia.

    format-datetime Caracter Formata e retorna uma data e hora para uso na WEB.Suporta formatos incluindo “COOKIE” e “HTTP". O formato“COOKIE” é usado para setar data de expiração do cookie.O formato “HTTP" é usado para datas em cabeçalhos HTTP.

     As definições dessas funções estão no instalação-progress/src/web/method/cgiutils.i.

    5.4.5. Gerando Cabeçalhos da Página WEB

    Para a função output-http-header ter qualquer efeito, deve-se executar antes a função output-content-type.

    Funções de Cabeçalhos para Página WEB

    Função Tipo Retorno Descriçãooutput-content-type Lógico Seta e retorna o cabeçalho MIME Content-Type

    seguido de uma linha em branco. Se o cabeçalho jáfoi retornado, nenhuma ação é tomada. Se o tipo doconteúdo especificado é branco, nenhum cabeçalho

  • 8/15/2019 Apostila WebSpeed

    52/166

     SPEEDSCRIPT 

    Content-Type é retornado, mas outros cabeçalhos,como um Cookies, são retornados seguidos de umalinha em branco. Retorna TRUE se o cabeçalhoContent-Type é retornado, caso contrário, retorna

    FALSE.output-http-header Caracter

    (Desconhecido, ?)Retorna o cabeçalho de um HTTP específico eassocia um valor, seguido por um retorno de carro(CR) e um linefeed (LF). Se o cabeçalho é branco, oCR e o LF ainda são retornados.

     As definições dessas funções estão no instalação-progress/src/web/method/cgiutils.i.

    5.4.6. Checando Opções de Configurações

    Existem funções que permitem alterar o comportamento da aplicação baseado no tipo doambiente onde o Agente do WebSpeed está sendo executando.

    Funções de Configuração

    Função Tipo Retorno Descriçãocheck-agent-mode Lógico Retorna TRUE se o Agente do WebSpeed está sendo

    executado em modo “Development”, “Production” ou“Evaluation”. Caso contrário, retorna FALSE. 

    get-config Caracter Retorna a configuração do valor especificado doWebSpeed Transaction Server.

     As definições dessas funções estão no instalação-progress/src/web/objects/web-util.p.

    5.5. EMBEDDED SPEEDSCRIPT

    Embedded SpeedScript constrói objetos WEB diretamente de um padrão de arquivos HTML,incluindo SpeedScript como uma linguagem de script.

    O arquivo Embedded SpeedScript é como um arquivo estático HTML, onde é possíveladicionar uma sessão SpeedScript usando comandos específicos.

    Exemplo de SpeedScript

    /*------------------------------------------------------------------File:Description:Created:

    -------------------------------------------------------------------*/FOR EACH customer WHERE customer. NAME BEGINS "S" NO-LOCK :DISPLAY {&WEBSTREAM} customer EXCEPT customer.comments.

    END.

  • 8/15/2019 Apostila WebSpeed

    53/166

     SPEEDSCRIPT 

     Exemplo localizado em: exemplo/capitulo5/exemplo07.html

    O bloco FOR está dentro do Embedded SpeedScript, onde o Embedded SpeedScript é

    referenciado pela tag HTML . Diferentemente do JavaScript que executanormalmente no client, SpeedScript executa o código inteiramente no WebSpeed TransactionServer. Com a execução no lado do servidor, o Embedded SpeedScript pode referenciarvariáveis e campos dos bancos de dados do objeto WEB de qualquer lugar do arquivo HTML.

    Com o uso do Embedded SpeedScript, o AppBuilder converte o arquivo HTML para um objetoWEB SpeedScript que gera a página WEB atual. Esta página WEB pode ser uma páginaestática simples ou uma página complexa e dinâmica.

    O Embedded SpeedScript pode gerar dois tipos de saídas para o WebSpeed:

    Objetos WEB completos, prontos para executar, podendo gerenciar saída e entradapara WEB.

    SpeedScript possui arquivos que podem incluir no código fonte do SpeedScript outroobjeto WEB para compilação futura.

    Entretanto, o Progress não consegue compilar HTML. O SpeedScript possibilita umdesenvolvimento fácil em HTML, podendo-se usar ferramentas próprias para isso. Porém, nacompilação dos programas, o Progress converte o SpeedScript para CGI Wrapper, colocandoas TAGS entre aspas e tirando a TAG SCRIPT para que possa compilar o código Progress.Esse processo é transparente para o desenvolvedor.

    5.6. COMO COLOCAR SPEEDSCRIPT NO HTML

    WebSpeed possui dois tipos básicos de opções para colocar SpeedScript no arquivo HTML:

    Comandos de escape.Expressões de escape.

    Comandos de escape permitem incluir um ou mais comandos SpeedScript completos noHTML, enquanto expressões de escape permitem incluir expressões SpeedScript que temformatos caracter. É possível codificar cada tipo de escape usando diferentes conjuntos decombinações de TAGS iniciais e finais. A escolha das TAGS minimiza a chance da ferramentausada de não aceitar o escape.

    5.6.1. Comandos de EscapeComandos de escape no Embedded SpeedScript

    Tag Inicial Tag Final Comentários 

    Suportado pela maioria das ferramentas.

  • 8/15/2019 Apostila WebSpeed

    54/166

     SPEEDSCRIPT 

    Mas algumas ferramentas podem não suportar isso.

    O comando escape pode fechar qualquer número de comandos SpeedScript completos. Outramaneira de usar isso é pelo

  • 8/15/2019 Apostila WebSpeed

    55/166

     SPEEDSCRIPT 

    `customer.custnum` `customer.name` `customer.phone`

     Exemplo localizado em: exemplo/capitulo5/exemplo09.htm