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