Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Treinamento de boas práticas de programação Out...

Treinamento de boas práticas de programação OutSystems

Roberto Almeida ([email protected])
Arianna Olivera ([email protected]

TrueChange Tecnologia

February 04, 2019
Tweet

More Decks by TrueChange Tecnologia

Other Decks in Technology

Transcript

  1. 2 • Etapa 1 (18/04) - Apresentação - Boas práticas

    Arquiteturais • Etapa 2 - Boas práticas na área de Dados - Boas práticas Lógicas • Etapa 3 - Boas práticas na Interface - Ferramentas Auxiliares Programação do treinamento
  2. 9 O que consome AOs? Consumo de AOs - Entities

    • Entities • Static Entities • Local Entities • External Tables (Via Integration Studio)
  3. 10 O que consome AOs? Consumo de AOs - Integrations

    • Consume REST/SOAP • Expose REST/SOAP • Consume SAP
  4. 11 O que consome AOs? Consumo de AOs - Screens

    • Web Screens • E-mail Screens • Mobile Screens • SMS Screens
  5. 12 Não Consome AOs • Site Properties • Session Variables

    • Timers • Process • Roles • Themes • Local Variables • Web Blocks • Structures • Referências a Entities • Consumo de API através do Integration Studio • Consumo de Actions de outros módulos
  6. 14 Our target when building a Solution Architecture • Aligned

    with Business strategy • Promotes reusability • Maintainable • Scalable • Performant Divisão arquitetural 4 layer Canvas
  7. 15 • Usability • Functionality • Efficiency • Maintainability •

    Portability • Reliability Building quality solutions
  8. 17 Why modular programming? Why is architecture important? • Abstraction:

    hide implementation • Isolation: easier to test and to maintain • Manage Complexity: tackle smaller problems • Efficient Teamwork: working on different modules at the same time
  9. 18 Modules • Data: Entities, Structures; • Logic: Actions, Roles;

    • UI: Screens, Images, Web Blocks, Themes; • Processes. Why is architecture important? Extension Modules • Integration with external systems • Developed in Integration Studio
  10. 19 What is the 4 Layer Canvas? Extensions, connectors, goodies,

    UI patterns Services around business concepts, exporting reusable entities, Business interfaces, processes and logic Mash-up of end user modules
  11. 20 • No upward references • No side references among

    orchestration or end-user modules • No cyclic references Validating the Architecture No end-user screens No business logic or core entities No role-based logic
  12. 30 Sempre que possível seguir o padrão 4 layer canvas.

    • Organização • Desacoplamento • Facilidade no entendimento • Padrão aconselhado pela OutSystems Padrão 4 layer Canvas
  13. 37 • Etapa 1 (18/04) - Apresentação - Boas práticas

    Arquiteturais • Etapa 2 (25/04) - Boas práticas na área de Dados - Boas práticas Lógicas • Etapa 3 - Boas práticas na Interface - Ferramentas Auxiliares Programação do treinamento
  14. 40 Duvidas Anteriores Application Object 400 AOs + 400 AOs

    + 400 AOs ... 3 Servidores + 1 Servidor ... 100 Usuários + 100 Usuários ...
  15. 52 • Consulta permanece durante a navegação • Informações temporárias

    relevantes • Problema de performance • Acesso global da informação Perigos e vantagens das Session Variables
  16. 53 1. Um índice é uma estrutura associada a uma

    tabela que acelera a recuperação de linhas de uma tabela ou exibição. 2. Ao definir entidades em Outsystems, é possível especificar índices, além daqueles criados automaticamente. Index
  17. 54 Índices automáticos • OutSystems cria automaticamente um índice, para

    cada chave estrangeira. • Índices automáticos são excluídos se a regra de DELETE for alterada para Ignorar. Index Índices personalizados • É possível definir seus próprios índices, e melhorar o desempenho das aplicações.
  18. 55 1. Criar índices compostos para campos que são muito

    usados em conjunto nas queries 2. Se um grupo de atributos for sempre utilizado em conjunto para fazer uma query 3. Índices em tabelas de lookup são importantes Por que usar Index?
  19. 57 • Protect • Delete • Ignore Cheque se as

    regras de delete das chaves estrangeiras estão corretas
  20. 61 • Não deve conter regras de negócios • Deve

    ter menos de 10 nós • Baixa complexidade • Fácil entendimento Preparation tem que ser bem simples
  21. 62 Mantenha o fluxo das Actions vertical, unidirecional, alinhado e

    compacto Vertical Unidirecional Alinhado Compacto
  22. 67 • Diminui a complexidade • Facilita o entendimento •

    Possibilita o reuso • Melhora a manutenção Encapsule lógicas em Actions separadas
  23. 73 • Numero de requisições ao banco pode ser exponencial

    • Problema grave de performance • Em muitos casos pode ser resolvido com um JOIN Cuidado com Aggregates dentro de For Each
  24. 74 • Deve ter obrigatoriamente apena 1 Parâmetro de saída.

    • Pode ter Múltiplos Parâmetros de Entrada • Pode ser usada em qualquer Expression Encapsule dados no formato de Funções
  25. 76 Pascal Case é a prática de escrever palavras compostas

    ou frases de modo que cada palavra ou abreviatura comece com uma letra maiúscula. Ex: “FedEx”, “HarperCollins”, “PropertyDescriptor” e “HtmlTag” Usar PascalCase
  26. 77 Todas as Actions que forem usadas por um Timer

    deve ser acompanhada do prefixo “Timer_” para facilitar a identificação. Usar o prefixo “Timer_” quando a Action for usada por um Timer
  27. 79 • O consumo de CADA método REST/SOAP consome 1

    AO • A exposição de CADA método REST/SOAP consome 1 AO • Muita atenção ao expor e consumir REST/SOAP dentro da mesma aplicação Cuidados com o consumo de AOs nas Integrações