implementando a arquitetura de referência openedge (oera) - parte i implementando a arquitetura de...
TRANSCRIPT
Implementando a Implementando a Arquitetura de Arquitetura de Referência OpenEdge Referência OpenEdge (OERA) - Parte I(OERA) - Parte I
Alessandro MartinsTechnical ArchitectField Services Latin America Operations
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation2 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
AgendaAgenda
Introduzindo a implementação de referência
Business Entities e Data Access Objects Pontos de discussão sobre Lógica de
Negócio Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation3 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Camadas de apresentação e integração separadas
Acesso a dadosabstraído
do repositório
Lógica de negóciocomum com modelos
avançados
OpenEdge Reference Architecture – uma visão em camadas
Usuários Usuários
Camada de Apresentação
Camada de Serviços de Negócio
Camada de Acesso a Dados
Repositóriode Dados Gerenciado
Repositóriode Dados Gerenciado
Repositóriode Dados
Não-gerenciado
Repositóriode Dados
Não-gerenciado
Serviços Corporativos Serviços Corporativos
Camada de Integração
Moderna Arquitetura de AplicaçõesModerna Arquitetura de Aplicações
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation4 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Quais são os objetivos da Quais são os objetivos da Implementação de Referência?Implementação de Referência?
Prover um entendimento da OpenEdge Reference Architecture pela descrição de uma implementação de exemplo
Auxiliar na compreensão das melhores práticas no uso dos recursos do OpenEdge
Motivar arquitetos e desenvolvedores a pensar em aplicar a Arquitetura em seus próprios projetos
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation5 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
O que O que não não são objetivos?são objetivos?
Não se trata de um novo framework Não pretende ser abrangente ou cobrir
todos os casos possíveis para a aplicação Não possui a intenção de ser
comercializado Não possui a intenção de ser utilizado
sem mudanças, extensões ou estudo
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation6 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Como devo usar a Implementação de Como devo usar a Implementação de Referência?Referência?
Use-a para aprender os conceitos da Arquitetura mais profundamente
Use-a para aprender como melhor utilizar os constructos do Progress 4GL e outros recursos
Considere-a como um ponto de partida potencialmente útil no desenvolvimento de aplicações sobre OpenEdge 10
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation7 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Que recursos estão disponíveis?Que recursos estão disponíveis?- Artigos e Códigos de Exemplo- Artigos e Códigos de Exemplo
1. Introduction
2. Business Entities and Data Access Objects
3. The Service Interface Layer
4. Using Advanced ProDataSet Language Features
5. Using an Unmanaged Data Store
6. Building a .NET™ Interface to Business Entities
7. Advanced Business Logic Issues
8. Context Management
9. Building a WebSpeed® User Interface
10. …
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation8 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
O que há na base de código da O que há na base de código da Implementação de Referência?Implementação de Referência?
Diretório Templates– Procedures de modelo para BE’s, DAO’s etc.
Diretório Support– Super-procedures e procedures em geral para
apoio Diretório Samples
– Exemplos dos códigos presentes nos artigos– Usam a base sports2000 mas não há nada
específico sobre bases de dados em qualquer código
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation9 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Onde eu encontro tudo isto?Onde eu encontro tudo isto?
Os artigos e o código de exemplo estão no site do PSDN:– psdn.progress.com/library/product_info/
oera/index.ssp Há atualizações em andamento Material em vias de lançamento
descreverá as melhores práticas para se usarOpenEdge 10.1 e seus recursos OO4GL
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation10 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation11 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
AgendaAgenda
Introduzindo a implementação de referência
Business Entities e Data Access Objects Pontos de discussão sobre Lógica de
Negócio Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation12 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
O O Business Entity Business Entity e o e o Data Access Data Access ObjectObject na Arquitetura na Arquitetura
Usuários Usuários
Camada de Serviços de Negócio
Camada de Acesso a Dados
Repositóriode
Dados Gerenciado
Repositóriode
Dados Gerenciado
Repositóriode
Dados Não-gerenciado
Repositóriode
Dados Não-gerenciado
Serviços Corporativos
Serviços Corporativos
Camada deIntegração
Business Entity
Data Access Object
Camada de Apresentação
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation13 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Business EntityBusiness Entity Gerencia a visão lógica, interna dos dados da
aplicação– Fornece dados para a interface com o usuário e
outras camadas de integração– Contém lógica de negócio
Dados são melhor representados como ProDataSets e suas temp-tables
O Business Entity é o valor central da construção de aplicações em OpenEdge
Business
Entity
Data Access
Object BBIU API API
lógico físico
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation14 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Data Access ObjectData Access Object
Gerencia o repositório de dados físico– Entende o esquema e outras descrições dos
dados físicos– Mapeia entre a visão física e a visão lógica
Todas as referências a dados físicos devem estar confinados ao Data Access Object
Business
Entity
Data Access
Object BDIU API API
lógico físico
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation15 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
ProDataSet
O O ProDataSetProDataSet como um Bloco de como um Bloco de ConstruçãoConstrução
Data-Relation1
CustomerTT
1 Lift Line Skiing2 Urpon Frisbee3 Hoops Croquet
OrderTT
6 1 01/05/9336 1 01/19/9379 1 02/10/93
Base de Dados
Customer
Lift Line SkiingUrpon FrisbeeHoops Croquet
Order
1 53 01/01/932 81 01/04/933 66 01/04/93
Event LogicDataset:Before-fillBuffer:Before-fillBefore-row-fillRow-AddRow-Delete…
Data-Source1Field Map
CustNumNameContact
Data-Source2Field Map
OrderNumCustNum
OrderDate
Query…Q1 forCustomer
Query…Q2 forOrder
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation16 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Construindo os Objetos –Construindo os Objetos –Definição das Temp-tablesDefinição das Temp-tables
Definir temp-tables para as definições lógicas dos dados– Cada temp-table em seu próprio arquivo de
include
DEFINE TEMP-TABLE eOrder
FIELD OrderNum…
DEFINE TEMP-TABLE eOrderLine
FIELD OrderNum…
FIELD LineNum…
etOrder.i
etOrderLine.i
Separar definições físicas das lógicas
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation17 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Linhas mestras para Definições das Linhas mestras para Definições das Temp-tableTemp-table
Prefixo do nome da tabela: e
– Por exemplo: eCustomer
Prefixo do nome do arquivo de include: et– etCustomer.i
Renomear campos para consistência ou melhorar compreensão
Remover elementos:
– Campos– Índices
Adicionar outros campos provenientes de Joins
Adicionar campos calculados que possam ser requeridos por facilidade de uso
Adicionar BEFORE-TABLE ao final da definição no caso de se fazer alterações
Não usar a sintaxe LIKE– Temp-table LIKE
database-table– Field LIKE database-field
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation18 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
TEMP-DB Maintenance Tool (10.0B)TEMP-DB Maintenance Tool (10.0B)
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation19 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Construindo os Objetos – Construindo os Objetos – Data-Source ObjectsData-Source Objects Construir as procedures correspondentes
aos objetos de Data-Source– Cada objeto mapeia uma temp-table ao
dado físico correspondente.
etOrder.i
etOrderLine.i
DEFINE DATA-SOURCE srcOrder
FOR QUERY qOrder.
ATTACH-DATA-SOURCE()
DEFINE DATA-SOURCE srcOrderLine
FOR BUFFER OrderLine.
ATTACH-DATA-SOURCE()
sceOrder.p
sceOrderLine.p
Base de Dadosda Aplicação
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation20 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Construindo os Objetos –Construindo os Objetos –Definições dos ProDataSetsDefinições dos ProDataSets
Definir ProDataSets para conjuntos de dados relacionados– Cada ProDataSet é a base para um
Business Entity
DEFINE DATASET dsOrder
FOR eOrder, eOrderline…
etOrder.i
etOrderLine.i
dsOrder.i
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation21 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Construindo os Objetos – Construindo os Objetos – Data Access ObjectData Access Object
Construir os Data Access Objects para o ProDataSet– Gerencia todos os Data-Source Objects
daOrder.p
sceOrderLine.p
dsOrder.i
sceOrder.p
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation22 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Todos os componentes de acesso a Todos os componentes de acesso a dados juntosdados juntos
Base de Dados da Aplicação
daSupport.p
initDataSources:
SUPER
SUPER
SUPER
daOrderValidate.p(opcional)eOrderLineModifyBeginTrans:
sceOrder.pDEF DATA-SOURCEATTACH-DATA-SOURCERowFill handler
sceOrderLine.pDEF DATA-SOURCEATTACH-DATA-SOURCE
sceItem.pDEF DATA-SOURCEATTACH-DATA-SOURCE
daOrder.p
{dsOrder.i}{daEntity.i}
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation23 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Construindo os Objetos –Construindo os Objetos –Business EntitiesBusiness Entities
Construir um Business Entity para cada ProDataSet– Lida com a lógica de negócio sobre os dados lógicos.– Define a API para acesso a partir de outros objetos.
DEFINE DATASET dsOrder
FOR eOrder, eOrderline…
BusinessLogic:
END PROCEDURE.
etOrder.i
etOrderLine.i
dsOrder.i
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation24 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Componenets Business Entity Componenets Business Entity JuntosJuntos
beOrder.p
{dsOrder.i}{beEntity.i}
beEntity.i
RUN daOrder.p
dsOrder.i
{etOrder.i} {etOrderLine.i} {etItem.i}
DEFINE DATASET…
beOrderValidate.p(optional)
eOrderLineModifyPreTrans:
beSupport.p
fetchCustomsaveChanges
SUPER
SUPER
Data Access Object
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation25 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
AgendaAgenda
Introduzindo a implementação de referência
Business Entities e Data Access Objects Pontos de discussão sobre Lógica de
Negócio Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation26 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Pontos de discussão sobre lógica dos Pontos de discussão sobre lógica dos Business EntitiesBusiness Entities
Quão estritamente devo aderir à separação de lógicas?– Devo usar uma chamada de API apenas para um
CAN-FIND?
– Devo deferir isto a uma trigger de base de dados? Quanto do comportamento padrão deve ser
automatizado por “mágica”? Como eu ajusto a lógica para permitir reuso de
tabelas por parte de outros ProDataSets? Qunado eu devo usar referências a temp-tables
ou ProDataSets estáticas ou dinâmicas?
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation27 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Acessando outras Entities Acessando outras Entities através de suas APIsatravés de suas APIs
Evitar acesso direto à base de dados para outras tabelas a partir de seus Business Entities
FIND eOrder WHERE eOrder.OrderNum = eOrderLine.OrderNum {&NoError}.
hCustomer = SIfindRow("Customer", "eCustomer", "CustNum", STRING(eOrder.CustNum)) .
IF hCustomer:BUFFER-FIELD("Discount"):BUFFER-VALUE < .35 THEN
DO:
ASSIGN BUFFER eOrderLine:ERROR = YES
BUFFER eOrderLine:ERROR-STRING =
"Line " + STRING(eOrderLine.LineNum) +
": Changes not allowed … ".
RETURN.
END.
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation28 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Comportamento “Mágico” PadrãoComportamento “Mágico” Padrão
PROCEDURE initDataSources :
IF LOOKUP(phDataSet:NAME + "BeforeFill", cEntries) NE 0 THEN
phDataSet:SET-CALLBACK-PROCEDURE
("BEFORE-FILL", phDataSet:NAME + "BeforeFill",
TARGET-PROCEDURE).
IF LOOKUP(phDataSet:NAME + "AfterFill", cEntries) NE 0 THEN
phDataSet:SET-CALLBACK-PROCEDURE
("AFTER-FILL", phDataSet:NAME + "AfterFill",
TARGET-PROCEDURE).
Procedures de callback chamadas através de uma convenção de nomenclatura
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation29 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Organizando a Lógica para Máximo Organizando a Lógica para Máximo ReusoReuso Lógica que referencia mais de uma tabela no
ProDataSet– Deveria ser colocada dentro do próprio Data
Access Object
PROCEDURE eOrderLineAfterFill:
DEFINE INPUT PARAMETER DATASET FOR dsOrder.
DEFINE VARIABLE dTotal AS DECIMAL NO-UNDO.
FOR EACH OrderLine WHERE OrderLine.OrderNum =
eOrder.OrderNum:
dTotal = dTotal + OrderLine.ExtendedPrice.
END.
eOrder.OrderTotal = dTotal.
END PROCEDURE.
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation30 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Código Estático X Código DinâmicoCódigo Estático X Código Dinâmico
PROCEDURE eItemAfterRowFill:
DEFINE INPUT PARAMETER DATASET-HANDLE phDataSet.
….
hItemName = phDataSet:GET-BUFFER-HANDLE("eItem"):BUFFER-FIELD("ItemName").
DO iType = 1 TO NUM-ENTRIES(cItemTypes):
cType = ENTRY(iType, cItemTypes).
IF INDEX(hItemName:STRING-VALUE, cType) NE 0 THEN
hItemName:BUFFER-VALUE =
REPLACE(hItemName:BUFFER-VALUE, cType, cType).
END.
END PROCEDURE.
Referências dinâmicas às temp-tables permitem reutilização
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation31 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
AgendaAgenda
Introduzindo a implementação de referência
Business Entities e Data Access Objects Pontos de discussão sobre Lógica de
Negócio Conclusões
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation32 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Resumindo...Resumindo... Examinar os materiais da implementação-
exemplo como base para aprendizado e discussão
Utilizar as partes úteis Estender ou substituir parter para seus
própositos Deve-se esperar que continue crescendo e
mudando Não se deve esperar que seja
completamente (ou mesmo formalmente) suportado
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation33 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Perguntas?Perguntas?
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation34 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I
Grato pelo seu Grato pelo seu tempo!tempo!
Sim
plify
you
r bu
sin
ess
Sim
plify
you
r bu
sin
ess
© 2005 Progress Software Corporation35 Implementando a Arquitetura de Referência OpenEdge (OERA) - Parte I