Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Alessandro Martins Technical Architect Field Services Latin America Operations Moderna Arquitetura de Aplicações OpenEdge Reference Architecture – uma visão em camadas Usuários Camadas de apresentação e integração separadas Simplify your business Lógica de negócio comum com modelos avançados Acesso a dados abstraído do repositório 2 © 2005 Progress Software Corporation Camada de Apresentação Serviços Corporativos Camada de Integração Camada de Serviços de Negócio Camada de Acesso a Dados Repositório de Dados Gerenciado Repositório de Dados Não-gerenciado Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Agenda Simplify your business 3 Introduzindo a Camada de Interface de Serviços Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II SOA – Modelo de interação baseado em serviços Broker/ Serviço de Diretório Buscar / Detalhes Consumidor do Serviço Publicar Vincular/ Invocar Provedor do Serviço Serviços Corporativos Simplify your business Tarefa Negócio Tarefa Negócio Tarefa Negócio 4 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Serviços de apoio gerenciador pelo Contêiner Simplify your business Gerencia/o de Pedidos © 2005 Progress Software Corporation Lógica Servidor Gerência de Sessão/Contexto Contêiner de Serviços Interface de Serviços Controle de Transações Proxy de Serviço Segurança Contêiner de Apresentação 5 Lógica Cliente Fn() … Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II A Interface de Serviços na Arquitetura Serviços Corporativos Usuários Camada de Apresentação Interface de Serviços Camada de Integração Camada de Serviços de Negócio Simplify your business Camada de Acesso a Dados Repositório de Dados Gerenciado 6 © 2005 Progress Software Corporation Repositório de Dados Não-gerenciado Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Papel da Camada de Interface de Serviços de Exemplo Gerencia entidades do lado servidor – Mantém um catálogo em memória das instâncias em execução Simplify your business 7 Fornece acesso de chamada única padronizado a procedures localizadas no lado servidor Provê uma API única e simplificada do cliente para o servidor e vice-versa © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II A Camada de Interface de Serviços Cliente Servidor Data-Access Object Procedure IU RUN fetchOrder IN hdsOrder (. . . , OUTPUT DATASET dsOrder Simplify your business BY-REFERENCE) Procedure Proxy Cliente DATASET dsOrder Procedure Gateway Servidor Business Entity DATASET dsOrder DATASET dsOrder fetchWhere: RUN FetchWhere IN hEntity FILL ATTACH (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) Interface de Serviços 8 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Proxy SI (Service Interface) do lado cliente Procedure de Procedure Proxy Interface de Usuário Cliente proSIproxy.p dsOrderWinAdv.w Simplify your business {dsOrder.i} {proSIproxyStart.i} … RUN fetchWhere IN ghProxySIproc (INPUT “Order”, INPUT ttContextDSOrder, OUTPUT DataSet dsOrder). PROC fetchWhere: RUN proSIgateway.p ON hAppServer (INPUT “Order”, INPUT “fetchWhere”…) … (chamada ao gateway do lado servidor) 9 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Procedures SI do lado servidor (chamada da sessão do cliente) Procedure da lógica Procedure gateway do lado servidor proSIgateway.p hEntity = getEntityHandle in hSI. RUN fetchWhere in hEntity Simplify your business … de negócio do servidor proSIserver.p DEFINE T-T ttEntity… FN startEntity: FN getEntityHandle: /* entity temp-table lookup */ FN getDAOHandle: (chamada à API de Business Entity) 10 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II API da Procedure Gateway Cinco parâmetros padrão – Nome da entidade lógica – Nome da operação lógica – Temp-table de contexto/parâmetros para passar quaisquer valores relacionados por entre as camadas – ProDataSet OUTPUT ou INPUT-OUTPUT Simplify your business Dependendo se a definição do ProDataSet ou seus valores necessitem ser passados – Parâmetro de saída (OUTPUT) de status para tratamento de exceções Default útil para muitas operações – Utilizando APIs e procedures customizadas para operações especiais 11 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Agenda Simplify your business 12 Introduzindo a Camada de Interface de Serviços Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Gerenciando instâncias de ProDataSets Qual objeto “é o dono” da instância do ProDataSet no servidor e no cliente? ProDataSets podem ser passados BYREFERENCE para evitar cópia A instância do chamador é sempre utilizada, mesmo em caso de OUTPUT Simplify your business – Nota: Isto será estendido na versão 10.1 para suportar um modelo “pull” onde a instância da procedure chamada é utilizada 13 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Instâncias de ProDataSet em OUTPUT Cliente Servidor Procedure IU Business Entity Data-Access Object DATASETBY-REF (. . . , OUTPUT DATASET dsOrder Simplify your business BY-REFERENCE) 14 Procedure de Prox yde Cliente RUN fetchOrder IN hdsOrder HANDLE HANDLE © 2005 Progress Software Corporation Procedure de Gateway de Servidor DATASET dsOrder DATASET dsOrder BY-REF DATASET dsOrder RUN FetchWhere fetchWhere: IN hEntity FILL (. . ., ATTACH OUTPUT DATASET phFetchDataSet BY-REFERENCE) Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Agenda Simplify your business 15 Introduzindo a Camada de Interface de Serviços Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Gerenciameneto de Contexto: Conceitos Básicos Simplify your business Ambiente-alvo é cliente de um AppServer state-less ou state-free Cada interação é independente Manutenção de contexto entre interações inter-relacionadas 16 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Passando Contexto entre Cliente e Servidor Simplify your business Temp-table de Contexto/Parâmetros passa contexto por entre as camadas Campos de nome e valor permitem flexibilidade Contexto é mantido no cliente Útil para pequenas quantidades de dados – Também para contexto utilizado e modificado no cliente 17 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Contexto entre Cliente e Servidor Servidor Cliente Business Entity Procedure IU DATASET dsOrder IN hdsOrder (. . . , OUTPUT DATASET dsOrder Simplify your business BY-REFERENCE) 18 Procedure de Prox yde Cliente RUN fetchOrder temp-table de contexto/parâmetros WhereString = “…” NextRowid = 63524 © 2005 Progress Software Corporation Procedure de Gateway de Servidor DATASET dsOrder RUN FetchWhere IN hEntity (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Contexto Mantido no Servidor Mantém contexto em um repositório de dados compartilhado no servidor – Tipicamente uma tabela na base de dados Útil para evitar que toda da informação de contexto passe do cliente para o servidor – Contexto de sessão que não mudam, como autorização Simplify your business Requer que um Context ID seja passado pelo cliente – Suporte a Group UID no exemplo e na 10.1 19 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Contexto Armazenado no Servidor Servidor Cliente Business Entity Procedure IU DATASET dsOrder IN hdsOrder (. . . , OUTPUT DATASET dsOrder Simplify your business BY-REFERENCE) Procedure de Prox yde Cliente RUN fetchOrder temp-table de contexto/parâmetros ContextID = 95847 Procedure de Gateway de Servidor DATASET dsOrder RUN FetchWhere IN hEntity (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) 95847 English Auth … 20 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II ProDataSet e Temp-table de Contexto Armazena dados recuperados em uma tabela de contexto – Para clientes Web leves ou outros clientes que não possuem suporte a ProDataSets – Campos RAW e BLOBs para armazenamento genérico Armazena atualizações sucessivas antes de realizar o commit Simplify your business – Permite validação parcial no servidor – ProDataSet final de atualização reconstruído a partir do contexto 21 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Dados de ProDataSets ou Temptables como Contexto Servidor Cliente Business Entity Procedure de IU DATASET dsOrder ContextID = 95847 IN hdsOrder (. . . , OUTPUT DATASET dsOrder Simplify your business BY-REFERENCE) Procedure de Prox yde Cliente RUN fetchOrder “OrderNum = 1” 95847 Order 1 Line 1 Procedure de Gateway de Servidor DATASET dsOrder RUN FetchWhere IN hEntity (. . ., OUTPUT DATASET phFetchDataSet BY-REFERENCE) 95847 Order 1 Line 1 95847 Order 1 Line 2 22 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Agenda Simplify your business 23 Introduzindo a Camada de Interface de Serviços Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Artigo: Usando Repositórios de dados não Gerenciados Using an Unmanaged Data Source Simplify your business 24 Usa um documento XML no lugar de uma base de dados Procedure de data source alternativa identifica o documento Código específico popula o ProDataSet Restante do código do Business Entity roda sem modificações © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Artigo: Interface .NET Simples a Business Entities Building an Alternative User Interface to Business Entities Simplify your business 25 Gerador de código cria um arquivo XSD com a descrição do DataSet Com isto, cria também um arquivo de classe C# para o DataSet A versão C# do proxy cliente roda a mesma procedure gateway no AppServer A classe DataSet C# é usada para construir a IU © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Artigo: Lógica de Negócio Avançada Advanced Business Logic Simplify your business O papel das procedures de trigger de base de dados Um Business Entity acessando outro Um Data Access Object acessando outro Quando permitir acesso direto à base de dados 26 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II A Implementação de Referência e as Versões Futuras Novas extensões significativas da linguagen planejadas para 10.1 e futuro – Elementos de orientação a objetos (Ex. classes) – Auditoria e outros serviços providos pelo produto Simplify your business 27 Materiais a serem revisados e estendidos para aderir às melhores práticas do OpenEdge 10.1 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Agenda Simplify your business 28 Introduzindo a Camada de Interface de Serviços Gerenciando instâncias de ProDataSets Gerenciamento de Contexto Tópicos Adicionais e Futuro Conclusões © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Resumindo… Simplify your business Pense sobre e planeje os serviços em sua aplicação Pense sobre quais objetos controlam os dados Pense sobre contexto e outros aspectos de uma servidor de aplicações stateless 29 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Simplify your business Perguntas? 30 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Simplify your business Grato pelo seu Tempo! 31 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II Simplify your business 32 © 2005 Progress Software Corporation Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte II