livraria duwamish

66
 A Aplicação Exemplo Livraria Duwamish Bem-vindo ao exemplo da Livraria Duwamish. Iremos disponibilizar o exemplo em fases, cada uma representando os passos de migraço de um sistema !des"top# simples de uma $nica lo%a para um sistema de venda a vare%o escalon&vel baseado na Internet. 'trav( s desta s(rie de artigos esperamos destacar assuntos como o pro%eto de componentes no n)vel intermedi&rio *middle-t ier+ e o pro%eto e acesso a um banco de dados distribu)do. or isso, nosso ob%etivo no ( providenciar um sistema completo de venda a vare%o, mas um subcon%unto de um poss)vel sistema ue poder& ser usado como uma ferramenta de aprendizado. 't( o momento, disponibilizamos e documentamos as seguintes fases Livraria Duwamish, /ase 0 Livraria Duwamish, /ase 1 Livraria Duwamish, /ase 2 Livraria Duwamish, /ase 2.3 ara uma introduço ao exemplo, um resumo do caminho da migraço, e uma viso geral de aruiteturas em n)veis *tier+, leia o artigo introdut4rio "Uma Introdução ao Exemplo Livraria Duwamish" Descreve o exemplo Livraria Duwamish. Inclui /uncionalidades b&sicas. 5 cen&rio da migraço. 5 modelo de aruitetura em n)veis usado pela migraço. Inclu)mos agora 6p&ginas de )ndice6 ue fornecem lin"s 7s seç8es dos artigos da Livraria Duwamish. 9stes lin"s so separados em categorias por t4picos espec)ficos de desenvolvimento :4picos ;erais de ro%eto de 'plicaç8es /ornece lin"s para alguns dos mais importantes conceitos de desenvolvimento, com uma ampla aplicaço al(m do escopo deste exemplo. :4picos de 'ruiteturas em <amadas 's tr=s camadas l4gicas ue implementaremos podem ser encontradas na maioria das aplicaç8es comerciais. :4picos de Banco de Dados e /luxo de Dados /ornece lin"s aos artigos de assuntos ue tratam de estruturas de dados e algoritmos complement ares usados nos nossos sistemas de cat&logo, estoue e gerenciamento de pedidos. >m ;uia asso a asso para a 9strat(gia de 'cesso aos Dados da Livraria Duwamish Descreve a estrat(gia de acesso aos dados para a migraço da Livrarias Duwamish. Livraria Duwamish, Fase 1  ?a /ase 0, a apli caço exemplo ( desenvolvida para uma $nica lo%a de venda, baseado n a aruitetura de aplicaço cl&ssica e monol)tica . ara montar o exemplo ou para ver o c4digo fonte, ve%a a p&gina @etup da /ase 0 e <4digo /onte. 'ui esto os artigos ue documentam a /ase 0 do exemplo "onstruindo uma Aplicação de !olicitação e Acompanhamento de edidos" !olicitação de edidos da Livraria Duwamish, Fase 1 Descreve a aplicaço de @olicitaço de edidos. <onhecimento em Aisual Basic a 'D5 ser& $til. *02 p&ginas impressas+ 9xplica <ompartilhando interface s de usu&rio com outras aplicaç8es.

Upload: zerocalls

Post on 12-Apr-2018

235 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 1/66

A Aplicação Exemplo Livraria DuwamishBem-vindo ao exemplo da Livraria Duwamish. Iremos disponibilizar o exemplo em fases, cada uma representandoos passos de migraço de um sistema !des"top# simples de uma $nica lo%a para um sistema de venda a vare%oescalon&vel baseado na Internet. 'trav(s desta s(rie de artigos esperamos destacar assuntos como o pro%eto de

componentes no n)vel intermedi&rio *middle-tier+ e o pro%eto e acesso a um banco de dados distribu)do. or isso,nosso ob%etivo no ( providenciar um sistema completo de venda a vare%o, mas um subcon%unto de um poss)velsistema ue poder& ser usado como uma ferramenta de aprendizado.'t( o momento, disponibilizamos e documentamos as seguintes fases

• Livraria Duwamish, /ase 0

• Livraria Duwamish, /ase 1

• Livraria Duwamish, /ase 2

• Livraria Duwamish, /ase 2.3ara uma introduço ao exemplo, um resumo do caminho da migraço, e uma viso geral de aruiteturas em n)veis*tier+, leia o artigo introdut4rio

"Uma Introdução ao Exemplo Livraria Duwamish"

Descreve o exemplo Livraria Duwamish. Inclui• /uncionalidades b&sicas.

• 5 cen&rio da migraço.

• 5 modelo de aruitetura em n)veis usado pela migraço.Inclu)mos agora 6p&ginas de )ndice6 ue fornecem lin"s 7s seç8es dos artigos da Livraria Duwamish. 9stes lin"s soseparados em categorias por t4picos espec)ficos de desenvolvimento

• :4picos ;erais de ro%eto de 'plicaç8es/ornece lin"s para alguns dos mais importantes conceitos de desenvolvimento, com uma ampla aplicaçoal(m do escopo deste exemplo.

• :4picos de 'ruiteturas em <amadas's tr=s camadas l4gicas ue implementaremos podem ser encontradas na maioria das aplicaç8escomerciais.

• :4picos de Banco de Dados e /luxo de Dados/ornece lin"s aos artigos de assuntos ue tratam de estruturas de dados e algoritmos complementaresusados nos nossos sistemas de cat&logo, estoue e gerenciamento de pedidos.

• >m ;uia asso a asso para a 9strat(gia de 'cesso aos Dados da Livraria DuwamishDescreve a estrat(gia de acesso aos dados para a migraço da Livrarias Duwamish.

Livraria Duwamish, Fase 1

 ?a /ase 0, a aplicaço exemplo ( desenvolvida para uma $nica lo%a de venda, baseado na aruitetura de aplicaçocl&ssica e monol)tica. ara montar o exemplo ou para ver o c4digo fonte, ve%a a p&gina @etup da /ase 0 e <4digo

/onte. 'ui esto os artigos ue documentam a /ase 0 do exemplo"onstruindo uma Aplicação de !olicitação e Acompanhamento de edidos"

!olicitação de edidos da Livraria Duwamish, Fase 1Descreve a aplicaço de @olicitaço de edidos. <onhecimento em Aisual Basic a 'D5 ser& $til. *02 p&ginasimpressas+ 9xplica

• <ompartilhando interfaces de usu&rio com outras aplicaç8es.

Page 2: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 2/66

• 9xemplos de <4digo.

• r4s e contras do pro%eto de aplicaço para a migraço.

"oordenando as #endas e o Esto$ue"

ontos de #enda da Livraria Duwamish, Fase 1

Descreve a aplicaço de ontos de Aenda. <onhecimentos em Aisual Basic, pro%eto b&sico de banco de dados, e aaplicaço de @olicitaço de edidos da Livraria Duwamish sero $teis. *0 p&ginas impressas+ Discute• <riando uma venda, incluindo os atributos da entidade de venda.

• :ransaç8es de Banco de Dados.

• ro%eto de Interface.

• 9xemplos de <4digo.

"riando um liente Uni%icado para Entre&a e 'ece(imento"

Entre&a e 'ece(imento da Livraria Duwamish, Fase 1

Descreve a aplicaço de 9ntrega e Cecebimento. <onhecimentos em Aisual Basic, 'D5, e pro%eto orientado a ob%eto

sero $teis. * p&ginas impressas+ Discute• 9ncapsulamento de Dados.

• ro%eto de Interface.

• 9xemplos de <4digo.

"rocurando no Esto$ue"

) at*lo&o da Livraria Duwamish, Fase 1

Descreve a aplicaço <at&logo. <onhecimentos em Aisual Basic e programaço de acesso a dados sero $teis. * p&ginas impressas+ Discute

• <riando uma funcionalidade de procura em banco de dados amig&vel.

• >sando controles 'ctiveE em um formul&rio de procura.

• 9xemplos de <4digo.

"ro+etando um anco de Dados !imples para #enda a #are+o"

) anco de Dados da Livraria Duwamish, Fase 1Detalha o esuema de banco de dados para a Livraria Duwamish. <onhecimentos de Ficrosoft 'ccess e pro%etogen(rico de banco de dados relacional sero $teis. *0 p&ginas impressas+ Inclui

• Discusso de modelagem de transaç8es de neg4cio para pro%etos de banco de dados.

• 9specificaço da 9ntidade do Banco de Dados da Livraria Duwamish.

• Fodelo de Banco de Dados da Livraria Duwamish *no formato de um gr&fico+.

Livraria Duwamish, Fase -

 ?a /ase 1, a Livraria Duwamish passa por uma peuena, mas significativa reviso de sua aruitetura. ' nossalivraria fict)cia cresceu para uma cadeia de lo%as, o ue significa ue m$ltiplas lo%as e usu&rios estaro acessando o

 banco de dados ao mesmo tempo. ' fim de direcionar a operaço de crescimento, os nossos desenvolvedorescompilaram todo o c4digo de acesso a dados em um componente <5F compartilhado. ara montar o exemplo ou

 para ver o c4digo fonte, ve%a a p&gina @etup e <4digo /onte da /ase 1. 5s seguintes artigos documentam asmudanças na aplicaço e alguns dos t4picos envolvidos na criaço do componente de acesso aos dados.

Page 3: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 3/66

"ro+etando uma amada de Acesso aos Dados"

Livraria Duwamish, Fase -Discute os t4picos de custos, benef)cios, e pro%eto na criaço de uma camada de acesso aos dados. * p&ginasimpressas+ Discute

• F(todos para solicitar dados de uma fonte de dados.

• F(todos para recuperar dados solicitados.

• 9scolhendo entre !recordsets# conectados e desconectados.

• 9scolhendo entre !recordsets# transacionais e no transacionais.

• 9scolhendo entre conex8es em !cache# e no !cache#.

"Desmem(rando a amada de Acesso a Dados"

Livraria Duwamish, Fase -9xplica o processo de remover o c4digo de acesso aos dados de uma aplicaço e substitui-lo por chamadas a umcomponente <5F de acesso a dados. *3 p&ginas impressas+ Discute

Fovendo um m4dulo 'I para um componente <5F.

• 9xemplos de <4digo.

".i&rando um omponente em #isual asic /0 para o #isual 22 /0"

9xplica como criar uma verso em Aisual <GG de um componente do Aisual Basic. *2 p&ginas impressas+ Incluidiscusso dos seguinte t4picos

• Cenomeando @)mbolos.

• @uporte a erros em tempo de execuço *<5F exceptions+.

• IDL, Aisual Basic, e ;>ID@.

".odelando um Esto$ue Distri(u3do"Livraria Duwamish, Fase -'presenta o modelo de dados revisado para a /ase 1 o exemplo da Livraria Duwamish. *H p&ginas impressas+Discute

• ;erenciando o aumento de entrada de dados enuanto mant(m a consist=ncia dos mesmos.

• Benef)cios de um componente de dados separado.

• 9xpandindo o banco de dados para acomodar m$ltiplas lo%as.

"AI da amada de Acesso aos Dados da Livraria Duwamish"

Livraria Duwamish, Fase -Descreve os m(todos e propriedades do componente da <amada de 'cesso aos Dados da Livraria Duwamish*DBD'L+ <5F para a /ase 1. *00 p&ginas impressas+ ara cada m(todo e propriedade, fornece

• 'ssinaturas do Aisual Basic e Aisual <GG.

• armetros.

• 9xemplos de <4digo.

Page 4: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 4/66

Livrarias Duwamish, Fase 4 ?a /ase 2, desmembramos a camada da l4gica do neg4cio para criar uma aplicaço lógica em tr=s-n)veis *three-tier+. ' fict)cia Livraria Duwamish precisa fazer uma reviso no seu sistema usado na lo%a para ser mais escalon&vele suportar r&pidas mudanças nas regras do neg4cio. ara criar este novo sistema baseado em componentes fica maisf&cil se migrarmos nossa ferramenta de desenvolvimento para o Aisual @tudio J..

ara montar o exemplo ou ver o c4digo fonte, ve%a a p&gina @etup e <4digo /onte da /ase 2. 5s seguintes artigosdiscutem os t4picos envolvidos na criaço de um componente para a l4gica do neg4cio e movendo para umaaruitetura em tr=s-n)veis *three-tier+.

"A(straindo 5ransaç6es de 7e&8cio"

A amada da L8&ica de 7e&8cio da Fase 4 da Livraria Duwamish

9xplica o pro%eto do componente da <amada da L4gica do ?eg4cio para a aplicaço exemplo da LivrariaDuwamish. *J p&ginas impressas+ Define a <amada da L4gica do ?eg4cio e discute as diferenças entre a L4gica do

 ?eg4cio e a camada do fluxo de trabalho *Kor"flow+. :amb(m abrange• rincipais casos de uso do componente.

• :4picos de Desempenho.

>sando !@tored procedures# com !Cecordsets# da 'D5 1..

• :4picos de :ransaço.

"Desmem(rando a L8&ica do 7e&8cio"

Livraria Duwamish, Fase 49xplica o processo de remover l4gica do neg4cio de uma aplicaço e substitui-la por chamadas a componente <5F.*J p&ginas impressas+ Discute

• Fovendo a l4gica do neg4cio para um componente <5F.

• @eparando o c4digo de fluxo de trabalho !wor"flow# *e a nossa definiço de !workflow”+.

• 9xemplos de <4digo.

"A amada de Acesso aos Dados da Livraria Duwamish, Fase 4"

Discute os t4picos relacionados com o estado de ob%eto e recursos de !cache#. 9xamina como estes se relacionamcom a <amada de 'cesso a Dados da /ase 2 da Livraria Duwamish. Inclui refer=ncia a 'I da /ase 2 D'L.

"AI de 'e%er9ncia da amada da L8&ica do 7e&8cio da Livraria Duwamish"

Documenta os m(todos do componente da <amada da L4gica do ?eg4cio *BLL+.

".i&rando o anco de Dados da Livraria Duwamish para o !:L !erver"

Discute os t4picos envolvidos com a converso do banco de dados da Livraria Duwamish do 'ccess M para o @NL@erver. *2 p&ginas impressas+ :amb(m abrange

• >sando as /erramentas de !>psizing# do 'ccess M.

• <riando dispositivos de banco de dados.

• :4picos envolvidos na converso de consultas em @NL.

Livraria Duwamish, Fase 40/' /ase 2.3 do nosso exemplo de migraço alme%a a uma aruitetura física em tr=s-n)veis *three-tier+, implementandoo Ficrosoft :ransaction @erver *F:@+ para permitir as aplicaç8es clientes, aos componentes, e ao bando de dadosserem distribu)dos por v&rios computadores.

Page 5: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 5/66

ara montar o exemplo ou ver o c4digo fonte, ve%a a p&gina @etup e <4digo /onte da /ase 2.3. 5s seguintes artigosdiscutem os t4picos envolvidos na distribuiço de uma aplicaço usando o F:@.

"Instalando uma Aplicação Distri(u3da"

/ornece instruç8es para montar e distribuir a /ase 2.3 da aplicaço exemplo da Livraria Duwamish. *2 p&ginasimpressas+ Discute

Ceuisitos de @istema.

• <riando um banco de dados.

• Instalando os componentes do n)vel intermedi&rio *middle-tier+.

• Fontando as aplicaç8es cliente.

"Distri(uindo a Livraria Duwamish com o .icroso%t 5ransaction !erver"

/ornece uma viso geral da migraço do exemplo da Livraria Duwamish da /ase 2. at( 2.3. *2 p&ginas impressas+Discute

• @etup e distribuiço.

• 'cesso Cemoto.

• :ransaç8es.

• 5 componente de acesso a dados da Livraria Duwamish.

"Instalando os omponentes da Livraria Duwamish no .5!"

9xamina como os componentes modificados da Duwamish interagem com o !run time# do F:@ fornecendo acessoremoto e escalonamento. * p&ginas impressas+ 'brange

• 'tivaço OI:.

•  !ool# de conex8es e tempo de vida.

• :ransaç8es autom&ticas.

• 'tributos das transaç8es.

"omponentes de Acesso 'emoto da Duwamish"

9xplica o processo de preparaço das aplicaç8es e os componentes do Fodelo de 5b%eto de <omponentes *<5F+, a<amada da L4gica do ?eg4cio *BLL+, e a <amada de 'cesso aos Dados *D'L+ para trabalhar em diferentescomputadores. *M p&ginas impressas+ Discute

• Distribuiço de componentes.

• Instanciando ob%etos.

• Instalando com a 'I do F:@'dmin.

• 9xemplos de c4digo do Aisual Basic.

".ovendo uma amada de Acesso a Dados para o .icroso%t 5ransaction !erver"

Discute as mudanças no componente da <amada de 'cesso a Dados da Livraria Duwamish *D'L+ para integraçocom o Ficrosoft :ransaction @erver *F:@+. *1 p&ginas impressas+ 'ssume familiaridade com o conceito de umacamada de acesso a dados como detalhado em 6ro%etando uma <amada de 'cesso a Dados.6

Page 6: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 6/66

Uma Introdução ao Exemplo da Livraria

Duwamish!um*rio; Descreve o exemplo Livraria Duwamish. *H p&ginas impressas+ Inclui

• /uncionalidades b&sicas.

• 5 cen&rio da migraço.

• 5 modelo de aruitetura em n)veis usado pela migraço.

Introdução' Livraria Duwamish ( um sistema exemplo de venda e controle de estoue. <onforme a fict)cia Livraria Duwamishcresce de uma simples lo%a para uma operaço na Internet, iremos migrar o exemplo de uma simples aplicaço!des"top# *aruitetura cl&ssica+ para um ambiente b&sico clientePserver em tr=s-n)veis *three-tier+ e, finalmente,

 para uma lo%a de venda a vare%o para a Internet em tr=s-n)veis *three-tier+ distribu)do, ou em n-n)veis *n-tier+.' transiço ser& apresentada em uatro fases. Iremos fornecer-lhe c4digo reutiliz&vel, documentaço das diferentes

aplicaç8es, e discusso dos t4picos e estrat(gias envolvidas com o pro%eto e a migraço. 'trav(s desta s(rie deartigos esperamos destacar t4picos como o pro%eto do componente do n)vel intermedi&rio *middle-tier+, migraço deinterfaces de usu&rio divergentes para um pro%eto consistente, e acesso a banco de dados distribu)do. ortanto, onosso ob%etivo no ( de fornecer um sistema completo de venda a vare%o, mas um subcon%unto de um poss)velsistema ue poder& ser usado como uma ferramenta de aprendizado *ou, para os mais motivados, como a base para odesenvolvimento de um pro%eto+. ?os concentramos nas tecnologias e caracter)sticas ue melhor demonstraro os

 pontos cr)ticos envolvidos com este tipo de migraço.'s /ases 0 e 1 sero implementadas usando FicrosoftQ Aisual BasicQ verso 3. com um banco de dadosFicrosoft 'ccess.'s /ases 2 at( H sero implementadas usando Aisual Basic verso J.. :amb(m iremos desenvolver vers8es doscomponentes com o Aisual <GGQ J..'s /ases 2 e H iro usar um banco de dados Ficrosoft @NL @erverR. 'ssim, as aplicaç8es podero tirar vantagemdo con%unto de caracter)sticas avançadas e escalonamento ue o banco oferece.

) en*rio de .i&ração' est4ria da Livraria Duwamish ( uma verso simples de crescimento do neg4cio. Inicialmente, uma $nica lo%acompunha todo o neg4cio, e uma aplicaço !des"top# simples satisfazia todas as necessidades do neg4cio */ase 0+.9ntretanto, algum sucesso permitiu a seus donos expandir para lo%as adicionais, reuerendo um banco de dadoscentralizado ue pudesse ser acessado por cada lo%a */ase 1+. <onforme este sucesso continuava e a LivrariaDuwamish se movia para diferentes estados e pa)ses, o sistema tinha ue comportar diferentes regras de neg4cio,tais como troca nas taxas de imposto cobrado de lo%a para lo%a, reuerendo futuras modificaç8es */ase 2+.orue a nossa Livraria Duwamish ( gerenciada por homens de neg4cio com uma viso avançada e de bom senso,eles decidiram colocar a lo%a !online#. ' mudança para a Internet envolve no somente gerenciar uma uantidademaior de entrada de dados, mas tamb(m uma reavaliaço das interfaces de usu&rio */ase H+.' migraço da Livraria Duwamish, de uma aruitetura simples para uma aruitetura em n-n)veis *n-tier+ para aInternet, ser& constru)da com as mesmas funcionalidades b&sicas.

• ontos de #enda <)!=; >sado por um vendedor para registrar uma venda, imprimir recibos, e atualizar oestoue.

• !olicitação de edidos; >sada para rastrear os v&rios pedidos de novos livros e suprimentos. 9staaplicaço tamb(m est& ligada ao estoue.

• Entre&a e 'ece(imento; ;er=ncia as entregas de pedidos aos clientes e o recebimento de pedidos dosfornecedores *originados no programa de @olicitaço de edidos+. 9sta aplicaço dever& fazer todo o

Page 7: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 7/66

gerenciamento do estoue necess&rio para manter o mesmo atualizado.

• at*lo&o; >sado para procurar por t)tulos, autores, palavras chaves, ?$mero *I@B?+, e etc. ..., e tamb(m (usados pelas outras aplicaç8es para checar o estoue.

9nuanto na /ase 0 no mais do ue isto ( desenvolvido, as fases subseuentes iro presenciar melhoramentosnestas funcionalidades.

7osso Exemplo; A Livraria Duwamish' chave para este exemplo ( a compreenso das v&rias camadas utilizadas pela maioria das aplicaç8es de

 processamento de dados baseadas em interfaces• >ma camada de apresentaço, ou interface de usu&rio, pela ual o usu&rio interage com a aplicaço.

• >ma camada de regras de neg4cio ue cont(m as regras de como o usu&rio interage e manipula os dadosatrav(s de uma camada de acesso aos dados. 9sta camada poder& conter outras camadas como subcamadas.

• >ma camada de acesso aos dados ue atrav(s de programaço permitir& o acesso das regras de neg4cio aosdados armazenados.

<om este exemplo, iremos demonstrar no somente como escrever uma bom exemplo de !des"top# */ase 0+ , mastamb(m como migrar esta aplicaço para outros cen&rios de neg4cios igualmente v&lidos. ' /ase 1 se expande paraum modelo em dois-n)veis *two-tier+ e a /ase 2 para um modelo de aplicaço em tr=s-n)veis *three-tier+. ' /ase H *aInternet+ destaca os t4picos envolvidos no pro%eto de uma aplicaço distribu)da em n-n)veis *n-tier+.' /igura 0 ilustra estes modelos de aruitetura.

Fi&ura 10 ) caminho da mi&ração

Fase 1; l*ssico

 ?o modelo cl&ssico, note como todas as camadas esto contidas dentro da pr4pria aplicaço. 9sta aruitetura ser&muito dif)cil de manter em um ambiente em larga escala a no ser ue extremo cuidado se%a tomado para encapsulare modularizar totalmente o c4digo. orue a /ase 0 do exemplo da Livraria Duwamish est& focado em umaoperaço peuena de venda a vare%o, este tipo de pro%eto ( perfeitamente aceit&vel. S f&cil de desenvolver e, noespaço limitado de uma $nica lo%a, f&cil de manter.

 ?a /ase 0 entregaremos as funcionalidades b&sicas e a documentaço do c4digo e t4picos de pro%eto.

Page 8: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 8/66

Fase -; Dois>n3veis <5wo>tier=

' /ase 1 avança para um pro%eto em dois-n)veis *two-tier+, uma vez ue desmembramos o c4digo de acesso a dadosna sua pr4pria camada. Desmembrando esta camada, fazemos com ue o acesso de multi-usu&rios aos dados se%amuito mais f&cil de trabalhar. 5 desenvolvedor no precisa se preocupar com o travamento de registros, oucompartilhamento de dados, porue todo o acesso aos dados est& encapsulado e controlado dentro desta novacamada.

Fase 4 e Fase 40/; 5r9s>n3veis <three>tier= l8&ico e tr9s>n3veis <three>tier= %3sico

's regras de neg4cio cont=m no somente regras ue determinam o ue fazer com os dados, mas tamb(m como eonde faze-lo. ara ue uma aplicaço se torne escalon&vel, ( geralmente necess&rio separar a camada das regras deneg4cio em duas camadas separadas a l4gica do neg4cio no lado do cliente, a ual chamamos de fluxo de trabalho*workflow), e a l4gica do neg4cio no lado do servidor. 9mbora descrevamos estas camadas como cliente e servidor,as implementaç8es f)sicas reais podem variar. ;eralmente, as regras de fluxo de trabalho *wor"flow+ governam aentrada da dados dos usu&rios e outros processos no cliente, enuanto a l4gica do neg4cio controla a manipulaço eo fluxo dos dados no servidor.' /ase 2 do exemplo da Livraria Duwamish desmembra a l4gica do neg4cio em um componente <5F para criaruma aplicaço lógica em tr=s-n)veis *three-tier+. ?osso segundo passo para criar uma aplicaço em tr=s-n)veis*three-tier+ ( fornecer uma implementaço física da aruitetura. ara distribuir a aplicaço entre v&rioscomputadores, implementamos o Ficrosoft :ransaction @erver na /ase 2.3. ' aplicaço ficar& f&cil de manter e

distribuir, uando uma mudança nas regras do neg4cio afetar um componente menor, e no a toda a aplicaço. Istoenvolve uma an&lise extensa porue, deliberadamente, as regras de neg4cio no foram encapsuladas na /ase 0.

Fase ?; Uma aplicação em tr9s>n3veis <three>tier ou n>tier= para a Internet

' /ase H do exemplo da Livraria Duwamish culmina na migraço de um modelo !des"top# para um modelodistribu)do em n-n)veis *n-tier+ implementado como uma aplicaço para a Internet. 9ste ( o est&gio final da LivrariaDuwamish. ?a /ase H, desmembramos o fluxo de trabalho *wor"flow+ em um componente separado e fornecemosuma interface de usu&rio espec)fica para a Internet. ' /ase H documentar& os benef)cio, a aruitetura, e os t4picos deimplementaço relacionados com a migraço de uma aplicaço em tr=s-n)veis *three-tier+ para uma aplicaço para aInternet. Fuito da documentaço estar& focado nos produtos estrat(gicos da Ficrosoft e nas tecnologias com ue oexemplo ser& constru)do.

onclusão' Livraria Duwamish pode ser uma empresa fict)cia, mas os t4picos sobre o pro%eto, o desenvolvimento, e adistribuiço levantados atrav(s das uatro fases deste pro%eto no so. Iremos, com entusiasmo, expor e esclarecerestes t4picos para voc=.@inta-se a vontade para nos enviar um e-mail com suas perguntas, coment&rios, ou feedbac" paramsdnsiteTmicrosoft.com.

Page 9: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 9/66

58picos @erais de ro+eto de Aplicaç6es5s seguintes !lin"s# so vis8es das seç8es dos artigos da Livraria Duwamish. ara uma lista completa dos artigos,

 procure por cada fase individual no painel de <onte$do deste aruivo de '%uda.Fuitos dos mais importantes conceitos de desenvolvimento, com ampla aplicaço al(m do escopo deste exemplo,

so mencionados aui.) uso de o(+etos de dados

5s ob%etos de neg4cio no so somente abstratos como entidades de banco de dados, eles so abstratos como ob%etosde dados do neg4cio. Isto permite ue <lientes, edidos, e Aendas se%am representados por dados ue ( muitoan&logo ao ob%eto de neg4cio real sendo modelado e ue no est& limitado ao ue pode ser representado como umaentidade de banco de dados.

• <lasses do Aisual Basic define ob%etos ue representam ob%etos de neg4cio */ase 0+

• /ormul&rios do Aisual Basic como ob%etos */ase 0+

• Colando registros e dom)nios de banco de dados

) uso de recordsetsB desconectados em uma aplicação distri(u3da5s !recordsets# desconectados e os !recordsets# desconectados hier&ruicos *introduzidos em 'D5 1.+ permitem7s aplicaç8es recuperar dados e desconectar-se do banco de dados *at( mesmo da rede+ e trabalhar !off line# semsobrecarregar o banco de dados e a rede com uma conexo aberta. 5s !Cecordsets# tamb(m servem comorecipientes de dados inteligentes e de linguagem agn4stica na <5F e em aplicaç8es <5F distribu)das.

• !Cecordsets# desconectados 'D5 como recipientes de dados */ase 1+

• ap(is dos !recordsets# 'D5 no exemplo da Livraria Duwamish

•  !Cecordsets# 'D5 desconectados como uma caracter)stica de escalonamento

•  !Cecordsets# desconectados hier&ruicos usados nos clientes da /ase 2

• 9xtraindo um !recordset# aninhado

• 9xpress8es de consulta 'D5 modeladas

Distri(uindo componentes com o .5!

5 Ficrosoft :ransaction @erver *F:@+ simplifica o desenvolvimento de aplicaç8es distribu)das atrav(s daunificaço de componente remotos, gerenciamento de recursos, e controle de transaç8es em uma $nica tecnologia.

• 5pç8es para instanciar ob%etos no Aisual Basic

• Ligaç8es cedo vs. tarde

• Instalando a•

• >so da 'I do F:@

• F:@ para componentes remotos

• F:@ e a escalonamento de aplicaç8es

• F:@ para ativaço de componentes !%ust in time# *OI:+

Page 10: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 10/66

• 'tivaço de componentes F:@ mudas p modelo de programaço

• 5 F:@ funde ativaço e transaç8es distribu)das

• Instanciando componentes remotos

ontrole de 5ransaç6es's t(cnicas de controle de transaç8es esto muito pr4ximas da tecnologia de acesso a dados, portanto no ( surpresaue tenhamos documentado nossa odiss(ia sobre o assunto.

• <ontrole de transaç8es */ase 1+

• <ontrole de transaç8es */ase 2+

• 'lternativas de controle de transaç8es com o F:@

• I5b%ect<ontext versus I:ransaction<ontext

• >sando o 6bug boo"6 para disparar uma falha de transaço

• :ransaç8es F:@ mudam o modelo de programaço

• ro%etando para transaç8es F:@

• 'gentes F:@ de transaç8es impl)citas distribu)das

• <onfiguraç8es da propriedade de atributo F:@

Desempenho e escalonamento

>m crit(rio importante para cada deciso de pro%eto na aplicaço ( a escalonamento da aplicaço. ' escalonamento( considerada %unto com outros fatores nas seguintes discuss8es.

• 9stado dos dados referente a escalonamento

• !@tored procedures# versus @NL dinmico

• 'penas o !upsizing# no melhora o desempenho

• Felhoramento no desempenho relacionado ao F:@

omponentes intercam(i*veis entre o #isual asic e o #isual 22

• 'comodando o programador de Aisual Basic

• >sando o 5L9P<5F 5b%ect Aiewer para obter a !tUpelibrarU#

• IDL @Umbol Cenaming suporta compatibilidade em tempo de pro%eto

• <ompatibilidade Bin&ria ou compatibilidade !rogId#

• /ullU ualified enumeration tUpe expression problem

• Aisual Basic VCaiseV contrasta com <GG ':L <<om<o<lass V9rror*+V

Page 11: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 11/66

58picos de Ar$uiteturas em amadas5s seguintes !lin"s# so vis8es das seç8es dos artigos da Livraria Duwamish. ara uma lista completa dos artigos,

 procure por cada fase individual no painel de <onte$do deste aruivo de '%uda.9stas camadas l4gicas, as uais podem ser encontradas na maioria das aplicaç8es comerciais, so referenciadas noexemplo da Livraria Duwamish. ara uma introduço, ve%a introduço as camadas de aplicaç8es.

A camada de apresentação

• /ormul&rios do Aisual Basic ue apresentam ob%etos de neg4cio */ase 0+

• reparaço de um pedido de compra */ase 0+

A camada de Cor%lowB

• reparaço de um pedido de compra */ase 0+

•  reparaço de uma venda */ase 0+

• Kor"flow *regras de neg4cio no cliente+ name clarified

• Kor"flow como um cliente dos serviços da BLL nas aplicaç8es clientes */ase 2+

A camada da l8&ica do ne&8cio

• <4digo da transaço InsereAenda */ase 0+

• InsereAenda usando atualizaço da D'L */ase 1+

•  %ustificar o componente da camada da l4gica do neg4cio *BLL+

• Definir a camada da l4gica do neg4cio *regras do neg4cio no servidor+ */ase 2+

• >so do modelo de programaço da BLL

• 5 c4digo da BLL distribu)do entre o componente <5F e o banco de dados @NL

• 5 pro%eto da BLL em Aisual <GG

• <onfiguraç8es do assistente de pro%eto da ':L em Aisual <GG para a BLL

• 5s nomes das !stored procedure# acoplados ao c4digo da l4gica do neg4cio

• rocessamento reutiliz&vel na BLL em Aisual <GG

• armetros e comandos da BLL em Aisual <GG BLL

• Wieraruia de classe na BLL em Aisual <GG

• Implementando I@upport9rrorInfo na BLL em Aisual <GG

• <hamando o pr4prio m(todo de interface da BLL em Aisual <GG

• 'umentando a robustez da BLL em Aisual <GG

Page 12: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 12/66

• 9xecutando !stored procedures# do @NL @erver J.3 na BLL

A camada de acesso aos dados

• /ornecendo registros de dados em !cache# com a coleço de ob%etos do Aisual Basic */ase 0+

• <4digo de transaço do InsereAenda */ase 0+

• InsereAenda usando atualizaço da D'L */ase 1+

• Oustificar o componente da <amada de 'cesso aos Dados *D'L+ */ase 1+

• !Cecordsets# desconectados 'D5 como recipientes de dados */ase 1+

• <ontrole de transaç8es */ase 1+

• ;erenciamento de conex8es 5DB< */ase 1+

• !ool# de conex8es 5DB< e o F:@

• 'I da D'L */ase 1+

• Fudanças na 'I da D'L */ase 2 +

• Fudanças na 'I da D'L */ase 2.3+

Page 13: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 13/66

58picos de anco de Dados e Fluxo de Dados5s seguintes !lin"s# so vis8es das seç8es dos artigos da Livraria Duwamish. ara uma lista completa dos artigos,

 procure por cada fase individual no painel de <onte$do deste aruivo de '%uda.5s !lin"s# documentam as estruturas de dados e os algoritmos complementares usados nos nossos sistemas de

cat&logo, estoue, e gerenciamento de dados.:amb(m ve%a, 6>m ;uia /ase a /ase para a 9strat(gia de 'cesso a Dados da Livraria Duwamish.6

anco de Dados

5 modelo começa como um simples banco de dados Ficrosoft 'ccess para uma $nica lo%a. S expandido nas fasessubseuentes para representar m$ltiplas lo%as e ( convertido para um banco de dados @NL @erver usando !stored

 procedures#.• <apturando os processos do neg4cio em um $nico modelo

• Iniciando com um aruivo de banco de dados F@ 'ccess .mdb

• Fodificando o banco de dados para rastrear o estoue atrav(s de v&rias lo%as

• Figrando o banco de dados para o @NL @erver 

• Felhoramentos no Banco de dados para maior escalonamento nas transaç8es de atualizaço do 9stoue na/ase 1

• >so de !stored procedures# na /ase 2

Fluxo de Dados

5 c4digo ue interage mais diretamente com o banco de dados *e mais muda entre as fases+ ( documentado aui.• reparaço do pedido de compra */ase 0+

• 5 ob%eto de edido de <ompra e seu tempo de vida */ase 0+

• 5 ob%eto edido de Aenda e seu tempo de vida */ase 0+

• <4digo da transaço do InsereAenda */ase 0 +

• InsereAenda usando atualizaço da D'L */ase 1+

• !Cecordsets# desconectados 'D5 como recipientes de dados

•  !Cecordset# 'D5 como uma coleço chave ou um mapa

• :ipos de parmetros e direço */ase 2+

• <olocando dados de longa duraço em !cache# na /ase 2 do cat&logo no cliente

• 9xpress8es de consulta 'D5 modeladas

Page 14: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 14/66

Um @uia asso a asso para a Estrat&ia de

Acesso a Dados Da Livraria Duwamish

Fase 1Código da AplicaçãoO Código do esquema acessa os dados:• SQL do Access (Select, Insert, e Update)• anipula!"o ao estilo de dri#er ISA (Add$e% & & & Update)Acesso aos DadosO Código nas aplica!'es destop* • A+O &-• Access O+.C dri#er• +ri#er do O+.C do AccessBanco de Dados.anco de +ados no /ormato de arqui#o icroso/t Access 01 &md2

Um esquema simples representando o modelo de negócio (n"onormali3ado)Leitura6ro%etando um Banco de Dados @imples 5rientado para Aenda 7 Aare%o6

Page 15: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 15/66

Fase -Código da AplicaçãoAcesso aos dados pela A4I da Camada de Acesso aos +ados+AL&56ecQuer7 e 8et9ecordset (scema;a%are Access SQL)<ransacted9ecordset (estilo ISA para transa!'es requerendom=ltiplas trips)Acesso aos DadosCódigo de aceso aos dados desmem2ado em componentes daCamada de Acesso a +ados (+AL)• 56ecQuer7, 8et9ecordset, <ransact9ecordset• A+O &-• Access O+.C dri#er• +ri#er do O+.C do AccessBanco de Dados5squema do .anco de +ados estendido para suportar #>rias lo?asodi/ica!'es no esquema no ponto principal do estoque

Leitura6ro%etando uma <amada de 'cesso a Dados66Fodelando >m 9stoue Distribu)do Livraria Duwamish, /ase 166Desmembrando a <amada de 'cesso a Dados66'I da <amada de 'cesso a Dados da Livraria Duwamish, /ase 166Figrando um <omponente Aisual Basic 3. para o Aisual <GG 3.6

Page 16: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 16/66

Fase 4Código da Aplicação<odo o acesso a dados pela A4I da Camada Lógica do $egócio(O2terCliente, Inserir4edido, & & &) 9ecordsets* desconectados ier>rquicos da A+O @&A Lógica do NegócioA lógica do negócio desmem2rada no componente da Camada Lógicado $egócio (.LL)• A A4I encapsula o esquema do 2anco de dados• 56ecuta stored procedures* no 2anco de dados atra#Bs da +AL&• inimi3a round trips e ma6imi3a escalonamento&Acesso aos DadosSQL Ser#er O+.C dri#er+ri#er O+.C do SQL Ser#erA+O @&&A4I da +AL re#isada para simpli/icar transa!'es comple6as

Banco de DadosSQL Ser#er &- Stored procedures* usadas e6clusi#amente para todo o acesso emanipula!"o de dadosO esquema simples da Dase @ permaneceLeitura6Figrando o Banco de Dados da Livraria Duwamish par o @NL @erver66' <amada de 'cesso a Dados da Livraria Duwamish muda para a /ase 266'bstraindo :ransaç8es de ?eg4cio6

Fase 40/Lógica do Negócio

<ransa!'es OL5 gerenciadas pelo <SAcesso a Dados<S assume o gerenciamento das cone6'es A+OEO+.CLeitura6Fovendo a <amada de 'cesso a Dados para o Ficrosoft :ransaction @erver66Distribuindo a Livraria Duwamish com o Ficrosoft :ransaction @erver66<omponentes Cemotos da Livraria Duwamish66Instalando os <omponentes da Livraria Duwamish no F:@6

Page 17: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 17/66

Fase 4Banco de Dadosodi/icar o esquema para aumentar a escalonamento e odesempeno+istri2uir o .anco de +ados para escalonamentoSeparar dados analFticos (OLA4) de dados transacionais (OL<4)&

Page 18: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 18/66

Livraria Duwamish, !etup da Fase 1 e

8di&o Fonte9xecute o pacote do setup para instalar a aplicaço exemplo da Livraria Duwamish em seu computador. ?a pasta de

grupo de programa Exemplo do .!D7 Livraria Duwamish, Fase 1, cliue na opço Duwamish Launcher.<liue com o boto da esuerda no item Launcher para iniciar a aplicaço ou cliue com o boto da direita para vero ;uia do >su&rio ou as consideraç8es de pro%eto para a aplicaço.7ota ?o aplicativo Launcher, cliue com o boto da direita em Lo& )n e selecione User @uide para ver a lista denomes e senhas de usu&rios ue %& vem com o exemplo.' Livraria Duwamish ( uma aplicaço exemplo da F@D? no suportada. or favor, lembre-se de ue ( s4 umexemploXo suporte t(cnico da Ficrosoft no est& preparado para responder a uest8es sobre a Livraria Duwamish.<liue aui para copias o pacote exemplo de instalaço e o c4digo fonte para a /ase 0 da Livraria Duwamish.d1setup0exe; 9ste execut&vel auto-extra)vel ir& instalar a aplicaço exemplo da Livraria Duwamish.d1source0exe; 9ste execut&vel auto-extra)vel ir& montar a &rvore de c4digo fonte do exemplo da Livraria Duwamishem seu computador.7ota ara compilar o c4digo fonte da /ase 0, voc= ir& precisar do Aisual Basic 3. rofessional ou a 9nterprise9dition. 's fases futuras iro reuerer a 9nterprise 9dition para compilar os componentes do servidor.

Page 19: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 19/66

onstruindo uma Aplicação de !olicitação e

Acompanhamento de edidos

A !olicitação de edidos da Livraria Duwamish, Fase 1!um*rio; Descreve a aplicaço de @olicitaço de edidos. *02 p&ginas impressas+ <onhecimentos em Aisual Basic e'D5 ser& $til. 9xplica

• <ompartilhando interfaces de usu&rio com outras aplicaç8es

• 9xemplos de <4digo

• r4s e contras de um pro%eto de aplicaço para migraço

Introdução9ste artigo descreve a aplicaço de @olicitaço de edidos usada na /ase 0 do exemplo da Livraria Duwamish.' aplicaço de @olicitaço de edidos *orderent.exe+ ( parte de um con%unto de aplicaç8es !des"top#, escritas em

FicrosoftQ Aisual BasicQ verso 3., ue automatiza os processos do neg4cio de uma peuena livraria. 9stasaplicaç8es compartilham de um mesmo banco de dados, como descrito em 6ro%etando um Banco de Dados @implesde Aenda a Aare%o 5 Banco de Dados Duwamish, /ase 0.6 's aplicaç8es da /ase 0 so o ponto de partida para oue ser& a migraço, como descrito em 6' Livraria Duwamish,6 para uma aruitetura em dois-n)veis *two-tier+, ondecada aplicaço contem sua pr4pria apresentaço, regras de neg4cio, e c4digo de acesso a dados, para uma aruiteturaem multi-n)veis *multitiered+, onde estes serviços so distribu)dos pela rede.9sta aplicaço fornece funcionalidades para solicitaço e acompanhamento de pedidos, incluindo interfacesapropriadas para gerenciar clientes, funcion&rios, e fornecedores. 9la compartilha interfaces de usu&rio com aaplicaço de onto de Aenda *ve%a 6<oordenando Aendas e 9stoue onto de Aendas da Livraria Duwamish, /ase06+ e a aplicaço <hamadora, e empresta da aplicaço <at&logo *ve%a 6rocurando no 9stoue 'plicaço <at&logoda Livraria Duwamish, /ase 06+.

Fluxo de Dados' aplicaço de @olicitaço de edidos gerencia pedidos de compra e pedidos de venda. >m pedido de comprarepresenta uma compra de itens de um fornecedor e um pedido de venda representa uma venda ue reuer umaentrega ou outro processamento.

edido de ompra

>m pedido de compra consiste de uma entidade pedido e de um con%unto de detalhes do pedido. 9le usa os seguintesatributos da entidade pedido.5a(ela 10 Atri(utos do edido de ompra

Atri(utos Descrição

<odigo Identifica um $nico pedido. ?um/uncionario Identifica o funcion&rio ue entrou com o pedido. ?um/ornecedor Identifica o fornecedor dos itens do pedido.

Dataedido Indica a dataPhora em ue o pedido foi inserido no banco de dados.@tatus Indica onde o pedido se encontra durante o seu tempo de vida, como explicado a seguir.@ub:otal Indica o total da compra de todos os itens pedidos.

<ada detalhe do pedido usa os seguintes atributos da entidade Detalheedido.5a(ela -0 Entidade Detalheedido

Atri(utos Descrição

<odigo Identifica um $nico detalhe do pedido. ?umedido Identifica o pedido de compra.

Page 20: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 20/66

 ?umItem Identifica o item sendo pedido.reco>nitario Indica o preço unit&rio do item.Nuantidade Indica a uantidade pedida.

) tempo de vida do pedido de compra

>m pedido de compra possui os seguintes estados durante o seu tempo de vida

0. @5LI<I:'D5 indica ue o pedido foi solicitado mas ainda no foi submetido ao fornecedor. ' aplicaçoatualiza o status do pedido para @5LI<I:'D5 uando um pedido ( inserido no banco de dados.

1. 9DID5 indica ue o pedido foi submetido ao fornecedor. <omo as t(cnicas de aprovaço de um pedido podem variar entre fornecedores, a aplicaço simplesmente fornece um m(todo para manualmente promover o status do pedido para 9DID5.

2. C9<9BID5 indica ue alguns itens do pedido foram recebidos e inclu)dos no estoue. ' aplicaço de9ntrega e Cecebimento promove o pedido de compra para C9<9BID5.

H. <5FL9:'D5 indica ue todas as partes do pedido foram encaminhadas. Nuando um pedido de compra( completado, sai do escopo deste sistema.

edido de #enda>m pedido de venda representa um pedido ue reuer mais processamento ue uma simples venda 6cliente comprae leva um livro6. 9ste tipo de venda permitir& uma entrega ou reserva pelo cliente e reuer ue itens se%am pedidos.edidos de venda so gerados pela aplicaço de onto de Aenda uando a uantidade de venda excede a uantidadeem mos ou uando a opço de entrega ( selecionada.>m pedido de venda usa os seguintes atributos da entidade pedido.5a(ela 40 Atri(utos do edido de #enda

Atri(utos Descrição

<odigo Identifica um $nico pedido. ?um<liente Identifica o cliente. ?um/uncionario Identifica o funcion&rio ue efetuou o pedido.Dataedido Indica a dataPhora ue o pedido foi inserido no banco de dados.

DataCetirada Indica a dataPhora ue o pedido foi retirado pelo cliente.@tatus Indica onde o pedido se encontra em seu tempo de vida.9hAenda Aerdadeiro indica ue o pedido ( um pedido de venda.

) tempo de vida do pedido de venda

>m pedido de venda possui os seguintes estado durante o seu tempo de vida0. @5LI<I:'D5 indica ue o pedido foi solicitado. ' aplicaço de onto de Aenda insere pedidos de venda

no banco de dados com o status de @5LI<I:'D5.

1. C5?:5 indica ue o pedido est& pronto para ser entregue. ' aplicaço de @olicitaço de edidos promove pedidos de @5LI<I:'D5 para C5?:5 uando existe suficientes itens no estoue.

2. 9?:C9;>9 indica ue partes do pedido foram entregues. ' aplicaço de 9ntregaPCecebimento promove

um pedido de venda ao status de 9?:C9;>9.

H. IC'<W'F'C indica ue partes de um pedido esto reservados para retirada pelo cliente. ' aplicaço de9ntregaPCecebimento efetua esta atualizaço.

3. <5FL9:'D5 indica ue todas as partes do pedido foram entregues ou esto reservadas para retirada pelo cliente.

Page 21: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 21/66

)r&aniGação da Aplicação's interfaces de usu&rio *>Is+ da @olicitaço de edido so pro%etadas para permitir a reutilizaço. ' interface deedido pode representar tanto um pedido de compra como um pedido de venda. ' interface de Ator representaentidades tais como um <liente, um /uncion&rio, ou um /ornecedor ue estamos nos referindo como 'tores. 'interface de Atores representa uma lista destes 'tores e, finalmente, a interface de edidos representa uma lista de

 pedidos de compra ou pedidos de venda.>samos classes de dados gerais em toda a aplicaço de tal forma ue sempre ue o c4digo est& manipulando clientesou vendas est& usando ob%etos da classe c<lientes ou cAendas em vez de estar abrindo registros do banco de dadosou mantendo outros tipos de vari&veis para representar estas entidades. Nuando selecionamos um pedido da lista de

 pedidos recebemos um ob%eto de cedido. 9stes ob%etos de dados deixam a aplicaço mais limpa e ue ( f&cil demanter enuanto ue lida naturalmente com a aruitetura clientePservidor ue no reuer uma conexo constantecom o banco de dados.'s regras de neg4cio *tais como o processo ue marca uma venda para ser entregue ou ue determina ue tipo devenda gera transaç8es imediatas no estoue+ so agrupadas em um $nico lugar para poderem ser facilmentealteradas sem ter ue fazer alteraç8es por toda a aplicaço. 's regras de neg4cio atualizam os totais para um ob%etode pedido ou determinam ue uma venda excedeu a uantidade em estoue e ue um pedido de entrega ser& gerado./inalmente, usamos o m4dulo geral de acesso a dados *dadosYapi.bas+ sempre ue poss)vel e iremos documentaraonde temos ue adicion&-lo. 9stendemos esta interface de programaço de aplicaço *'I+ onde incluiremosregistros paiPfilho e encapsular m$ltiplas operaç8es de banco de dados em uma transaço de 5b%eto de Dados'ctiveEQ *'D5+.

Formul*rios de livre posicionamento

' aplicaço de @olicitaço de edidos ( basicamente o menor recipiente poss)vel *solpedido.exe+ em torno de umcon%unto de m4dulos de formul&rios de livre posicionamento. 5s formul&rios so de livre posicionamento no sentidode ue eles tem interfaces bem definidas e depend=ncia de c4digo e seus processamentos internos esto bemescondidos. 9ste encapsulamento permite ue eles se%am reutilizados livremente de formas desconhecidas ao pro%etooriginal sempre ue uma aplicaço tenha necessidade de ou necessidades para trabalhar com uma das entidades dedados gerais da aplicaço *itens de <lientes, /uncion&rios, /ornecedores, edidos, Detalhes do edido, ou<at&logo+.5s serviços de um formul&rios so acionados atrav(s da atribuiço do modo de operaço, pr(-atribuindo cada

 propriedade do )(+eto, e ento mostrando o formul&rio. Nuando o usu&rio sai do formul&rio, os dados resultantestais como um 5b%eto de <liente, /uncion&rio, Item, edido, ou /ornecedor ( exposto como uma propriedade doFormul*rio.

Inter%aces de Usu*rios' aplicaço de @olicitaço de edidos permite ue funcion&rios da lo%a entrem com novos pedidos de compra erastreiem pedidos de compra e venda existentes. >ma solicitaço de pedido ( executada pelos funcion&rios na /ase0, portanto pouco esforço ( feito para restringir o acesso aos dados, embora as fases futuras da aplicaço iroaumentar a segurança uma vez ue clientes sero capazes de fazer seus pr4prios pedidos de uiosues colocados nalo%a e atrav(s da Internet. 'ntes de discutir a implementaço das interfaces de usu&rio, iremos especific&-los comoum con%unto de ob%etos com propriedades e m(todos ue satisfazem o fluxo de dados reuerido. Fuitas das

 propriedades dos dados descritas a seguir so de classes ue abrangem as entidades de dados descritas em6ro%etando um Banco de Dados @imples de Aenda a Aare%o.65a(ela ?0 Inter%aces de Usu*rio da !olicitação de edidos

Inter%ace Descrição

Interface de edido XfrmedidoFostra um pedido de compra ou venda e fornece opç8esde menu e na barra de ferramentas para criar novos

 pedidos e procurar pedidos existentes.

Interface de edidos Xfrmedidos

Fostra uma lista dos pedidos existentes filtrados deacordo com o modo de operaço. /ornece opç8es demenu e na barra de ferramentas para filtrar a lista ou

 para selecionar um pedido.Interface de Atores Xfrm'tores /ornece uma lista de <lientes, /uncion&rios ou

Page 22: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 22/66

/ornecedores. /ornece opç8es de menu e na barra deferramentas para incluir ou alterar estas entidades.

Interface de Ator Xfrm'tor >ma interface de IncluirPFostrarP'lterar para asentidades de 9ndereço, <liente, /uncion&rios, ou/ornecedor.

Inter%ace de edido5 formul&rio de edido mostra pedidos e fornece uma interface para criar novos pedidos de compra e procurar por

 pedidos de compra e pedidos de venda existentes. ' interface inclui seleç8es de menu e na barra de ferramentas para pedidos novos e existentes. 5 formul&rio de edido *frmedido+ exp8em as seguintes propriedades e m(todos.5a(ela /0 ropriedades e .todos do Formul*rio de edido

ropriedadeHmtodo Descrição

edidoFodo

L=P9screve a propriedade inteira do modo dos controlesno formul&rio. 5s modos dispon)veis so descritos aseguir.IcF9?>YB'@I<5IcI?<L>IY9DID5Y<5FC'IcF5@:C'Y9DID5Y<5FC'IcF5@:C'Y9DID5YA9?D'

edido L=P9screve ob%eto da classe cedido, como definido nom4dulo de classe geral pedido.cls.

5a(ela 0 Formul*rio de edido edido.odo J ic.E7UKA!I)

9sta ( a interface da !olicitação. 5 modo de Fenu B&sico apresenta as seguintes opç8es.)pç6es do usu*rio(arra de%erramentas e menu

Estado Função

Fenu 'ruivo /echar ZouZ Barra de /erramentas /echar 

Wabilitado @ai do solpedido.exe.

Fenu 'ruivo 'brir <ompra ZouZ Barra de /erramentas 'brir <

Wabilitado

Fostra o formul&rio de edido com a listade pedidos de compra. Fuda edidoFodo

 para icF5@:C'Y9DID5Y<5FC' se

um pedido for selecionado.Fenu 'ruivo 'brir Aendas

 ZouZ Barra de /erramentas 'brir A

Wabilitado

Fostra o formul&rio de edidos com a listade pedidos de venda. Fuda edidoFodo

 para icF5@:C'Y9DID5YA9?D' se um pedido for selecionado.

Fenu 'ruivo ?ova <ompra ZouZ Barra de /erramentas ?ova <

WabilitadoFuda o edidoFodo paraicI?<L>ICY9DID5Y<5FC'.

5a(ela M0 Formul*rio de edido edido.odo J icI7LUI'KEDID)K).'A5 modo Incluir edido de <ompra ( para solicitar um pedido de compra. 9le apresenta as seguintes opç8es.)pç6es do Usu*rio Estado Função

Fenu 'ruivo <ancelar ZouZ 

Barra de /erramentas <ancelar 

Wabilitado<ancela uma solicitaço de pedido eretorna para o modo Fenu B&sico.

Fenu edido /ornecedor ZouZ Barra de /erramentas /ornecedor 

Wabilitado antes de selecionar ofornecedor 

@eleciona fornecedor para pedido*p8e a interface Atores no modo5bter/ornecedor, mostra a interfaceAtores, obt(m um fornecedor doformul&rio 'tores+.

Fenu <at&logo rocurar ZouZ Barra de /erramentas <at&logo

Wabilitado depois ue umfornecedor for selecionado

Inclui um item ao pedido *p8em ainterface rocura no modoFodo5bterItem, muda a interface

Page 23: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 23/66

rocura para /ornecedor, mostra ainterface rocura, pega o item*s+selecionado e as uantidadesfornecidas do formul&rioDetalherocura+.

Fenu <at&logo Cemover

 ZouZ Barra de /erramentas Cemover 

Wabilitado se um item do detalhe do

 pedido est& selecionado

'paga o item selecionado do detalhe

do pedido.

@ubmeter Wabilitado se o pedido no estivervazio

Inclui o pedido e os detalhes do pedido no banco de dados. @e atransaço tiver sucesso, mudaedidoFodo paraicF5@:C'Y9DID5Y<5FC' emostra o pedido.

5a(ela N0 Formul*rio de edido )rder.odo J ic.)!5'AKEDID)K).'A

)pç6es do usu*rio Estado Função

9xecutado Wabilitado Cetorna ao modo Fenu B&sico.

edidos Wabilitado

@eleciona um pedido de compraexistente *p8em a interface edidos 

no modo <ompra9xistente, mostra osedidos, pega o pedido do formul&rioedidos, mostra o pedidoselecionado+.

Formul*rio edidos edido.odo J ic.)!5'AKEDID)K).'A@imilar ao icF5@:C'Y9DID5Y<5FC'.

Inter%ace de edidos

5 formul&rio de edidos fornece um modo de selecionar um pedido existente de uma lista. ' lista de pedidos decompra deve ser filtrada de acordo com o fornecedor e a de pedidos de venda deve ser filtrada por cliente. 5formul&rio de edidos *frmedidos+ exp8em as seguintes propriedades e m(todos.5a(ela O0 ropriedades e .todos do Formul*rio de edidos

ropriedadeHmtodo Descrição

edidosFodo

L=P9screve a propriedade inteira do modo dos controlesno formul&rio.ic9DID5@Y<5FC' mostra a lista de pedidos decompra.ic9DID5@YA9?D' mostra a lista de pedidos devenda.

edidoL=P9screve o ob%eto da classe cedido, como definidono m4dulo de classe geral pedido.cls.

<liente

L=P9screve o ob%eto da classe c<liente, como definidono m4dulo da classe comum cliente.cls. Ceferencia ocliente de um pedido de venda selecionado. 'tribuindoesta propriedade filtra a lista de pedidos de venda para oa do cliente.

/uncion&rio

L=P9screve o ob%eto da classe c/uncionario, comodefinido no m4dulo da classe comum funcionario.cls.Ceferencia o funcion&rio associado com o pedido decompra selecionado.

/ornecedor 

L=P9screve o ob%eto da classe c<ontato, como definidono m4dulo da classe comum contato.cls. Ceferencia ofornecedor d pedido de compra selecionado.'tribuindo esta propriedade filtra a lista de pedidos decompra para as do fornecedor.

Page 24: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 24/66

5a(ela 10 Formul*rio de edidos edidos.odo J icEDID)!K).'A

Fostra uma lista de pedidos de compra filtrada por fornecedor.)pç6es do usu*rio Estado Funç6es

Barra de /erramentas <ancelar Wabilitado

<ancela a seleço do pedido. Fudaas propriedades edido, liente, eFornecedor para ?othing e esconde

o formul&rio.

Barra de /erramentas /ornecedor Wabilitado@eleciona um fornecedor para filtrar alista de pedidos. >sa serviços dofrm'tores.

Barra de /erramentas @elecionar ZouZ Lista Duplo-cliue

Wabilitado uando um pedido (selecionado na lista

@eleciona pedido da lista e esconde oformul&rio, retornando o controle

 para o c4digo cliente. Fuda as propriedades de edido,Funcion*rio, e Fornecedor correspondente ao pedido de compraselecionado.

5a(ela 110 Formul*rio de edidos edidos.odo J icEDID)!K#E7DA

Fostra a lista de pedidos de venda filtrada por cliente.

)pç6es de usu*rio Estado Função

Barra de /erramentas <ancelar Wabilitado

<ancela a seleço do pedido. Fuda a propriedade edido para ?othing eesconde o formul&rio, retornando ocontrole para o c4digo cliente.

Barra de /erramentas <liente Wabilitado@eleciona o cliente para filtrar a listade pedidos. >sa serviços defrm'tores.

Barra de /erramentas @elecionar ZouZ Lista Duplo-cliue

Wabilitado uando um pedido (selecionado na lista

@eleciona o pedido da lista e escondeo formul&rio, retornando o controle

 para o c4digo cliente. Fuda as propriedades edido, liente, eFuncion*rio de acordo com o pedido

de venda selecionado.

Inter%ace de Atores

5 formul&rio 'tores fornece um modo de selecionar um <liente, /uncion&rio, ou /ornecedor de uma lista ou comoIncluirP'lterar estas entidades. 5 formul&rio 'tores *frm'tores+ exp8em as seguintes propriedades e m(todos.5a(ela 1-0 ropriedades e .todos do Formul*rio Atores

ropriedadeHmtodo Descrição

'toresFodo

L=P9screve a propriedade inteira do modo dos controlesno formul&rio. 5s modos dispon)veis so descritos aseguir.Ic5B:9CY<LI9?:9Ic5B:9CY/5C?9<9D5C Ic5B:9CY/>?<I5?'CI5

<lienteL=P9screve o ob%eto da classe c<liente, como definidono m4dulo de classe geral ccliente.cls. S um clienteselecionado.

/uncion&rioL=P9screve o ob%eto da classe c/uncion&rio, comodefinido no m4dulo de classes comuns cfuncionario.cls.S um funcion&rio selecionado.

/ornecedor L=P9screve o ob%eto da classe c<ontato, como definidono m4dulo de classes comuns ccontato.cls. S um

Page 25: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 25/66

fornecedor selecionado.5a(ela 140 Formul*rio Atores Atores.odo J ic)5E'KLIE75E, ic)5E'KF)'7EED)' ou

ic)5E'KFU7I)7A'I)

)pç6es de usu*rio Estado Função

Barra de /erramentas <ancelar Wabilitado

<ancela uma seleço. Fuda as propriedades de liente,

Funcionario, ou Fornecedor para ?othing *de acordo com o modo+ eesconde o formul&rio, retornando ocontrole para o c4digo cliente.

Barra de /erramentas 'lterar Wabilitado uando um item da listaest& selecionado

'ltera a entidade selecionada usandoserviços de frm'tor.

Barra de /erramentas ?ovo WabilitadoInclui uma nova entidade usandoserviços de frm'tor.

Barra de /erramentas @elecionar ZouZ Lista Duplo-cliue

Wabilitado uando um item da listaest& selecionado

@eleciona o <liente, /uncionario, ou/ornecedor da lista e esconde oformul&rio, retornando o controle

 para o c4digo cliente. Fuda a propriedade de liente,Funcion*rio, ou Fornecedor para aentidade selecionada.

Inter%ace de Ator

5 formul&rio 'tor fornece um modo para incluir, mostrar ou alterar um <liente, /uncion&rio, 9ditor, 9ndereço de9ntrega, ou /ornecedor.5 formul&rio 'tor *frm'tor+ exp8em as seguintes propriedades e m(todos.5a(ela 1?0 ropriedades e .todos do Formul*rio Ator

ropriedadeHmtodo Descrição

'torFodo

L=P9screve a propriedade inteira do modo dos controlesno formul&rio. 5s modos dispon)veis so descritos aseguir.

IcI?<L>IY9?D9C9<5IcF5@:C'Y9?D9C9<5Ic'L:9C'Y9?D9C9<5IcI?<L>IY<LI9?:9IcF5@:C'Y<LI9?:9Ic'L:9C'Y<LI9?:9IcI?<L>I Y/>?<I5?'CI5IcF5@:C' Y />?<I5?'CI5Ic'L:9C' Y />?<I5?'CI5IcI?<L>I Y/5C?9<9D5C IcF5@:C' Y /5C?9<9D5C Ic'L:9C' Y /5C?9<9D5C 

9ndereçoL=P9screve o ob%eto da classe c9ndereco, como definidono m4dulo de classes comuns endereco.cls.

<lienteL=P9screve o ob%eto da classe c<liente, como definidono m4dulo de classe geral cliente.cls.

/uncion&rioL=P9screve o ob%eto da classe c/uncionario comodefinido no m4dulo de classe geral funcionario.cls.

/ornecedor L=P9screve o ob%eto da classe c<ontato como definidono m4dulo de classe geral contato.cls.

5a(ela 1/0 Formul*rio Ator Ator.odo J icI7LUIKE7DE'E), icI7LUI KLIE75E, icI7LUI

 KFU7I)7A'I) ou icI7LUI KF)'7EED)' 

Page 26: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 26/66

)pç6es de usu*rio Estado Função

Barra de /erramentas <ancelar Wabilitado

<ancela a transaço. Fuda a propriedade de Endereço, liente,Funcionario, ou Fornecedor para

 ?othing e esconde o formul&rio,retornando o controle para o c4digo

cliente.

Incluir Wabilitado

9xecuta a transaço. Inclui um<liente, /uncion&rio, ou /ornecedorno banco de dados, muda o ob%eto<liente, /uncion&rio ou /ornecedor

 para uma nova entidade, e esconde oformul&rio se teve sucesso. Fostramensagens de erro e retorna ocontrole para o usu&rio se no tevesucesso.

 ?o modo de Incluir 9ndereço, mudao ob%eto 9ndereço para um novoendereço.

5a(ela 10 Formul*rio Ator Ator.odo ic.)!5'AKE7DE'E), ic.)!5'A KLIE75E, ic.)!5'A KFU7I)7A'I) ou ic.)!5'A KF)'7EED)' 

)pç6es de usu*rio Estado Função

Barra de /erramentas <onclu)do Wabilitado9sconde o formul&rio, retornando ocontrole para o c4digo cliente.

5a(ela 1M0 Formul*rio Ator Ator.odo J icAL5E'AKLIE75E, icAL5E'A KFU7I)7A'I) ouicAL5E'A KF)'7EED)' 

@imilar ao modo Incluir com opç8es de alterar em vez de incluir.

Usando e Implementando as Inter%aces'gora, com o fluxo de dados e as interfaces de usu&rio especificadas, iremos fornecer um r&pido demo do c4digofonte mostrando como os componentes da >I funcionam bem em con%unto. 'p4s mostrar os componentes

funcionando em con%unto, iremos nos aprofundar em mais detalhes.Usando os Formul*rios

5 seguinte segmento de c4digo mostra como usar o formul&rio edidos para selecionar um pedido de compraexistente e para obter ob%etos de dados representando o pedido selecionado, o funcion&rio ue criou o pedido decompra, e o fornecedor' Configura o formulário de pedidos para listar os pedidos de comprafrmPedidos.PedidosModo = icPEDIDOS_COMPRSet frmPedidos.Pedido = m_oPedido' Mostra o formulário de pedidos como uma !anela modalfrmPedidos.S"o# $%Modal' O%t&m o pedido selecionado com os o%!etos funcionário e fornecedorSet m_oPedido = frmPedidos.Pedido

Set m_ouncionario = frmPedidos.uncionarioSet m_oornecedor = frmPedidos.ornecedor

De modo similar, o seguinte segmento de c4digo mostra como usar o formul&rio 'tores para selecionar um cliente' Configura o formulário atores para listar clientesfrmtores.toresModo = icO()ER_C*IE+)ESet frmtores.Cliente = m_o Cliente' Mostra o formulário atores como uma !anela modalfrmtores.S"o# $%Modal' O%t&m o o%!eto cliente selecionadoSet m_oCliente = frmctors.Cliente

Page 27: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 27/66

'gora iremos usar os serviços de mais de um formul&rio para criar um pedido de compra. ' seguinte se[=ncia podeser obtida da opço ?ova <ompra do formul&rio de edido mas, para mostrar como os serviços dos formul&rios delivre posicionamento podem ser usados de um modo no previsto pelo pro%etista original, iremos usar os serviços donovo pedido diretamente de um parte do c4digo cliente.

0. Fostra o formul&rio edidofrmPedido.Modo = +o$oPedidoComprafrmPedido.S"o# $%Modal

1. >su&rio seleciona o boto Fornecedorfrmtores.Modo = O%terornecedorfrmtores.S"o# $%ModalSet o+o$oornecedor = frmtores.ornecedor' *impa os itens do pedido se outro fornecedor esta$a selecionadoIf +ot o+o$oornecedor Is +ot"ing )"enIf +ot oornecedor Is +ot"ing )"enIf o+o$oornecedor.Codigo ,- oornecedor.Codigo )"en' ornecedor mudou entao limpa itens da listal$#Itens.Items.ClearSet cItemDetal"es = +e# clsItemDetal"esEnd I

End IfEnd if

2. >su&rio seleciona o boto rocurar' O formulário procura !á usou o cac"e para o par item/uantidade de um' 'pedido'.frmProcura.SetOrdera%le )rue' *impa 'pedido' anteriorSet frmProcura.Pedidos = +ot"ing' iltrar os itens do catalogo pelo fornecedor selecionadofrmProcura.MudaornecedorID m_oornecedor.Codigo' Mostra o formulário como modalfrmProcura.S"o# $%Modal' Inclui itens /ue foram selecionados para a cole01o detal"es do pedido

If C(ool2frmProcura.O%terPedidoConta3 )"en  or i = 4 )o frmProcura.O%terPedidoConta  Set oPedidoDet = frmProcura.O%terPedido2i3  ' 5sa um ID temporário para ser su%stitu6do pelo autocontadordo %d  oPedidoDet.Codigo = Pro7imoDetID  sC"a$e = Pedido8eral.IDParaC"a$e2oPedidoDet.Codigo3  ' Inclui na cole01o  m_cPedidoDetal"es.Incluir oPedidoDet9 sC"a$e  Set oPedidoDet = +ot"ing  +e7tEnd If' Regras de negocio para mudan0as no pedidoSomaPedido

' Refres" a lista de detal"ePreenc"e*ista:ie#' Refres" controles do formuláriotuali;a5I

H. >su&rio seleciona o boto !u(meter5 seguinte c4digo passa o pedido para as regras de neg4cio ue validam o pedido e tentam inclui-lo no banco dedados. @e teve sucesso, a interface ( retornada para o modo de Fenu B&sico e mostrada de novo. @e o pedido noest& completo ou no passa pela validaço, a mensagem de erro apropriada ( exibida e o controle ( retornado aousu&rio

Page 28: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 28/66

' Su%mete o pedido ao %anco de dados  If Msg(o72scCO+IRM PR_E+:IR9 $%<es+o3 = $%<es )"en' Passa o pedido para as regras de negcio gerenciando o en$io  If En$iarPedido )"en  Msg(o7 2scE+:IR_S5CESSO3  ' Coloca o formulário no modo menu %ásico e refres"  m_iPedidoModo = PEDIDO_MODO.icME+5_(SICO  ' Configura os controles do formulário  Configuraorm  ' Refres" lista de detal"es  Preenc"e*ista:ie#  ' tuali;a 5I  tuali;a5I  End If  End If

)s r8ximos assos9m ue momento a aruitetura ue foi implementada aui ir& necessitar de reviso para satisfazer o crescimento dalivraria pelos cen&rios destacados no artigo 6>ma Introduço ao 9xemplo da Livraria Duwamish6\ <omo descrito

na viso geral, o acesso a dados primeiro ir& ser encapsulado em uma 'I ue suporta todas as transaç8es ue foramidentificadas aui. Isto far& com ue a aplicaço se%a f&cil de manter, porue todo o c4digo de acesso a dados estar&em um $nico lugar, e ir& fornecer outros benef)cios como melhor segurança dos dados e escalonamento. 5 c4digo deacesso a dados ir& necessitar de revis8es.rimeiro, vamos destacar alguns dos bons pontos deste pro%eto

• 9le usa c4digo de acesso a dados geral sempre ue poss)vel e organiza o c4digo de acesso a dados separadodo c4digo das regras de neg4cio e do c4digo de apresentaço. Isto ir& facilitar a transiço para a /ase 1onde os serviços de acesso a dados so fornecidos por um componente separado.

• Fesmo ue o c4digo compartilhado geral em dadosYapi.bas no gerencie o tratamento de m$ltiplasmudanças ao banco de dados como uma $nica transaço, inclu)mos c4digo ue trata as partes da inclusode um pedido como uma $nica transaço. Isto funciona bem porue estas transaç8es esto sempre incluindoregistros ao inv(s de atualizar registros ue esto em uso por outras aplicaç8es.

• ' t(cnica de copiar dados do banco de dados em ob%etos de dados locais na mem4ria e retornando ao bancode dados somente uando os dados para uma mudança foi preparado ( amig&vel ao banco de dados pelomotivo de ue ele no mant(m os registros abertos por muito tempo causado travamento de registrosdesnecessariamente. Isto reduz os problemas com travamento de registro conforme o n$mero de usu&riosaumenta.

• elo fato do c4digo de acesso a dados ser compilado %unto com a aplicaço torna-o menos propenso aotratamento como ob%eto do ponto de vista de gerenciamento porue as fontes de dados *5DB<+ podem serconfiguradas para cada cliente.

9mbora o pro%eto tenha estes pontos fortes, a migraço para a /ase 1 ir& destacar um ponto fraco no pro%etoFudanças na tecnologia de acesso a dados ir& reuerer ue toda a aplicaço se%a modificada, recompilada, ereinstalada. <olocando o c4digo de acesso a dados em um componente separado, mudanças ao acesso a dados

 podem ser feitas sem mudanças na aplicaço cliente.Depois da /ase 1, as regras de neg4cio sero desmembradas de tal forma ue elas possam ser revisadas sem ter uereconstruir a aplicaço e, finalmente, as interfaces de usu&rio identificadas aui sero refinadas de tal forma ue elasfuncionem bem em um ambiente distribu)do e se tornem independentes da linguagem.

Page 29: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 29/66

oordenando #endas e Esto$ue

onto de #enda da Livraria Duwamish, Fase 1

!um*rio; Descreve a aplicaço onto de Aenda. *0 p&ginas impressas+ <onhecimento em Aisual Basic, pro%eto

 b&sico de banco de dados, e a aplicaço de @olicitaço de edidos da Livraria Duwamish sero $teis. Discute• <riando uma venda, incluindo os atributos de uma entidade venda

• :ransaç8es de Banco de Dados

• ro%eto de Interface

• 9xemplo de c4digo

Introdução ?este artigo iremos descrever a aplicaço de onto de Aenda *DA+ usada na /ase 0 do exemplo da LivrariaDuwamish.

' aplicaço onto de Aenda automatiza funç8es para a sa)da de produtos e controle de estoue para uma peuenalivraria. :amb(m gerencia os pedidos a serem entregues e pedidos para itens ue no esto no estoue. 9la emprestainterfaces da aplicaço <at&logo *ve%a 6rocurando no 9stoue 'plicaço <at&logo da Livraria Duwamish, /ase 06+e da aplicaço de @olicitaço de edidos.<omo a aplicaço de onto de Aenda ( em termos de aruitetura similar a aplicaço de @olicitaço de edidos uedescrevemos em 6<onstruindo uma 'plicaço de @olicitaço e 'companhamento de edidos @olicitaço de edidoda Livraria Duwamish, /ase 0,6 iremos nos focar aui no ue for $nico para esta aplicaço e fazer somente brevesrefer=ncias ao ue for igual.

Fluxo de Dados' aplicaço DA obt(m o nome do funcion&rio da aplicaço chamadora da Duwamish.' aplicaço DA cria entidades de venda e detalhes de venda ue representam a troca de mercadoria por moeda. @ea venda envolve entrega ou um pedido especial, a aplicaço DA gera um pedido de venda. ' aplicaço tamb(mgera entidades de transaço de estoue para vendas em ue o cliente leva a mercadoria no ato. >m pedido de vendarepresenta uma venda ue reuer entrega ou outro processamento. >m pedido representa a intenço de umatransaço de neg4cio, a ual est& conectada, atrav(s das aplicaç8es onto de Aenda e 9ntrega e Cecebimento, astransaç8es de estoue ue representam o fluxo real de itens de mercadoria pela lo%a.

#enda

>ma venda representa uma troca de mercadoria por moeda com um cliente. :abela 0 lista os atributos de umaentidade de venda.5a(ela 10 Entidade #enda

Atri(utos Descrição

<odigo Identifica uma $nica venda. ?um<liente Identifica o cliente.

 ?umedido Identifica um pedido de venda *uando um pedido especial ou uma entrega (reuerida+. ?um/uncionario Identifica o funcion&rio ue efetuou a venda.DataAenda Indica a dataPhora uando a venda foi inclu)da no banco de dados.@ub:otal ' soma de todos os itens na venda.Imposto 5 imposto calculado para a venda total.:ipoagamento ode ser dinheiro, cheue ou carto de cr(dito.

 ?um<artao<redito ara vendas com carto de cr(dito.DataAalidade ara vendas com carto de cr(dito.

Page 30: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 30/66

 ?ome?o<artao ara vendas com carto de cr(dito.9ntrega Indica ue a venda ( para ser entregue.

edido de #enda

>m pedido de venda representa um pedido ue reuer mais processamento ue um simples venda 6cliente compra eleva um livro6. 9ste tipo de venda deve ser entregue ou reservada para o cliente e deve reuerer itens a serem

 pedidos. edidos de venda so gerados pela aplicaço onto de Aenda uando a uantidade vendida exceder auantidade em mos ou uando a opço de entrega for selecionada.>m pedido de venda usa os atributos na :abela 1 da entidade pedido.5a(ela -0 Atri(utos do edido de #enda

Atri(utos Descrição

<odigo Identifica um $nico pedido. ?um<liente Identifica o cliente. ?um/uncionario Identifica o funcion&rio ue efetuou o pedido.Dataedido Indica a dataPhora em ue o pedido foi inclu)do no bando de dados.DataCetirada Indica a dataPhora em ue o pedido foi retirado pelo cliente.@tatus Indica onde o pedido est& no seu tempo de vida.9hAenda Aerdadeiro indica ue o pedido ( um pedido de venda.

5empo de vida do pedido de venda

>m pedido de venda tem os seguintes estado durante o seu tempo de vida0. @5LI<I:'D5 indica ue o pedido foi solicitado. ' aplicaço onto de Aenda inclui pedidos de venda no

 banco de dados com o status @5LI<I:'D5.

1. C5?:5 indica ue o pedido est& pronto para ser entregue. ' aplicaço de @olicitaço de edido promoveos pedidos de @5LI<I:'D5 para C5?:5 uando existir estoue suficiente.

2. 9?:C9;>9 indica ue partes do pedido foram entregues. ' aplicaço 9ntrega e Cecebimento promoveum pedido de venda para o status de 9?:C9;>9.

H. IC'<W'F'C indica ue partes de um pedido foram reservadas para retirada pelo cliente. ' aplicaço

9ntrega e Cecebimento faz esta atualizaço.

3. <5FL9:'D5 indica ue todas as partes do pedido foram entregues ou foram reservadas para retirada pelo cliente.

)r&aniGação da Aplicação' aplicaço DA usa o seu pr4prio formul&rio principal como interface de usu&rio. 9la empresta o formul&rio de

 procura geral e o formul&rio de detalhes dos itens *descrito em 6rocurando no 9stoue 'plicaço <at&logo daLivraria Duwamish, /ase 06+ para os serviços de cat&logo e usa o formul&rio geral atores e ator *descrito em6<onstruindo uma 'plicaço de @olicitaço e 'companhamento de edido6+ para serviços de clientes e entrada deendereço de entrega. ' aplicaço tamb(m usa o c4digo geral de acesso a dados em dadosYapi.bas sempre ue

 poss)vel e usa ob%etos de dados definidos pelos m4dulos de classe geral para representar clientes, venda, detalhe davenda, item, e outras entidade de dados.

Inter%aces de Usu*rio' interface do DA ( pro%etada para entrar um venda rapidamente sem ue ha%a a necessidade de um dispositivo deapontamento. ' barra de ferramentas, o menu, e a navegaço pelo formul&rio usam teclas de atalho al(m das teclastab e das setas e a aplicaço controla o foco dinamicamente. ' interface tamb(m fornece uma variedade de m(todosde procura para clientes e mercadorias. ' :abela 2 descreve as funç8es da interface de usu&rio fornecidas pelaaplicaço.5a(ela 40 Funç6es da Inter%ace de Usu*rio da D#

Page 31: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 31/66

ontrole Descrição

<aixa de texto 7ome do liente

'ceita entrada do usu&rio do nome do cliente e retorna amelhor comparaço com o banco de dados.Fostra o nome do cliente uando um cliente (selecionado.

Boto da Barra de /erramentas liente

@eleciona um cliente usando os serviços do formul&rio

geral atores. /ornece funç8es para IncluirHAltera  clientes.

<aixa de texto ID ou 5itulo

'ceita entrada do usu&rio de um item e retorna a melhor comparaço com o banco de dados.

 ZouZ 'ceita um t)tulo parcial e retorna a melhor comparaçoou preenche a lista de t)tulos se m$ltiplos itenssatisfazem a comparaço.Fostra o item e o t)tulo uando um item ( selecionado.

Lista 53tulos Fostra a lista de t)tulos retornada da procura de t)tulo.

Barra de /erramentas atalo&o

/ornece funço completa de procura do cat&logo comconstrutor integrado de pedido usando serviços da

 procura geral e formul&rios ItemDetalhe.

<aixa de texto :uantidade 'ceita entrada do usu&rio da uantidade para o itemselecionado.

Entre&a chec" box ZouZ 5pço de menu venda Entre&a

Farca o pedido para ser entregue. 'utomaticamenteselecionado uando o item uantidade exceder auantidade em estoue.

Lista Detalhes #enda@eleciona o detalhe da venda.Fostra detalhes da venda atual.

Lista #enda anterior Fostra os detalhes da venda anterior por cliente.Boto da Barra de /erramentas !u(meter 

 ZouZ 5pço de menu 'ruivo !u(meter #enda

@ubmete a venda ao banco de dados.

Boto da Barra de /erramentas Entre&ar ara /ornece substituiço do endereço de entrega do cliente.

>sa serviços do formul&rio geral ator.Boto da Barra de /erramentas 'emover  Cemove da venda os itens do detalhe selecionados.Boto da Barra de /erramentas Limpar 

 ZouZ 5pço de menu 'ruivo Limpar #enda 

Limpa os dados da venda.

Boto da Barra de /erramentas !air  ZouZ 5pço de menu 'ruivo !air 

@ai da aplicaço DA.

Implementação' aplicaço DA ( usada para construir e submeter dados ue representam vendas da livraria. 5s seguintesexemplos de c4digo mostram partes do processo de construir uma venda, e como a venda ( aplicada ao banco dedados.

onstruindo a venda

>ma venda ( criada selecionando um cliente e incluindo itens a venda. 9mbora estes processos no tenham ueocorrer neta ordem, iniciaremos por selecionar um cliente. 5 controle do nome do cliente aceita entrada de um nomefantasia para o cliente ou de um apelido e tenta encontrar o cliente usando estes peuenos identificadores pessoais.5s seguintes segmentos de c4digo mostram como um ob%eto cliente ( populado pela melhor comparaço do nomefantasia uando o controle do nome do cliente *txt7omeliente+ tem o foco e o usu&rio pressiona a tecla 9?:9CPri$ate Su% t7t+omeCliente_>e?Do#n2>e?Code s Integer9 S"ift s Integer3Select Case >e?Code

Page 32: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 32/66

@Case :(R5+.$%>e?Return  ' Popula o o%!eto cliente com a mel"or compara01o do %anco de dados  If PD:8eral.O%terClientePretendido2m_oCliente9 t7t+omeCliente3 )"en@

' seguinte procedure constr4i uma uerU, usa a interface de programaço de aplicaç8es *'I+ de dados gen(rica para recuperar dados do banco de dados, e popula o ob%eto clienteunction O%terClientePretendido2(?Ref oCliente s cCliente9 _  (?:al t7tCliente s String3 s (oolean' Popula oCliente com a mel"or compara01o com t7tClienteDim oRecordset s DOD(.Recordset@' Constri /uer?sAr? = scSE*_*I>E_C*IE+)E_P B t7tCliente B scSE*_*I>E_C*IE+)E_S@' Recupera recordsetIf cessoDadosPI.O%terRecordset2D5MISDS+9 sAr?9 oRecordset3 )"en@' Seta o o%!eto cliente para um no$o o%!etoSet oCliente = +ot"ing

Set oCliente = +e# cCliente' Popula o o%!eto clienteit" oCliente.Codigo = oRecordsetCodigo  If +ot Is+ull2oRecordsetpelido3 )"en .peliso = oRecordsetpelido  If +ot Is+ull2oRecordsetSo%renome3 )"en .So%renome = oRecordsetSo%renome@

5 boto da barra de ferramentas liente obt(m um ob%eto cliente usando os serviços do formul&rio geral atores, ueest& documentado em 6<onstruindo uma 'plicaço de @olicitaço e 'companhamento de edido.65 pedido pode ser preenchido tanto entrando itens nos controles ID ou :)tulo *txt5ituloI!7+ como atrav(s do

 boto da barra de ferramentas at*lo&o. 9m 6 <onstruindo uma 'plicaço de @olicitaço e 'companhamento deedido,6 documentamos o uso do formul&rio de procura geral para construir um pedido, portanto neste artigo iremosnos focar nos outros m(todos de incluso de itens. Nuando txt5ituloI!D7 tem o controle e o usu&rio pressiona a

tecla 9?:9C, o seguinte c4digo primeiro determina se o texto digitado um item de ID e procura por t)tulos uecoincidam com o digitado se ele determinar ue o texto ( parte de um t)tuloIf PD:8eral.O%terItemPretendido2oItem9 t7t)ituloIS(+3 )"en@Else  ' Preenc"e a cole01o de itens para compara01o com t6tulos parciais  If PD:8eral.O%terItensPretendidos2oItens9 t7t)ituloIS(+3 )"en  @' Esconde a cai7a de te7to e preenc"e a lista de t6tulos com os itens  t7t)ituloIS(+.:isi%le = alse  cm%)itulo.Clear  or Eac" oItem In oItens  cm%)itulo.ddItem oItem.)itulo  cm%)itulo.ItemData2cm%)itulo.+e#Inde73 = oItem.Codigo

  @  +e7t@

'ui est& a procedure ue preenche a coleçoPu%lic unction O%temItensPretendidos2(?Ref oItens s cItens9 _  (?:al t7tItem s String3 s (oolean@' Iniciali;a oItensSet oItens = +ot"ing

Page 33: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 33/66

Set oItens = +e# cItens

' Constri /uer?sAr? = scSE*_*I>E_I)E+S_P B t7tItem B scSE*_*I>E_I)E+S_SIf cessoDadosPI.O%terRecordset2D5MISDS+9 sAr?9 oRecordset3 )"en  If oRecordset.RecordCount )"en  O%temItensPretendidos = )rue  Do "ile +ot oRecordset.EO  Set oItem = +e# cItem  it" oItem  .+umItem = oRecordset+umItem  If +ot Is+ull2oRecordsetItem)ipoId3 )"en  .Item)ipoId = oRecordsetItem)ipoId  End If  If +ot Is+ull2oRecordset+umutor3 )"en  .+umutor = oRecordset+umutor  End If  @  End it"  ' Prepara o $alor da c"a$e para o item

  sC"a$e = ormata+umItemComoC"a$e2oItem.+umItem3  ' Inclui o item na cole01o de itens  oItens.dd oItem9 sC"a$e  ' *i%era a $aria$el o%!eto

Set oItem = +ot"ing  ' Mo$e para o pr7imo registro  oRecordset.Mo$e+e7t  *oop  End If  Set oRecordset = +ot"ingEnd If..

!u(meter a #enda

9mbora usemos a 'I de acesso a dados geral em dadosYapi.bas sempre ue poss)vel nesta aplicaço, a relaço paiPfilho entre registros de venda e detalhes e a necessidade de agrupar v&rias mudanças nos dados como uma $nicatransaço reuer c4digo especial de acesso a dados. 5s seguintes segmentos de c4digo mostram como os ob%etos dedados de venda so inclu)dos no banco de dados ap4s serem processados pelo c4digo de regras de neg4cio@'O%t&m a cone71o e inicia transa01oSet oConn = +e# DOD(.ConnectionoConn.Open sConne7aooConn.(egin)rans

' primeira parte da transaço ( incluir um registro na tabela de vendas. >m cursor do tipo "eUset usando otravamento de registro otimista permite ue o registro se%a lido ap4s a incluso para recuperar o <odigo geradoautomaticamente, o ual ser& usado para relacionar os detalhes da venda com a entidade venda' Incluir $endaSet oRset = +e# DOD(.RecordsetSet oRset.cti$eConnection = oConnoRset.Cursor)?pe = adOpen>e?setoRset.*ocF)?pe = ad*ocFOptimisticoRset.Open sc)(E*_:E+DS9 9 9 9 adCmd)a%le' Inclui registro de $endaoRset.dd+e#' Copia dados do o%!eto $enda para o registro $endait" o:enda

Page 34: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 34/66

  oRset+umCliente = .+umCliente  If .+umPedido )"en  oRset+umPedido = o:enda.+umPedido  End If  oRset+umuncionario = .+umuncionario@End it"' tuali;a registro de $endaoRset.5pdate' 8uarda Codigo do registro de $enda para ser usado nos detal"es da $endao:enda.Codigo = oRsetCodigooRset.CloseSet oRset = +ot"ing

>sando o mesmo cursor e tipo de travamento para os detalhes da venda, o <odigo pode ser conservado para serusado nas entidades de transaço de estoue' Incluir detal"es da $endaSet oRset = +e# DOD(.RecordsetSet oRset.cti$eConnection = oConnoRset.Cursor)?pe = adOpen>e?setoRset.*ocF)?pe = ad*ocFOptimistic

oRset.Open sc)(E*_:E+D_DE)*ES9 9 9 9 adCmd)a%le

or Eac" oSaleDet In o:endaDetal"es  oRset.dd+e#  oRset+um:enda = o:enda.Codigo  it" o:endaDet  oRsetItemId = .ItemId  oRsetPreco5nitario =.Preco5nitario  oRsetAuantidade = .Auantidade  End it"  ORset.5pdate  ' 8uarda o Codigo do registro de detal"e da $enda no o%!eto de detal"e da$enda  o:endaDet.Codigo = oRsetCodigo+e7toRset.CloseSet oRset = +ot"ing

5 seguinte c4digo a%usta o estoue em casos o cliente est& levando a mercadoria. 5s registros de transaço deestoue podem ser inclu)dos em lote porue no ( reuerido nenhuma leitura ap4s a atualizaço. 'lteraç8es nauantidade 9m9stoue reuer uma se[=ncia de alteraço e leitura portanto cada registro ( travado, lido, e alteradoindividualmenteIf +ot o:enda.Entrega )"en  Set oRset = +e# DOD(.Recordset  Set oRset.cti$eConnection = oConn  oRset.Cursor)?pe = adOpen>e?set  oRset.*ocF)?pe = ad*ocF(atc"Optimistic  oRset.Open sc)(E*_ES)OA5E_CO+)RO*E9 9 9 9 adCmd)a%le

  ' Inclui uma entidade de acompan"amento de esto/ue para cada transa01o deesto/ue  or Eac" o:endaDet In o:endaDetal"es  oRset.dd+e#  oRset+umItem = o:endaDet.+umItem  oRset+umuncionario = o:enda.+umuncionario  oRset+um)ransacao = o:endaDet.Codigo  oRsetE":enda = )rue  oRsetAuantidade = G4 H o:endaDet.Auantidade  oRsetData)ransacao = tDate

Page 35: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 35/66

  oRset.5pdate  +e7t  oRset.5pdate(atc"  oRset.Close  Set oRset = +ot"ing

' dusta o campo EmEsto/ue para cada detal"e  or Eac" o:endaDet In o:endaDetal"es  sAr? = scSE*ECIO+_I)EM_EMES)OA5E B o:endaDet.+umItem  Set oRset = +e# DOD(.Recordset  Set oRset.cti$eConnection = oConn  oRset.Cursor)?pe = adOpen>e?set  oRset.*ocF)?pe = ad*ocFOptimistic  oRset.Open sAr?9 9 9 9 adCmd)e7t  If +ot oRset.EO )"en  oRsetEmEsto/ue = oRsetEmEsto/ue G o:endaDet.Auantidade  oRset.5pdate  End If  oRset.Close  Set oRset = +ot"ing

  +e7t

End If

' seguinte seço grava todas as partes da transaço como uma $nica, e terminaoConn.Commit)ransoConn.CloseSet oConn = +ot"ingIncluir:enda = )rueE7it unction

>m erro em ualuer ponto causa a falha de toda a transaço e notifica a procedure [email protected]%acF)ransoConn.CloseSet oConn = +ot"ingIncluir:enda = [email protected] lErr+o9 O(J+ME9 sErrDesc@

onclusão' aplicaço DA ( a aplicaço com transaço mais intensa da /ase 0. <omo detalhado acima, cada transaço devenda em ue o cliente recebe a mercadoria imediatamente faz com ue registros se%am inclu)dos em tr=s tabelas ealterados em uma tabela. <ada venda em ue a mercadoria ( entregue posteriormente faz com ue registros se%aminclu)dos em uatro tabelas com alteraço no estoue gerenciado mais tarde pela aplicaço de 9ntrega. '

 probabilidade de contenço de alteraç8es no ( grande uando as alteraç8es de estoue ( feita por uma $nica caixa

registradora e por entregaPrecebimento, mas aumenta uando mais caixas registradoras so adicionadas. ' aplicaçoDA se recupera de uma coliso de dados solicitando ao usu&rio pressionar o boto !u(meter para tentar de novo.Fas conforme a probabilidade de coliso aumenta, a forma como elas so evitadas e a forma como elas soresolvidas torna-se t4picos cr)ticos do pro%eto. 's fases remanescentes do exemplo da Livraria Duwamish ir&apresentar soluç8es para estes problemas conforme detalhemos o caminho da migraço de uma escala des"top paraum empreendimento em larga escala.

Page 36: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 36/66

riando um liente Uni%icado para Entre&a

e 'ece(imento

Entre&a e rece(imento da Livraria Duwamish, Fase 1!um*rio; Descreve as aplicaç8es de 9ntrega e Cecebimento. * p&ginas impressas+ <onhecimento em Aisual Basic,'D5, e pro%eto orientado a ob%eto ser& $til. Discute

• 9ncapsulamento de dados

• ro%eto de Interface

• 9xemplos de c4digo

Introdução9ste artigo descreve a aplicaço de 9ntrega e Cecebimento usada na /ase 0 na aplicaço do exemplo da LivrariaDuwamish. Ae%a introduço ao exemplo, 6Livraria Duwamish,6 para detalhes relativos as fases. ' aplicaço de

9ntrega e Cecebimento ( mais uma de uma s(rie de aplicaç8es des"top ue em con%unto automatizam alguns dos processos rotineiros do neg4cio de uma peuena livraria.

) @rande en*rio5 processo de incluir itens e remover itens do estoue constitui o processo de entrega e recebimento. 5 processo derecebimento ( direcionado por um pedido de compra e o processo de entrega ( direcionado pela venda.

 ?ormalmente, receber itens no estoue reuer uma pessoa de recebimento para remover a lista de confer=ncia do pacote e comparar com um pedido de compra previamente criado. 9ste pedido de compra contem o nome dofornecedor e uma lista de itens solicitados. ' pessoa de recebimento contabiliza cada item recebido, grava auantidade real, e muda a uantidade no estoue pela uantidade recebida.' aplicaço de 9ntrega e Cecebimento ue desenvolvemos para o exemplo da Livraria Duwamish gerencia os$ltimos passos automaticamente. Nuando um pedido chega, a pessoa de recebimento seleciona o n$mero do pedidode compra de uma lista drop-down ue contem os assombrosos pedidos de compra. 5 formul&rio mostra os detalhes

do pedido de compra, incluindo o fornecedor e a lista de itens solicitados. ' partir desta lista, cada item recebido (selecionado, uma uantidade ( informada, e uma observaço opcional ( criada. Depois ue todos os itens recebidostenham sido entrados, a pessoa de recebimento efetua um cliue no boto !u(meter, o ual faz com ue a aplicaçoautomaticamente grave cada um dos atributos dos itens recebidos e a%uste o estoue de acordo.

 ?a parte de entrega da aplicaço, um pedido de venda ( selecionado de uma lista de n$meros de pedidos de venda.5 pedido de venda mostrado inclui informaço do cliente e uma lista detalhada dos itens solicitados. Da mesmaforma ue o recebimento, cada um dos itens e contabilizado, a uantidade de entrega real ( gravada, e o estoue (diminu)do pela uantidade entregue.

7os (astidores; .ovimentando o Esto$ue@em o estoue, uma operaço de venda a vare%o no funciona. 5 mesmo crit(rio se aplica a aplicaço de 9ntrega eCecebimento. Itens devem ser recebidos no estoue afim de se ter mercadoria em mos para vender.

' aplicaço de 9ntrega e Cecebimento usa uma interface de programaço de aplicaç8es *'I+ de banco de dadosgen(rica ue acessa um banco de dados Ficrosoft 'ccess atrav(s dos 5b%etos de Dados 'ctiveEQ *'D5+. Faistarde neste artigo, iremos explicar como os dados so realmente gerenciados pelo encapsulamento. or agora iremosexplicar o b&sico sobre o status do estoue e informaço hist4rica do acompanhamento como ( aplicada diretamentea entrega e recebimento. ara uma descriço mais completa da estrutura real do banco de dados ve%a o artigo6ro%etando um Banco de Dados @imples de Aenda a Aare%o Banco de Dados da Livraria Duwamish, /ase 0.65 processo de dados de 9ntrega e Cecebimento ( gerenciado atrav(s das tabelas Itens e 'companha9stoue, eatrav(s de referencias das tabelas edidos, edidosDetalhes, Aendas, e AendaDetalhes. ' tabela Itens contem v&riosatributos associados com o item. 5 campo 9m9stoue contem a uantidade em estoue atual de um item. <onformeitens so recebidos no estoue, esta uantidade do item ( adicionada ao valor atual 9m9stoue, enuanto ue para

Page 37: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 37/66

entrega a uantidade ( decrementada. 'fim de manter dados hist4ricos, conforme os itens entram e saem do estoue,um registro e adicionado a tabela 'companha9stoue toda vez ue um item ( recebido ou entregue. >ma referenciaa um item solicitado ( inclu)da no registro adicionado ue associa um pedido com um registro de'companha9stoue. or causa da complexidade adicionada ao acompanhar recebimentos parciais ou excedente,decidimos ue, para o prop4sito deste exemplo, uma vez ue ualuer uantidade de um item individual inclu)do emum pedido ( recebido *ou entregue+, este item ( considerado como totalmente recebido *ou entregue+. ortanto, paracada item inclu)do como parte de um pedido, existe somente um registro em 'companha9stoue.

onceitos de ro+eto de Inter%ace9sta aplicaço incorpora um certo n$mero de procedures as uais, uando combinadas, modelam o processo t)picode entrega e recebimento. or causa das similaridades entre os processo de entrega e recebimento, decidimos fazeras interfaces de usu&rio *>Is+ para os modos de entrega e recebimento similares e usar procedures gerais. Damos umenfoue modular ao pro%eto, criando procedures ue modelaro processo particulares, como a rocessoItem. 9sta

 procedure ( usada na entrega e no recebimento para mudar a uantidade no estoue e adicionar um registro deacompanhamento, assim 6processando o item.6 ara acesso aos dados, usamos uma 'I geral de banco de dados ueincorpora 'D5 a sua interface com o banco de dados. ara o processamento real de dados, ao inv(s de usar um @NL

 para retornar um recordset e ento trabalhar diretamente com os dados, escolhemos encapsular os dados e entotrabalhar com uma imagem deles. *S mais f&cil trabalhar com ob%etos ue com dados puros em forma de recordsets.+9sta metodologia ( mais a%ustada com o conceito de programaço orientada a ob%eto. Fais tarde neste artigo

demonstramos o uso do encapsulamento de dados e como ele se aplica ao processo de acompanhamento domovimento de estoue.

7ave&ando pela Aplicação' aplicaço ( iniciada tanto no modo de 9ntrega como no modo de Cecebimento atrav(s de uma chave na linha decomando, a ual ( fornecida pela aplicaço <hamadora. ' aplicaço de 9ntrega e Cecebimento usa uma interface

 padro do Kindows, incluindo um menu e uma barra de ferramentas, ue so customizadas para cada modo. 'lgunsdos bot8es da barra de ferramentas e dos itens de menu esto desabilitados at( ue eles se%am necess&rios.

Fi&ura 10 A aplicação no modo de entre&a

Page 38: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 38/66

A Inter%ace da Aplicação' /igura 0 mostra a aplicaço no modo de entrega] a >I para o modo de recebimento ( essencialmente o mesmo.:abelas 0ZH mostram ue opç8es o usu&rio pode selecionar da barra de ferramentas, do menu, e submenus.5a(ela 10 arra de Ferramentas

)pç6es de Usu*rio Estado Função

Lista de <onfer=ncia Wabilitado se 9ntrega selecionado Imprime uma lista de confer=ncia9tiueta de 9ntrega Wabilitado se 9ntrega selecionado Imprime uma etiueta de entrega

@air Wabilitado se Cecebimento ou9ntrega selecionado

@ai da aplicaço

5a(ela -0 Item de .enu J .enu *sico

)pç6es de Usu*rio Estado Função

'ruivo Wabilitadoermite acesso a impresso,observaço, e sair 

9xibir Wabilitadoermite acesso a visibilidade da barrade ferramentas

5a(ela 40 Item de .enu J Ar$uivo

)pç6es de Usu*rio Estado Função

Imprime - 9tiueta de 9ntrega Wabilitado se 9ntrega selecionado Imprime uma etiueta de entregaImprime - Lista de <onfer=ncia Wabilitado se 9ntrega selecionado Imprime uma lista de confer=ncia@air Wabilitado @ai da aplicaço

5a(ela ?0 Item de .enu J Exi(ir

)pç6es de Usu*rio Estado Função

Barra de /erramentas Desmarcado Barra de /erramentas no vis)velBarra de /erramentas Farcado Barra de /erramentas vis)vel

ro+eto )rientado a )(+eto e Encapsulamento de Dados>m n$mero de ob%etos e coleç8es de ob%etos so usados para representar dados em um banco de dados. ' coleço deob%etos representa uma tabela do banco de dados. 5 ob%eto representa um registro nesta tabela e as propriedades doob%eto representam os campos. or exemplo, edidos<ompra representa uma coleço de ob%etos edido<ompra.

InicialiGação de um )(+eto

' procedure Inicializar popula muitas das coleç8es com dados, e tamb(m atualiza os dados nessas coleç8es. aracada ob%eto, InicialiGar chama a funço )(teron+unto'e&istro na 'I do banco de dados, a ual retorna umrecordset contendo dados ue pertencem ao ob%eto alvo. 9nto a cada propriedade ( atribu)do o valor do campoassociado no registro corrente. @ubse[entemente, cada ob%eto ( adicionado a coleço. 9ste processo abrange o

 processo de inicializaço para cada ob%eto da coleço. 'l(m da funço InicialiGar, coleç8es de pedidos soinicializadas, uando necess&rio, nas suas respectivas funç8es, InicialiGaredidosompra eInicialiGaredidos#enda . ?o segmento de c4digo ue segue, itens do pedido de venda e seus atributos soretornados conforme a coleço o#Detalhe ( inicializada'O%t&m pedidos de $enda corrente para entrega.sSA* = KSE*EC) Pedidos.H ROM Pedidos I++ER JOI+ :endas O+ K B _KPedidos.Codigo = :endas.+umPedido ERE 222Pedidos.Status3='K B scPRO+)O B _

K'3 +D 22Pedidos.E":enda3=)rue3 +D 22:endas.Entrega3=)rue33KIf cessoDadosPI.O%terRecordSet2scCO++EC)9 sSA*9 oRS3 )"en  Set g_oPedidos:enda = +e# Pedidos:enda  If oRS.RecordCount - L )"en  or iCount = L )o oRS.RecordCount G 4  Set oPedido:enda = +e# Pedido:enda  On Error Resume +e7t  it" o Pedido:enda  .+umPedido = oRS+umPedido

Page 39: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 39/66

  .+umCliente = oRS +umCliente  .+umuncionario = oRS +umuncionario  .DataPedido = oRS DataPedido  .DataRetirada = oRS DataRetirada  .Status = oRSStatus  .Su%)otal = oRSSu%)otal  .8erenciarEntrega = oRS 8erenciarEntrega  .Imposto = oRS Imposto  .)otal = oRS)otal  .E":enda = )rue  .Entrega+ome = oRS Entrega+ome  .EntregaEndereco4 = oRS EntregaEndereco4  .EntregaEndereco = oRS EntregaEndereco  .EntregaCidade = oRS EntregaCidade  .EntregaEstado = oRS EntregaEstado  .EntregaCEP = oRS EntregaCEP  .Entrega)elefone = oRS Entrega)elefone  End it"  On Error 8o)o L  g_oPedidos:enda.dd oPedido:enda9

ormata+umeoParaC"a$e2oPedido:enda.+umPedido3  Set oPedido:enda = +ot"ing  oRS.Mo$e+e7t  +e7t iCount  End If  oRS.Close  Set oRS = +ot"ingEnd If

rocessamento de edido e .ovimento de Esto$ue<omo mencionado anteriormente, os processos de entrega e recebimento essencialmente espelham um ao outro. 9mgeral, os passos para cada processo so os mesmos, exceto ue um pedido de entrega deve incluir uma lista deconfer=ncia e uma etiueta de entrega. ' aplicaço de 9ntrega inclui os bot8es da barra de ferramentas e os itens de

menu para impresso de uma lista de confer=ncia e uma etiueta de entrega, mas deixamos a implementaço destacaracter)stica para voc=. ?o exemplo a seguir, iremos destacar a 9ntrega, lembrando ue o Cecebimento usa asmesmas procedures e a mesma interface de usu&rio.

!elecionando um edido de #enda

Nuando um n$mero de pedido de venda ( selecionado da lista drop-down, a aplicaço chama a funçomostraedido, ue ( comum aos processo de entrega e recebimento. 9sta procedure contem os processos uemostram tanto o pedido de venda selecionado ou o pedido de compra selecionado. 5 pedido de venda mostradoinclui informaç8es do cliente e uma lista detalhada dos itens solicitados mas ainda no entregues. ?o processo deinicializaço, a coleço dos detalhes do pedido de venda ( populada somente com itens ue esto dispon)veis paraentrega. 5 seguinte segmento de c4digo ilustra como mostrar um pedido de venda usando a funço mostraredidoSu% mostrarPedido2Modo s Integer3  Select Case Modo

  Case scMODO_REC...  Case scMODO_E+)R  'Esconde modo rece%imento.  msFEntregaAtd = L  cmdItemDetal"e2icMODO_E+)R3.:isi%le = )rue  mostrarCliente 2:al2cm%Pedidos2icMODO_E+)R333

Page 40: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 40/66

  mostrarP:Detal"es 2:al2cm%Pedidos2icMODO_E+)R333  'Mostra o modo de entrega.  frmeCliente.:isi%le = )rue  lstP:Detal"e.:isi%le = )rue  l%lP:Detal"e.:isi%le = )rue  msFDataEntrega = DateN  mnuEti/uetaEntrega.Ena%led = )rue  mnu*istaConf.Ena%led = )rue  tl%Esto/ue.(uttons23.Ena%led = )rue  tl%Esto/ue.(uttons23.Ena%led = )rue

reparando um Item

5 pedido de venda contem uma lista de itens solicitados pelo cliente. ara ue um item se%a submetido, seusatributos relacionados ao estoue devem ser entrados. 5 usu&rio tem a opço de selecionar um item da lista de itensdispon)veis e ento informar uma uantidade ou arrastar o item para a caixa de texto uantidade. :amb(m, nestemomento, uma observaço pode ser digitada na caixa de texto observaço. >m grupo de itens podem serselecionados e cada um dos seus atributos associados podem ser informados. 'ntes ue os itens se%am submetidos,estas entradas so usadas como valores para as propriedades do ob%eto 'companha9stoue, como ilustrado nocomeço do seguinte c4digoPri$ate Su% Su%meterItem2Modo s Integer3Dim ocompan"aEsto/ue s +e# compan"aEsto/ueDim l+umuncionario s *ong Select Case Modo  Case icMODO_REC ' Pedido de Compra rece%endo...  Case icMODO_E+)R ' Pedido de :enda entregando  it" ocompan"aEsto/ue  .E":enda = )rue  .+umItem = lstP:Detal"e.SelectedItem.)e7t ' item selecionado  .+um)ransacao = lstP:Detal"e.SelectedItem.Su%Items2Q3 ' numero P:

  If O%ter5suario*ogado2l+umuncionario3 )"en  . +umuncionario= l+umuncionario  End If  .Data)ransacao = msFDataEntrega  .Auantidade = G:al2lstP:Detal"e.SelectedItem.Su%Items233  If lstP:Detal"e.SelectedItem.Su%Items23 = KK )"en  .O%ser$acao = K K  Else  . O%ser$acao = lstP:Detal"e.SelectedItem.Su%Items23  End If  End it"  End Select  If ProcessaItem2ocompan"aEsto/ue3 )"en  End IfEnd Su%

!u(metendo um Item

>ma vez ue um pedido ( submetido, a funço !u(meterItem ( chamada para cada item marcado na lista. Depoisue os valores das propriedades do ob%eto o'companha9stoue so atribu)das, a funço rocessaItem ( chamada.' funço rocessaItem ue segue muda a uantidade no estoue e adiciona o registro de acompanhamento doestouePu%lic unction ProcessaItem2ocompan"aEsto/ue s compan"aEsto/ue3 s (ooleanDim %*i$ro s (oolean

Page 41: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 41/66

Dim oItem s O%!ectDim lAtd s IntegerDim %Retorna s (ooleanDim sAr? s String ProcessaItem = alseIf O%terItem2ocompan"aEsto/ue.+umItem9 %*i$ro9 oItem3 )"en  ' ocompan"aEsto/ue.Auantidade & um $alor positi$o para o rece%imento  ' e um $alor negati$o para a entrega  it" ocompan"aEsto/ue  lAtd = oItem.EmEsto/ue .Auantidade  sAr? = K5PD)E Itens SE) Itens.EmEsto/ue = K B lAtd B _  K ERE 222Itens.Codigo3=K B .+umItem B K33K  %Retorna = cessoDadosPI.E7ecAuer?2scCO++EC)9 sAr?3  sAr? = KI+SER) I+)O compan"aEsto/ue 2 +umItem9 K B _  K+um)ransacao9 +umuncionario9 E":enda9 Auantidade9 K B _  KData)ransacao9 O%ser$acao 3 :*5ES 2K B .+umItem B _  K9 K B .+um)ransacao B K9 K B .+umuncionario B _  K9 K B .E":enda B K9 K B .Auantidade B K9 TK B _  .Data)ransacao B KT9 'K B .O%ser$acao B K'3K

  End it"  %Retorna = cessoDadosPI.E7ecAuer?2scCO++EC)9 sAr?3  ProcessaItem = )rueEnd IfEnd unction

onclusão9nuanto esta aplicaço no ( caracterizada como suficientemente rica para ser uma aplicaço do mundo real,funcionalidades suficientes foram incorporadas na /ase 0 para nos permitir demonstrar as t(cnicas usadas paramover de uma aplicaço des"top de uma $nica lo%a para fornecer os recursos de computador para mover a operaço

 para a Keb. <onforme movemos a aplicaço de 9ntrega e recebimento atrav(s das v&rias fases, o enfoue modularusado na /ase 0 tornar& f&cil separar as procedures da aplicaço principal a coloca-las em componentes distribu)dos.

Page 42: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 42/66

rocurando no Esto$ue

) at*lo&o da Livraria Duwamish, Fase 1

!um*rio; Descreve a aplicaço <at&logo. * p&ginas impressas+. <onhecimento em Aisual Basic e em programaço

de acesso a dados ser& $til. Discute• <riando funcionalidades amig&veis de procura em banco de dados

• >sando controles 'ctiveE em um formul&rio de procura

• 9xemplos de c4digo' aplicaço <at&logo do exemplo da Livraria Duwamish foi constru)do com o FicrosoftQ Aisual BasicQ verso3.. <ont(m todas as funcionalidade para realizar procuras *com m$ltiplos parmetros, tais como o n$meroInternational @tandard Boo" ?umber *I@B?+, palavras chaves, autores, datas, e preços+, criando novos itens, ealterando itens existentes. 5 ob%etivo foi de modelar uma aplicaço ue uma peuena livraria de venda a vare%o

 possa usar. 9la foi pro%etada especificamente para demonstrar o caminho da migraço de um aplicaço simples em1-n)veis *two-tier+ para uma aplicaço em n-n)veis *n-tier+, totalmente escalon&vel e distribu)da. 9la compartilha o

 banco de dados com outras aplicaç8es da Livraria Duwamish, mas tem a sua pr4pria 'I de acesso aos dados. ?as

fases subseuentes, conforme a aplicaço <at&logo se aproxima de um aplicaço escalon&vel, a 'I de acesso adados a camada de fluxo de trabalho sero compartilhadas entre todos os componentes do sistema.

Uma #isão @eral da Aplicação

Fi&ura 10 Formul*rio de rocura Inicial

5 formul&rio de rocura principal */igura 0+ ( mostrado assim ue a aplicaço ( chamada. 9ste formul&rio mostra,como padro, os controles para parmetros da procura para t)tulo, autor, fornecedor, n$mero do item, I@B?, e

 palavra*s+ chave*s+, e fornece um boto Avançado ue expande o formul&rio e mostra controles para parmetrosadicionais preço, ano, editora, e estoue. :amb(m existe no formul&rio principal um boto para criar um novo item,ue s4 aparecer& se o usu&rio tiver permisso para faze-lo. ?a execuço da procura os dados do registro apropriadoso mostrados em um controle do tipo ListAiew *chamado 'esultado+ no rodap( do formul&rio.

Page 43: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 43/66

'p4s a procura ser executada, o usu&rio pode dar um duplo cliue em ualuer dos itens encontrados para ver seusdetalhes. @e ( permitido ao usu&rio alterar os itens, cada item nos detalhes dos itens poder& ser modificado. @eno, ousu&rio s4 poder& ver os dados est&ticos, e possivelmente adicionar o item a um pedido.

) Fluxo de Dados5 mecanismo de acesso a dados usa o 'D5 *'ctiveEQ Data 5b%ects+ para conversar com o banco de dados

Ficrosoft 'ccess. 5 ob%eto recordset ( obtido atrav(s da funço )(ter'ecordset. )(ter'ecordset recebe dois parmetros, um reuerido e um Booleano opcional. 5 primeiro parmetro ( a string @NL de consulta *por exemplo,6@elect ^ /rom Itens6+. ' uerU ( montada de tal forma ue retorne os dados significativos de uma combinaço entretabelas e campos para popular as caixas de resultado. Depois, os registros no banco de dados so examinados um aum para verificar se todos os crit(rios so satisfeitos. @e sim, eles so adicionados as caixas de resultado.5 segundo parmetro, se verdadeiro, retornar& um recordset alter&vel. @eno, como padro os recordset retornadosso est&ticos e no alter&veis. ' pr4pria aplicaço chama a funço com verdadeiro ou falso. Nuando estiver somenterecuperando dados, a aplicaço ir& chamar a funço )(ter'ecordset<= com o valor /'L@9. 9ntretanto, se o usu&rioestiver alterando um item existente, a aplicaço ir& chamar a funço )(ter'ecordset<= com um valor :C>9. Ae%a aseço 6<oncluso6 deste artigo para uma discusso de alguns dos t4picos de migraço relativos a este modelo.ara mais informaço sobre o banco de dados e seu esuema, ve%a o artigo, 6ro%etando um Banco de Dados@imples de Aenda a Aare%o Banco de Dados da Livraria Duwamish, /ase 0.6 9ste artigo assume um conhecimentorudimentar do esuema do banco de dados.

rocurando:odos os elementos da categoria de procura so implementados como controles do tipo 'ctiveE *chamadosrocurarItem+. 9les so elementos cont(m a sua pr4pria interface de usu&rio *>I+ pro%etados para encapsular os

 parmetros de procura para um crit(rio espec)fico. ' :abela 0 lista e descreve as propriedades de rocurarItem.5a(ela 10 ropriedades de rocurarItem

.udarhec5itulo Fuda o t)tulo da categoria de procura *por exemplo, 6'utor6+.

.udarhec  Fuda o estado da caixa de verificaço para o controle.)(terhec  Cetorna um valor Booleano significando se o controle estava selecionado..udar5exto Fuda o texto ue ( mostrado na caixa de texto.)(ter5exto Cetorna o texto ue ( mostrado na caixa de texto..udarPa(ilitado Wabilita e desabilita o controle para alteraço pelo usu&rio.

)(teroincidir Cetorna o estado da caixa de verificaço de oincidir .aiQsc0H.inQsc0 *somente para controles texto+.

.udar)pcao15exto

.udar)pcao-5exto

.udar)pcao45exto

Fuda o texto mostrado pr4ximo a cada um dos tr=s bot8es de opço para um itemde procura do tipo boto de opço. 9les no tem efeito se chamados em um controlede texto padro.

)(ter)pcaoCetorna o n$mero do boto de opço ue est& selecionado *de 0Z2+, e retorna se ocontrole no ( do tipo boto de opço.

.udar5ipotrlFuda o tipo do controle de procura de , 0, ou 1 para, respectivamente, controles desomente-texto, duas-opç8es, ou tr=s-opç8es.

<ada controle ( inicializado com v&rios valores, tais como nome, e um flag designando se o controle reflete umsimples item de procura tipo entrada de texto ou um item de procura do tipo opço de m$ltiplos bot8es *ue (inicializado tamb(m com o texto para cada opço+. 5 controle ir& disparar um evento <lic" uando for dados umcliue na caixa de verificaço e um evento _eUress uando o usu&rio pressiona a tecla 9?:9C enuanto estiverno campo texto. *9ste evento permite ue o usu&rio digite o texto de procura e simplesmente pressione a tecla9?:9C para iniciar uma procura.+ 5 controle contem m(todos para recuperar os dados entrados pelo usu&rio antesue a procura se%a executada. /az sentido colocar toda a l4gica de interface de usu&rio *>I+ em um controleseparado, porue fazendo assim a aplicaço cliente s4 precisa se preocupar com a localizaço e inicializaço docontrole. 5 seguinte fragmento de c4digo ilustra a simplicidade obtida por este modelo' Muda a locali;a01o do controleMeuCtrl.*eft = n*eftMeuCtrl.eig"t = . . ..

Page 44: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 44/66

.

.MeuCtrl.Mudar)ipoCtrl23 ' L = sem %otoes de op01o' 4 = %otoes de op01o' = %otoes de op01o

MeuCtrl.MudarC"ecF)itulo2KPala$raGc"a$eK3MeuCtrl.MudarOpcao4)e7to2KProcura E7ataK3MeuCtrl.MudarOpcao)e7to2KAual/ue pala$raK3MeuCtrl.MudarOpcao)e7to2K)odas as pala$rasK3

. . .

MeuCtrl.O%terC"ecF23 ' Retorna o estado do c"ecF U $erdadeiro falsoMeuCtrl.O%terOpcao23 ' Retorna /ual %ot1o de op01o esta selecionado 24G3MeuCtrl.O%ter)e7to23 ' Retorna o te7to digitado pelo usuário

)(servação ' aplicaço cliente usando o formul&rio de rocura tem a opço de passar alguns parmetros ue irodefinir como o formul&rio de rocura ir& se comportar *ve%a :abela 1+. rimeiro, ir& chamar

 MudarAlteracao*AerdadeiroP/also+. Isto ir& habilitar a permisso para criar e modificar os itens. @e este no (chamado, ou se ( chamado com um valor de falso, o usu&rio no ser& capaz de criar itens, e o formul&rio de Detalhe

do Item ir& desabilitar todos os controles do tipo texto.5 segundo parmetro opcional ( MudarPedido*AerdadeiroP/also+. @e este ( mudado para Aerdadeiro, o formul&riode Detalhe do Item ir& permitir ao usu&rio adicionar o item corrente ao seu 6carrinho de compras.6 9nto, depois desair do formul&rio, a aplicaço cliente ir& chamar )(ter5otaledido<= e )(teredido<int= para recuperar cadan$mero de item e uantidade pedida pelo usu&rio.5 parmetro opcional final ( MudarNumFornecedor *int+. @e este ( chamado, o controle de procura para fornecedor( mudado para o n$mero de fornecedor passado. 5 controle est& desabilitado, e desta forma funciona como um6filtro.6 9sta id(ia pode ser usada no futuro para incluir todos os controles de itens de procura, mas, no escopo desteexemplo, o $nico controle ue necessitou desta funcionalidade foi o campo de fornecedor, porue ( usado pelaaplicaço @olicitaço de edido para colocar os pedido em um fornecedor selecionado.5a(ela -0 ropriedades do Formul*rio de rocura

.udarAlteravel<= ermite ue itens selecionados se%am modificados.

.udaredido<=

ermite ue itens selecionados se%am adicionados ao 6carrinho de compras.6

<ada item do pedido pode ento ser recuperado pela )(teredido<=. @e este( mudado para /also, o boto de Adicionar ao edido no aparece.

)(ter5otaledido<=Cetorna a uantidade de pedidos feitas enuanto o formul&rio de rocura seencontrava aberto.

)(teredido<= Cetorna um detalhe especifico do pedido pelo valor do )ndice.

.udar7umFornecedor<=/iltra a procura automaticamente pelo n$mero do fornecedor. 5 usu&rio notem controle sobre os valores deste parmetro.

Page 45: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 45/66

.ostrando os Detalhes do Item

Fi&ura -0 Formul*rio Detalhe do Item5 formul&rio Detalhe do Item */igura 1+ ( mostrado tanto uando o usu&rio der um duplo cliue em um dos itens dalista de resultado da procura ou uando o usu&rio der um cliue no boto riar 7ovo *se estiver dispon)vel+. 5

formul&rio Detalhe do Item ( respons&vel por mostrar todos os dados importantes do item, e de providenciar acapacidade de alteraço se necess&rio. 5 formul&rio contem controles para mostrar os seguintes campos :)tulo,:ipo do Item, I@B?, reço, 'utor, 9stoue, n)vel de reordenaço, Descriço, Data da ublicaço, 'ruivo ;r&ficodo Item, 9ditora, /ornecedor, e alavras-<haves. 5 c4digo a seguir ( chamado pelo evento de duplo cliue da caixade resultado' O numero de cada Item & guardado no tag.ItemDetal"e.MudarItem+um 2liItem.)ag3

' Mudando a /uantidade para ;ero fa; aparecer o %ot1o Kdicionar ao PedidoK.' Mudando a /uantidade para um $alor diferente de ;ero muda a /uantidadepadr1o.

If m%Ordena$el )"en ItemDetal"e.MudarAuantidade 2L3ItemDetal"e.MudarPodelterar m%ltera$elItemDetal"e.S"o# $%Modal ' C"eca para $er se o item mudouV se sim9 altera a lista.If ItemDetal"e.ItemMudou = )rue )"en

  ' ltera o item.  liItem.)e7t = ItemDetal"e.O%ter)itulo  liItem.Su%Itens243 = ItemDetal"e.O%terItem)ipo  liItem.Su%Itens23 = ItemDetal"e.O%terutor  liItem.Su%Itens23 = ItemDetal"e.O%terno  liItem.Su%Itens23 = ItemDetal"e.O%terPreco  liItem.Su%Itens23 = ItemDetal"e.O%terEsto/ue  liItem.Su%Itens2Q3 = ItemDetal"e.O%terIS(+

 End If ' C"eca por um pedido.If ItemDetal"e.O%terAuantidade23 - L )"en

  ' tuali;a o o%!eto detal"e de ordena01o.  Set cDetal"e = +e# cOrdemDetal"e  cDetal"e.+umItem = liItem.)ag  cDetal"e.Auantidade = ItemDetal"e.O%terAuantidade

Page 46: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 46/66

  cDetal"e.Preco5nitario = ItemDetal"e.O%terPreco

  ' mcolOrdemDetal"es & uma cole01o de o%!etos detal"e de ordena01o UG  ' se ainda n1o e7iste9 de$emos criaGlo.  If mcolOrdemDetal"es Is +ot"ing )"en  Set mcolOrdemDetal"es = +e# Collection  End If 

' diciona esta no$a ordem a cole01o.  mcolOrdemDetal"es.dd cDetal"e

End If 

riando e .odi%icando Itens

5 formul&rio deve ter a capacidade de criar e modificar os tipos, autores, fornecedores, e editoras do item, e devefornecer controle para entradas duplicadas. ?o ( obrigat4rio o preenchimento de todos estes campos para a criaço*ou modificaço+ de um registro. ara fazer com ue a ediço se%a f&cil, o boto Alterar *ou riar+ est&inicialmente desabilitado e um evento ( anexado a cada controle ue pode ser alterado *com controles de ediço, isto( feito pelos eventos <hange+. ?estes eventos, checamos se todos os campos obrigat4rios foram preenchidos, e sesim, habilitamos o boto Alterar. 5 c4digo a seguir ilustra este processoPri$ate Su% ItemDesc_C"ange23  C"eca(otaolterarEnd Su%

Pri$ate Su% C"eca(otaolterar23If Item)itulo ,- $%+ullString nd ItemEsto/ue ,- $%+ullString nd _  ItemReordenar ,- $%+ullString nd Itemno ,- $%+ullString ndItemPreco ,- $%+ullString )"en

  If C*ng2ItemEsto/ue3 -= L nd C*ng2ItemReordenar3 -= L ndC*ng2Itemno3 -= L nd CD%l2ItemPreco3 -= LT )"en

  (otaolterar.Ena%led = )rue  Else

  (otaolterar.Ena%led = alse  End IfElse  (otaolterar.Ena%led = alseEnd If

5 formul&rio Detalhe do Item contem um flag, 6mb9ditavel6, para controlar se modificaç8es podem ser feitas a esteitem. Nuando o usu&rio der um cliue nos bot8es Editora ou Fornecedor, o formul&rio Detalhe do <ontato (acionado e inicializado com a chamada da funço ontatoDetalhe0.udarEditavel<m(Editavel=. Desta forma as

 permiss8es de alteraço so passadas da aplicaço cliente original para o formul&rio de rocura, para o formul&rioDetalhe do Item, e finalmente para o formul&rio Detalhe do <ontato.

) ampo alavra>have

Itens devem :er palavras-chaves associadas, cu%o comprimento combinado no deve exceder 133 caracteres *pois

estamos usando um campo tipo 5exto no Ficrosoft 'ccess+. Nueremos fornecer ao usu&rio a habilidade defacilmente adicionar e remover palavras-chaves a um item, e de forma ideal, fazer com ue se%a to f&cil uanto poss)vel adicionar as mesmas palavras-chaves a m$ltiplos itens. ara satisfazer isto, um combo box alavra>have ( fornecido %unto com os bot8es Adicionar e 'emover. 5s usu&rios podem digitar uma $nica palavra-chave e darum cliue em Adicionar para adicionar a palavra-chave ao combo box *( feita checagem para palavras-chavesduplicadas e para o m&ximo de caracteres+. 5s usu&rios podem tamb(m selecionar uma palavra-chave existente docombo box e dar um cliue em 'emover para remove-la. ara fazer com ue a adiço das mesmas palavras-chavesa m$ltiplos itens se%a mais f&cil, e em vez de :er ue adicionar cada palavra-chave individualmente e pressionar o

 boto Adicionar cada vez, ( poss)vel aos usu&rios entrar uma string completa de palavras-chaves, ue ( uma lista de palavras-chaves separadas por v)rgula *por exemplo, 6/icço, Fist(rio, <rime6+. ' aplicaço percorre por cada

Page 47: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 47/66

 palavra-chave uma por vez, checando por palavras-chaves duplicadas e checando o comprimento total de cada palavra-chave. @e tudo estiver de acordo ela ento adiciona a palavra-chave, retirando as v)rgulas e cada espaçoantes ou depois da palavra.

) Formul*rio Detalhe do ontato5 formul&rio Detalhe do <ontato ( bem simples e direto. 9le ( inicializado com um valor Booleano a partir do

cliente *o formul&rio Detalhe do Item+ ue especifica se os dados so alter&veis, tamb(m como um ?um<ontato ueespecifica aonde os dados devem ser encontrados na tabela de <ontatos. 9le ento mostra os campos dos dados maisimportantes do contato na %anela de di&logo. De novo, todos os evento 9dit<ontrolY<lic" so controlados e todos asvalidades dos dados so checados e para :er certeza de ue todos os campos obrigat4rios contem dados. @e todos oscampos obrigat4rios contem dados, o boto Alterar ( habilitado. Da mesma forma, se ualuer um dos camposobrigat4rios estiver sem dados, o boto Alterar ( desabilitado. ara a criaço de novas editoras ou fornecedores, o

 boto Alterar contem a legenda 6<riar6 e nenhum c4digo ( passado, e portanto nenhum dado ( mostrado no in)cio.

Fi&ura 40 Formul*rio Detalhe do ontato

onclusão9sta aplicaço apresenta as funcionalidade de interface e encapsulamento para procura e catalogar processos em

uma livraria simples. Iremos evoluir este modelo de um sistema simples envolvendo !cooperaço# entre aplicaç8esseparadas *cooperando no sentido de compartilhar um banco de dados e alguns formul&rios+ para eventualmente umsistema completamente distribu)do e escalon&vel. Iremos fazer isto gradualmente por um processo de extrair partesda 'I *notadamente o acesso a dados e uma parte da camada de fluxo de trabalho+ ue so facilmentecompartilhadas entre as interfaces separadas, melhorando-as conforme avançamos.or exemplo, o modelo de dados atual, onde recordsets alter&veis so abertos, passados, e mantidos abertos pelocliente at( ue o cliente faça uma chamada a 'ecordset0Update, ir& se tornar problem&tico uando a LivrariaDuwamish se expandir para mais de uma lo%a. 'o inv(s disso, podemos manter os recordsets retornadosdesconectados do banco de dados, e simplesmente atualizar o recordset chamando outra funço, algo comoAtuliGar'ecordset. 9sta funço ir& ento atualizar o recordset no banco de dados, permitindo ue tudo este%adesconectado e ue outro usu&rio do sistema no se%a travado por um registro de um recordset alter&vel ue outro

usu&rio recupera e ue falha em fech&-lo. ?a /ase 1, iremos implementar um ob%eto <5F de acesso a dados, e recordsets desconectados, para serem usadosem v&rias lo%as da Livraria Duwamish. 9ste primeiro passo para o escalonamento permite ue dois escrit4riosseparados usando as mesmas aplicaç8es da Livraria Duwamish compartilhem uma $nica 'I de acesso a dados eno tem ue se preocupar em sincronizar bancos de dados separados.

Page 48: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 48/66

ro+etando um anco de Dados !imples de

#enda a #are+o

anco de Dados da Livraria Duwamish, Fase 1!um*rio; Detalha o esuema do banco de dados da Livraria Duwamish. *0 p&ginas impressas+ <onhecimentos emFicrosoft 'ccess e pro%eto gen(rico em banco de dados relacional ser& $til. Inclui

• Discusso de modelagem de transaç8es do neg4cio para o pro%eto do banco de dados

• 9specificaç8es da entidade banco de dados da Livraria Duwamish

• Fodelo do banco de dados da Livraria Duwamish *como um gr&fico+

Introdução9ste artigo descreve o banco de dados usado na /ase 0 da aplicaço exemplo da Livraria Duwamish. ara umaintroduço e uma descriço das uatro fases do exemplo da Livraria Duwamish, ve%a 6>ma Introduço ao 9xemplo

da Livraria Duwamish.6Da mesma forma ue as aplicaç8es da /ase 0, o pro%eto do banco de dados enfatiza a praticidade ao inv(s da purezat(cnica. 5 pro%eto captura as entidades e processos do neg4cio da livraria mas deixa alguns t4picos doescalonamento para serem referenciados nas fases subseuentes.

 ?este pro%eto, tabelas relacionadas fornecem tamanhos eficientes para alguns dados, mas a importncia de ter um pro%eto normalizado, onde cada entidade contem dados ue so $nicos, ( secund&rio para a simplicidade do pro%etocomo um todo. 5 modelo ser& revisado nas fases subseuentes do exemplo para suportar o crescimento do neg4cio

 para mais de um lugar e mais de uma atividade.5 banco de dados FicrosoftQ 'ccess .mdb fornece um reposit4rio de dados escalon&vel apropriado para asaplicaç8es de des"top ue esto compreendidas nesta fase do exemplo. 5 modelo de dados completo, com asdefiniç8es das tabelas, especificaç8es de integridade referencial, e um con%unto da dados de exemplo, est& incluso noduwamish.mdb.

Um .odelo do 7e&8cio's sentenças das transaç8es do neg4cio a ser modelado fornece um ponto de partida para o modelo de dados. 5ssubstantivos nestas sentenças podem ser imaginados como dados e os verbos como os processos ue operam osdados. 5s substantivos so desenvolvidos em entidades de dados com atributos ue descrevem as entidades e osrelacionamentos entre entidades. 9ste con%unto de sentenças representa os processos prim&rios do neg4cio da livrariacom os enfatizados substantivos e verbos formando o modelo de dados b&sico. 's palavras usadas como@>B@:'?:IA5s esto em mai$sculas e auelas usadas como VERBOs esto em it&lico.Fuitas palavras nestas sentenças podem ser usadas como substantivos ou verbos. or exemplo, PRO!RAR ( usadocomo um verbo porue nenhum registro de uma procura ( gravado. 9DID5, por outro lado, ( usado como umsubstantivo porue um pedido ( salvo como uma entidade de dados.LIE75E ou FU7I)7A'I)  PROCURA por I5E7s>m I:9F geralmente descreve um t)tulo de livro ue est& dispon)vel na lo%a, mas tamb(m pode representar um tipode mercadoria relacionada. <ada tipo de mercadoria levada ( modelada por um I:9F.FU7I)7A'I) COLOCA EDID) de I5E7s com F)'7EED)' 5 9DID5 de compra ( para um $nico /5C?9<9D5C e contem um ou mais D9:'LW9sY9DI5D5. >mD9:'LW9Y9DID5 contem um I:9F e uma uantidade.FU7I)7A'I)  RECEBE  EDID) de I5E7s de um F)'7EED)' 5 modelo de dados representa o fluxo de mercadoria pela lo%a para fornecer um hist4rico rico da fonte de dados paraan&lise. 9mbora um simples atributo de uantidade possa ser adicionado a cada I:9F, isto no demonstra ocomportamento do estoue ao longo do tempo. Cecebendo um 9DID5 muda o status do 9DID5 e gera uma oumais :C'?@'<'5Y9@:5N>9. >ma :C'?@'<'5Y9@:5N>9 contem um I:9F e uma uantidade e, no casodo recebimento, a correspondente D9:'LW9Y9DID5.

Page 49: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 49/66

LIE75E COLOCA EDID) de I5E7s com L)RA

5 9DID5 de venda contem um ou mais D9:'LW9Y9DID5. >m 9DID5 de venda ( usado para pedidos deI:9?s especiais ou uando a mercadoria ( para ser entregue.LIE75E  ADQUIRE  I5E7s na caixa re&istradoraIsto gera uma A9?D' e geralmente gera uma :C'?@'<'5Y9@:5N>9 para os I:9?s ue o <LI9?:9 levaembora.L)RA ENTREGA I5E7s de EDID) ao LIE75EIsto gera uma A9?D' e D9:'LW9s da A9?D' ou preenche uma A9?D' gerada previamente. :amb(m gera:C'?@'<59@ de 9@:5N>9 para os I:9?s entregues.

 ?a seço a seguir, os substantivos so desenvolvidos em dados. 5s verbos saem do modelo de dados paratransformarem-se em especificaç8es para o c4digo dentro das aplicaç8es ue atuam no modelo de dados.9specificaç8es de campos incluem tipo de dado e tamb(m especifica as regras de )ndice e o relacionamento entreentidades.

Entidades de Dados e 5a(elas <em @rupos Funcionais=

@rupo Item

5 grupo Item consiste da entidade Item e das entidades relacionadas ue completam a descriço do item. >maentidade item existe para cada item levado da lo%a, e procuras so realizadas na tabela Itens.Entidade Item

7ome do campo 5ipo do dadoAtri(utos erelacionamentos do

campo

Descrição

<odigo 'uto?umeraço <have rim&ria

 ?um:ipoItem Longo<have estrangeira para atabela :ipoItem *referenciaobrigat4ria+

:ipo Item *todos os itens+

 ?um'utor Longo<have estrangeira paraautor na tabela 'utores*opcional+

'utor do livro *livros+

 ?um9ditora Longo

<have estrangeira para

editora na tabela <ontatos*opcional+ 9ditora do livro *livros+

 ?um/ornecedor Longo

<have estrangeira parafornecedor na tabela<ontatos *Ceferenciaobrigat4ria+

/ornecedor do Item *todosos itens+

 ?umImposto Longo<have estrangeira para atabela Imposto *Ceferenciaobrigat4ria+

Imposto do item

9m9stoue InteiroNuantidade do item emestoue

 ?iveledido Inteiro ?)vel do estoue paraativar o pedido

Dataublicaço Inteiro 'no da publicaço *livros+

I@B? :exto*3+

I@B? *livros+. ?$mero domodelo ou n$mero doestoue do fornecedor*no-livros+

9spec'ruivoImagem :exto*133+9specificaço do aruivode imagem

:)tulo :exto*3+ :)tulo do livro *livros+Descriço :exto*133+ Descriço do item *por

Page 50: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 50/66

exemplo, ficço ou no-ficço+*ve%a coment&rios danormalizaço+

reco>nitario Foeda reço do item

alavras<haves :exto*133+

<on%unto de palavras-

chaves *ve%a coment&riosda normalizaço+Entidade 5ipo do Item

7ome do campo 5ipo do dado

Atri(utos e

relacionamentos do

campo

Descrição

<odigo 'uto?umeraço <have rim&ria:ipo :exto*01+ <odigo do tipoDescriço :exto*3+ Descriço

9hLivro @imP?o@im indica ue o tipo doitem ( um livro

Entidade Autor

7ome do campo 5ipo do dado Atri(utos erelacionamentos do

campo

Descrição

<odigo 'uto?umeraço <have rim&ria Identifica um $nico autor  @obrenome :exto*3+ @obrenome do autor  

 ?ome :exto*3+ ?ome do autor Entidade Imposto

7ome do campo 5ipo do dadoAtri(utos erelacionamentos do

campo

Descrição

<odigo 'uto?umeraço <have rim&riaDescricao :exto*3+ DescriçoImposto ?umero Imposto

@rupo edidos

edidos representam uma intenço de comprar ou vender. >m funcion&rio coloca um pedido de compra para umfornecedor. <lientes colocam pedidos de vendas. >m pedido consiste de uma $nica entidade pedido e de no m)nimouma entidade detalhe do pedido.Entidade edido

7ome do campo 5ipo do dado

Atri(utos e

relacionamentos docampo

Descrição

<odigo 'uto?umeraço <have rim&ria

 ?um<liente Inteiro LongoCefere-se a um cliente natabela de <lientes

Ceferencia o cliente do pedido *para pedidos de

venda+

 ?um/uncionario Inteiro Longo<have estrangeira para atabela /uncion&rios*Ceferencia obrigat4ria+

Ceferencia ao funcion&riodo pedido *para pedidos decompra+

 ?um/ornecedor Inteiro Longo<have estrangeira parafornecedor na tabela de<ontatos *opcional+

Ceferencia ao fornecedordo pedido *para pedidos decompra+

Dataedido DataPWoraData em ue o pedido (solicitado

Page 51: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 51/66

DataCetirada DataPWoraData em ue o pedido foiretirado

@tatus :exto

9spaço para observaçodas opç8es do status. 5sseguintes valores sodefinidos pelo sistema

V@5LI<I:'D5V, *P@+V9DID5V, *+VC5?:5V, *@+VC9<9BID5V, *+V9?:C9;>9V, *@+VIC'<W'F9CV, *@+V<5FL9:'D5V, *P@+*ve%a coment&rios danormalizaço+

@ub:otal FoedaAalor dos detalhes do

 pedido9ntrega Foeda Aalor da 9ntregaImposto Foeda Aalor do Imposto

:otal Foeda Aalor total do pedido

9hAenda @imP?o

@im indica ue o pedido (um pedido de venda] ?oindica ue o pedido ( um

 pedido de compra.

9ntrega?ome :exto*3+ ?ome da etiueta deendereço

9ntrega9ndereco0 :exto*3+Linha 0 da etiueta deendereço

9ntrega9ndereco1 :exto*3+Linha 1 da etiueta deendereço

9ntrega<idade :exto*3+<idade da etiueta deendereço

9ntrega9stado :exto*1+9stado da etiueta deendereço

9ntrega<9 :exto*0+<9 da etiueta deendereço

9ntrega:elefone :exto*3+ ?$mero de :elefone paraentrega

Entidade Detalheedido

7ome do campo 5ipo do dado

Atri(utos e

relacionamentos do

campo

Descrição

<odigo 'uto?umeraço <have rim&ria

 ?umedido Inteiro Longo

<have estrangeira para a

tabela de edidos*Ceferencia obrigat4ria+

Ceferencia um pedido

 ?umItem Inteiro Longo<have estrangeira para atabela Itens *Ceferenciaobrigat4ria+

Ceferencia um item

reco>nitario Foeda reço para cada unidade

Nuantidade Inteiro LongoNuantidade de unidades

 pedidas

Page 52: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 52/66

@rupo #endas

>ma venda representa uma transferencia de itens para um cliente. >ma venda consiste de uma entidade venda e deno m)nimo uma entidade detalhe venda.Entidade #enda

7ome do campo 5ipo do dado

Atri(utos e

relacionamentos docampo

Descrição

<odigo 'uto?umeraço <have rim&ria

 ?um<liente Inteiro Longo<have estrangeira para atabela <lientes *Ceferenciaobrigat4ria+

Ceferencia ao cliente davenda

 ?umedido Inteiro Longo<have estrangeira para atabela edidos *opcional+

Ceferencia ao pedido

 ?um/uncionario Inteiro Longo<have estrangeira para atabela /uncion&rios*Ceferencia obrigat4ria+

Ceferencia ao funcion&rio

DataAenda DataPWora DataPhora da venda@ub:otal Foeda @ubtotal do item da venda

Imposto Foeda Imposto sobre o item davenda

:ipoagamento :exto*3+:ipo de pagamento *porexemplo, dinheiro, cheue,ou carto de cr(dito+

 ?um<artao<redito :exto*3+ ?$mero do carto decr(dito

DataAalidade DataPWoraData de validade no cartode cr(dito

 ?ome<artao<redito :exto*3+ ?ome no carto de cr(dito

9ntrega @imP?o@im indica ue o pedidoser& entregue

Entidade Detalhe#enda

7ome do campo 5ipo do dado

Atri(utos e

relacionamentos docampo

Descrição

<odigo 'uto?umeraço <have rim&ria

 ?umAenda Inteiro Longo<have estrangeira para atabela Aendas *Ceferenciaobrigat4ria+

Ceferencia 7 venda

 ?umItem Inteiro Longo<have estrangeira para atabela Itens *Ceferenciaobrigat4ria+

Ceferencia ao item

reco>nitario Foeda reço de cada unidade

Nuantidade Inteiro Longo

Nuantidade de unidades

 pedidas

@rupo Acompanhamento do Esto$ue

5 grupo de acompanhamento do estoue consiste da entidade 'companha9stoue. :ransaç8es do acompanhamentodo estoue so inclu)das sempre ue o estoue de uma lo%a muda. 's causas de mudanças no estoue so recebendoitens de um fornecedor, vendendo itens para um cliente, ou transaç8es de vendas administrativas para contabilizaritens removidos por danos ou roubo.Entidade Acompanhamento de Esto$ue

7ome do campo 5ipo do dado Atri(utos e Descrição

Page 53: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 53/66

relacionamentos do

campo

<odigo 'uto?umeraço <have rim&ria

 ?umItem Inteiro Longo<have estrangeira para atabela Itens *Ceferenciaobrigat4ria+

Identifica o tipo do item

 ?um:ransacao Inteiro Longo

Cefere-se a umdetalhepedido na tabelaDetalhesedido ouDetalheAenda na tabelaDetalhesAenda

Ceferencia ao detalhe do pedido ou detalhe da vendaue gera a transaço deestoue

9hAenda @imP?o

@im se ( gerado por umavenda] ?o se ( gerado por um pedido *determina atabela de refer=ncia do

 ?um:ransacao+.

Nuantidade Inteiro Longo

Fudança do estoue.Aalores positivos indicamrecebimento] negativos

entrega ou venda.Data:ransacao DataPWora Data da transaço

5bservaço :exto*133+5bservacao da transaço*ve%a coment&rios danormalizaço+

@rupo Atores

5 grupo 'tores contem entidades ue representam pessoas ou organizaç8es. ' entidade contato pode representarm$ltiplos tipos de atores, tais como editores ou fornecedores.Entidade ontato

7ome do campo 5ipo do dado

Atri(utos e

relacionamentos do

campo

Descrição

<odigo 'uto?umeraço <have rim&ria

:ipo<ontato :exto*01+

:ipo do contato. 5 sistemadefine os seguintesvaloresV/5C?9<9D5CV,V9DI:5CV*ve%a coment&rios danormalizaço+

@obrenome :exto*3+@obrenome ou nome da9mpresa

 ?ome :exto*3+ ?ome9ndereco0 :exto*3+ Linha 0 de 9ndereço

9ndereco1 :exto*3+ Linha 1 de 9ndereço<idade :exto*3+ <idade9stado :exto*1+ 9stado<9 :exto*0+ <9essoa<ontato :exto*3+ essoa para contato:elefone :exto*3+ :elefone para contato>ltimo<ontato DataPWora Data do $ltimo contato

Entidade liente

Page 54: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 54/66

7ome do campo 5ipo do dado

Atri(utos e

relacionamentos do

campo

Descrição

<odigo 'uto?umeraço <have rim&ria/antasia :exto*3+ Identificador r&pido@obrenome :exto*3+ @obrenome do cliente

 ?ome :exto*3+ ?ome do cliente9ndereco0 :exto*3+ Linha 0 de 9ndereço9ndereco1 :exto*3+ Linha 1 de 9ndereço<idade :exto*3+ <idade9stado :exto*1+ 9stado<9 :exto*0+ <9:elefone :exto*3+ :elefone do cliente>ltimaAenda DataPWora Data da $ltima venda

:otalAenda`:D Foeda<ompra total do cliente at(a data

Entidade Funcionario

7ome do campo 5ipo do dado

Atri(utos e

relacionamentos docampo

Descrição

<odigo 'uto?umeraço <have rim&ria/antasia :exto*3+ nico Identifica o usu&rio@obrenome :exto*3+ @obrenome

 ?ome :exto*3+ ?omeIniciais :exto*0+ Iniciais9ndereco0 :exto*3+ Linha 0 de 9ndereço9ndereco1 :exto*3+ Linha 1 de 9ndereço<idade :exto*3+ <idade9stado :exto*1+ 9stado<9 :exto*0+ <9

:elefoneCesidencial :exto*3+ :elefone residencial dofuncion&rio

:elefone<elular :exto*3+:elefone do celular dofuncion&rio

<ontato9mergencia :exto*3+ ?ome de pessoa paracontato em caso deemerg=ncia

:elefone9mergencia :exto*3+ :elefone para emerg=ncia

Data'dmissao DataPWoraData em ue o funcion&riofoi contratado

@enha :exto*3+ @enha do funcion&rio

'elacionamentos das Entidades5 modelo de banco de dados relacional fornece armazenamento eficiente, simplifica a manutenço dos dados e

 permite detalhes de cabeçalhos de estruturas do tipo aberto-fechado. 's entidades Item tem relacionamentos comoutros tipos de entidades, incluindo referencia a uma entidade :ipoItem *reuerida+, entidade 'utor *opcional+,entidade <ontato *para editores e fornecedores+, e entidade Imposto *reuerida+. ' integridade referencial asseguraue os relacionamentos entre entidades permaneçam v&lidas conforme os dados mudam. @e as entidades Itemcontem referencia a uma entidade :ipoItem e um registro de :ipoItem ( exclu)do, os itens ue mant=m referenciaaos itens exclu)dos da :ipoItem iro violar a integridade do relacionamento referenciando um registro exclu)do. 5formato do banco de dados .mdb mant(m as regras de integridade referencial e os relacionamentos so garantidos

Page 55: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 55/66

 pelo Ficrosoft 'ccess, e pelas tecnologias de acesso a dados da Ficrosoft tais como a Ficrosoft 'ctiveEQ Data5b%ects *'D5+. ' /igura 0 mostra os relacionamentos das entidades dentro do modelo de dados.

Fi&ura 10 'elacionamentos das Entidades

onclusão5 modelo de banco de dados apresentado aui enfatiza a simplicidade em detrimento de uma normalizaçocompleta ou de uma otimizaço. 's entidades de dados modelam os processos do neg4cio da livraria de umamaneira direta ue simplifica a programaço da aplicaço mas deixa alguns t4picos de escalonamento para seremresolvidos nas pr4ximas fases. 's pr4ximas tr=s fases do pro%eto iro apresentar refinamentos a este pro%eto de talforma ue ele poder& escalar de uma aplicaço des"top suportando alguns usu&rios para suportar um sistema de altovolume baseado na Keb.

Page 56: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 56/66

Livraria Duwamish, !etup da Fase - e

8di&o Fonte9xecute o pacote do setup para instalar a aplicaço exemplo da Livraria Duwamish em seu computador. ?a pasta de

grupo de programa Exemplo do .!D7 Livraria Duwamish, Fase -, cliue na opço Duwamish Launcher.<liue com o boto da esuerda no item Launcher para iniciar a aplicaço ou cliue com o boto da direita para vero ;uia do >su&rio ou as consideraç8es de pro%eto para a aplicaço.7ota ?o aplicativo Launcher, cliue com o boto da direita em Lo& )n e selecione User @uide para ver a lista denomes e senhas de usu&rios ue %& vem com o exemplo.' Livraria Duwamish ( uma aplicaço exemplo da F@D? no suportada. or favor, lembre-se de ue ( s4 umexemploXo suporte t(cnico da Ficrosoft no est& preparado para responder a uest8es sobre a Livraria Duwamish.<liue aui para copias o pacote exemplo de instalaço e o c4digo fonte para a /ase 1 da Livraria Duwamish.d-setup0exe; 9ste execut&vel auto-extra)vel ir& instalar a aplicaço exemplo da Livraria Duwamish.d-source0exe; 9ste execut&vel auto-extra)vel ir& montar a &rvore de c4digo fonte do exemplo da Livraria Duwamishem seu computador. 5 c4digo compilado usa o Ficrosoft Aisual Basic verso 3. do novo componente de acesso adados, DBD'L *dbvbdal.dll+. 9ste download tamb(m contem o c4digo fonte para o componente na verso doFicrosoft Aisual <GG *dbvcdal.dll+.

7ota ara compilar o c4digo fonte da /ase 1, voc= ir& precisar do Aisual Basic 3. rofessional ou a 9nterprise9dition e, opcionalmente para o componente do Aisual <GG, o Aisual <GG rofessional ou 9nterprise 9dition.

Page 57: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 57/66

ro+etando uma amada de Acesso a Dados

Livraria Duwamish, Fase -

!um*rio; Discute custos, benef)cios, e t4picos de pro%eto na criaço de uma camada de acesso a dados. * p&ginas

impressas+ Discute• F(todos de solicitar dados de uma fonte de dados

• F(todos de recuperar dados solicitados

• 9scolhendo entre recordsets conectados e desconectados

• 9scolhendo entre recordsets transacionais e no transacionais

• 9scolhendo entre conex8es com cache e conex8es sem cache

Introdução

>ma aplicaço bem desenvolvida, no importando se grande ou peuena, deve ser escrita tendo em mente amanutenço. >ma das melhores abordagens para uma aplicaço de f&cil manutenço ( utilizar um paradigma emcamada uando estivermos pro%etando a aplicaço. 9ste enfoue dita ue a aplicaço deve ser pro%etada em pelomenos tr=s camadas uma camada de apresentaço, uma camada da l4gica do neg4cio, e uma camada de acesso adados *D'L+. 9stas camadas podem ser codificadas dentro da pr4pria aplicaço, ou podem ser componentesseparados da aplicaço. ara os programadores do Ficrosoft Q Aisual BasicQ, escrevendo uma camada dentro daaplicaço envolve escrever a camada em seu pr4prio m4dulo. ara programadores do Ficrosoft Aisual <GGQ,significa escrever uma camada na sua pr4pria classe. 9sta separaço permite uma manutenço mais f&cil do c4digo

 b&sico e tamb(m permite ue uando o tempo de mudar para um componente chegar, o esforço reuerido ser& bemmenor. @eparando a funcionalidade em um componente tamb(m deixa o c4digo muito mais f&cil de debugar,estender e reutilizar.9ste artigo examina alguns dos t4picos de pro%eto envolvidos no desenvolvimento de uma D'L, incluindo t4picosadicionais uando desenvolvendo a camada como um componente <5F separado, com refer=ncia espec)fica ao

exemplo do F@D? da Livraria Duwamish. ?a /ase 0 do exemplo da Livraria Duwamish, o D'L ( um m4dulo, mas as /ases 1 a H usam um componente <5F.ara maiores detalhes nas fases da Livraria Duwamish ve%a 6>ma Introduço ao 9xemplo da Livraria Duwamish.6

ustos'l(m da f&cil manutenço e da reutilizaço do c4digo, existem diferentes benef)cios em criar uma camada de acessoa dados. <omo em todo enfoue, estes benef)cios vem com seus respectivos custos.

.ais lane+amento no ro+eto

>ma D'L ( uma grande id(ia, mas envolve mais trabalho de pro%eto. Nuando o c4digo ( incorporado na aplicaço,o acesso a dados pode ser escrito 6na velocidade,6 conforme for necess&rio, sem muito ue pensar. 9ntretanto,uando o acesso a dados ( movido para sua pr4pria camada, decis8es de pro%eto devem ser feitas antes ue o c4digose%a implementado afim de ue a D'L cubra todos os reuisitos de acesso a dados da aplicaço ou sistema emuesto. Isto ( mais cr)tico ainda se a D'L se tornar um ob%eto <5F gen(rico ue ( usado por mais de umaaplicaço. 9sta premeditaço pode ser considerada como uma desvantagem para aueles ue pensam ue o temoC'D significa !Capid 'pplication Design# *ro%eto C&pido de 'plicaç8es+, uando de fato significa !Capid'pplication Development# *Desenvolvimento C&pido de 'plicaç8es+. :entar usar um C'D no pro%eto geralmentesignifica ue o termo ser& !Capid 'pplication Disaster# *Desastre C&pido de 'plicaç8es+.>m aumento no tempo de pro%eto ( reuerido uando da criaço de um componente de acesso a dados *tal como oDBD'L da Livraria Duwamish+. >m esforço deve ser feito para garantir ue a camada de acesso a dados abran%atodas as &reas de funcionalidade reuerida pela aplicaço chamadora. Ir& derrubar o prop4sito de um componente deacesso a dados se abranger somente M3 porcento das especificaç8es de acesso a dados e forçar o desenvolvedor a ter

Page 58: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 58/66

ue codificar funcionalidades de acesso a dados espec)ficas em um a rotina ou na aplicaço. De novo, isto reuer um pro%eto al(m do tempo, mas a vantagem desta extensa funcionalidade supera a desvantagem de :er ue escreverc4digo espec)fico para cada rotina.

A 7ova AI

>ma vez ue a D'L tenha sido pro%etada com uma funcionalidade gen(rica em mente, devemos codificar as novas

assinaturas 'IPm(todo. Isto reuer alguma premeditaço, como uais so os melhores parmetros a serem passados, uais pedidos fazem maior sentido, e assim por diante.

As aracter3sticas Internas Escondidas

@e criamos nossa D'L como um componente, outros desenvolvedores no sero capazes de ver os !detalhessangrentos# dos mecanismos nativos de acesso a dados da D'L. or outro lado, isto fornece maior segurança. Ae%aas seç8es relacionadas a seguir no item 6Benef)cios.6

ene%3cios

Livraria Duwamish

Aamos olhar os benef)cios *os uais %ustificam os custos+ de uma camada de acesso a dados. Nuando a Livraria

Duwamish alcança a /ase 1, aonde transformamos a D'L em componentes, o c4digo no somente fica menor, mastamb(m fica mais f&cil de debugar porue debugando a D'L %& foi feito uma vez. 9sta separaço do acesso a dadosda aplicaço tamb(m nos deu mais flexibilidade na distribuiço da aplicaço.

Aumento na Facilidade de .anutenção

>ma das maiores vantagens de usar uma camada de acesso a dados ( o aumento na facilidade de manutenço.Fuitos programas tem c4digo escrito em v&rios lugares, ou pior, emaranhado pela aplicaço. @eparando a D'L daaplicaço faz com ue fiue muito mais f&cil de manter.<riando um componente de acesso a dados fornece mais benef)cios. @eparando a D'L da aplicaço no somentecria c4digo mais f&cil de manter mas tamb(m muito mais extens)vel e reutiliz&vel. @e e uando o c4digo de acesso adados mudar, esta separaço alivia a dor de cabeça de :er ue recompilar e testar cada aplicaço ue o usa. 5 $nicoc4digo ue precisa ser testado completamente ( o pr4prio componente de acesso a dados.

Diminuição no 5amanho 5otal do 8di&o

>m componente de acesso a dados separado tamb(m resulta em reduço do tamanho do c4digo para cada aplicaçodependente. @e o c4digo D'L ( embutido em cada aplicaço, cada aplicaço carrega c4digo redundante. >ma vezue o c4digo de acesso a dados ( tirado da aplicaço, a aplicaço encolhe e portanto permite um ambiente para umamelhor distribuiço pois diminui a largura da banda de distribuiço.

.inimiGa o 7Qmero de AIs

>sando uma D'L, reduzimos o n$mero de *'Is+ ue o desenvolvedor tem ue aprender. 9les tero apenas ueaprender um con%unto de 'I ue relevante para a aplicaço ou grupo de aplicaç8es. 5 desenvolvedor pode focar oseu tempo em desenvolver uma aplicaço ao inv(s de :er ue aprender um n$mero de 'Is.

Aumento na !e&urança

>ma das vantagens de usar um componente de acesso a dados ( ue ele esconde a implementaço dos dados dos

desenvolvedores ePou usu&rios finais. ?o existe acesso direto aos dados. 'ssumindo ue a D'L foi pro%etadacorretamente, a manipulaço dos dados est& limitada aos modos ue so controlados pela aplicaço./re[entemente o propriet&rio dos dados no uer ue outros ve%am os detalhes da estrutura de dados, organizaço,etc. >sando um componente de acesso a dados, no somente as estruturas de dados esto escondidas, mas tamb(mas t(cnicas de acesso. 9scondendo estas caracter)stica internas, os dados e c4digo esto protegidos.

FaGendo !eu edido9xistem muitas maneiras de reuisitar dados de uma fonte de dados, tais como extraço por programaço,ferramentas de terceiros, reuisiç8es dinmicas, e !stored procedures# externas. <ada m(todo tem o seu lugar e seus

Page 59: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 59/66

defensores. 'p4s uma breve descriço dos sois primeiros, gostar)amos de enfocar os dois $ltimos reuisiç8esdinmicas atrav(s de comandos @NL e procedimentos externos atrav(s de @NL stored procedures.

Extração por ro&ramação

9xtraço por programaço permite a cada programa usar seus pr4prios m(todos para extrair os dados. Isto tende aser usado com estruturas de dados propriet&rias. 9sta ( em geral a proposta mais cara em termos de recursos, mas

em alguns casos pode ser a mais eficiente porue o propriet&rio dos dados conhece a estrutura dos dados.Ferramentas de 5erceiros

9ste ( de longe o m(todo mais popular usado ho%e em dia. 'o inv(s de cada desenvolvedor escrever as suas pr4priasrotinas de extraço de dados, vendedores escreveram tais ferramentas como 5pen Database <onnectivitU *5DB< +,DBLib, 5L9 DB, e 'ctiveEQ Data 5b%ects *'D5+.9stes tipos de ferramentas fornece ao desenvolvedor t(cnicas de acesso a dados ue so otimizadas para as fontes dedados ou, no caso do 5DB<, fornece uma estrat(gia gen(rica de acesso a dados. Fesmo ue estas ferramentasforneçam excelente acesso aos dados, elas restringem o desenvolvedor a um certo paradigma de acesso.9mpacotando uma D'L com estas ferramentas, o desenvolvedor pode aprender um con%unto fixo de 'I e no se

 preocupar uando a estrat(gia muda ou ( substitu)da.

'e$uisiç6es DinSmicas

or reuisiç8es dinmicas, no ueremos dizer o tipo da reuisiço ue um usu&rio final pode digitar, mas sim umaue ( gerada por programaço. ' reuisiço pode ser gerada como o resultado da l4gica de programaço ou pode ser selecionada de uma lista de reuisiç8es predeterminadas. De ualuer forma, a natureza exata da reuisiço no (conhecida de antemo e ( gerada ou criada em tempo de execuço.>ma das melhores linguagens para este tipo de reuisiço ( a @tructured NuerU Language *@NL+. <om a sua ricasintaxe de linguagem e seu dialeto uase universal, o @NL ( primeiro candidato para gerar reuisiç8es dinmicas emum D'L. :amb(m, a maioria das ferramentas e bibliotecas de terceiros funcionam bem com o @NL.9ntretanto, uma reuisiço dinmica no ( o modo mais eficiente ou o m(todo mais seguro de reuisiço de dados.5 problema de segurança pode ser observado uando precisamos enviar a seguinte instruço @NL5PD)E ContasSE) (alan0o = (alan0o 4LL.LLERE Conta = 4QWXV

9sta instruço ( muito f&cil de entender, mas uma uebra de segurança pode ocorrer uando temos ue fornecer

informaço sigilosa, tal como um n$mero de conta, pela rede. :amb(m, toda a instruço tem mais do ue Jcaracteres de comprimentoXualuer caracter corrompido pode causar um erro at( fazer com ue a instruçoaponte para outra conta.9stes tipos de reuisiç8es podem afetar o desempenho, porue no somente mais informaço est& sendo enviado

 pela rede, mas tamb(m, no caso de muitos @NL, deve ser validado e compilado cada vez ue o dispositivo recebe ainstruço. @e nossa aplicaço ou sistema ir& enviar grandes uantidades destes tipos de ueries, o grande n$mero deciclos validaç8esPcompilaç8es ir& degradar o acesso de ualuer um ue precise acessar os dados.

!tored rocedures

>m m(todo melhor ue usar instruç8es @NL dinmicas ( predeterminar uais instruç8es @NL precisam serexecutadas e guarda-las no mecanismo de execuço de @NL. Isto permite ue o mecanismo de execuço das @NL

 pre-validar e pre-compilar as instruç8es. :udo o ue precisamos fazer para execut&-las ( passar os argumentosapropriados. ?este caso, o c4digo para atualizar o balanço de uma conta pode ser escrito como segue

EYEC5)E spdiciona(alanco 4QWX9 4LL.LL9mbora a stored procedure sp'dicionaBalanco diz o ue a procedure faz, poderia ser escrito simplesmente comoEYEC5)E sp(4 4QWX9 4LL.LL

5 nome da stored procedure no importa se o desenvolvedor sabe o ue ela faz. <om as stored procedures menos parmetros precisam ser passados, as instruç8es @NL so pre-validadas e pre-compiladas, e a uantidade de dadosenviado pela rede ( menor.

'e%lexão

5s t4picos levantados pelas discuss8es acima sobre reuisiç8es dinmicas e stored procedures sero minimizados sea D'L estiver sendo executada na mesmo euipamento ou no mesmo lado ue o mecanismo de execuço da @NL, e

Page 60: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 60/66

se toda a comunicaço com a D'L for atrav(s de algum outro componente. Isto far& com ue somente a D'L possacriar ou gerar reuisiç8es dinmicas ou usar stored procedures e, portanto, aliviar os t4picos de segurança etransmisso.

Livraria Duwamish

<omo a Livraria Duwamish ( tanto um cen&rio de migraço como um exemplo, usamos o m(todo de @NL

dinmicas nas fases iniciais e migramos para o uso de stored procedures nas fases posteriores. ' transiço entre usar@NL dinmicas para stored procedure coincide com a mudança entre o Ficrosoft 'ccess para o Ficrosoft @NL@erverR. <omo tal, as instruç8es @NL usadas nas $ltimas fases da Livraria Duwamish so otimizadas para o @NL@erver. 9xistem duas grandes raz8es porue a Livraria Duwamish faz a transiço do 'ccess para o @NL @erver

 primeira, o 'ccess no tem a capacidade de usar stored procedures e, segunda, o 'ccess no ( pro%etado paragerenciar milhares de usu&rios simultaneamente.

Escolhendo o !eu edido9xistem v&rias formas diferentes de recuperar dados solicitados, tais como aruivos, vetores, coleç8es, e ob%etosCecordset do 'D5.

Ar$uivos

>sar um aruivo para recuperar informaço de algum outro lugar pode parecer redundante, porue os dadosoriginais provavelmente %& esto em um aruivo. or(m, este mecanismo ( $til se precisarmos de somente uma partedo aruivo, ou se precisamos ue os dados recuperados continuem a existir mesmo ap4s o computador ser desligado.

 ?a maioria das vezes, por(m, necessitaremos ue os dados este%am prontos para o acesso de uma forma mais r&pida.'ui ( aonde os seguintes mecanismos se aplicam pois eles utilizam da mem4ria para manter os dados.

#etores

>sar um vetor para manter e transferir dados ( provavelmente um dos recursos mais eficientes uando ( para desviar as pegadas da mem4ria. 5s dados so agrupados em um pacote de entidade e pode ser transmitido como um grande

 bloco de mem4ria, ou um grande ob%eto bin&rio *BL5B+. 9mbora este mecanismo se%a eficiente em mem4ria, ( omais dif)cil de usar eficientemente porue devemos escrever todo o c4digo para gerenci&-lo. >m vetor (simplesmente um bloco de mem4ria ue podemos acessar atrav(s de um )ndice a fim de manipular uma entrada dedados. 5 vetor no tem intrinsecamente em si mesmo formas de procurar, excluir, expandir, ou adicionar. ' fim derealizar estas tarefas devemos escrever rotinas para faz(-lo. ara adicionar ou alterar um elemento em um vetor,simplesmente modificamos o conte$do do vetor em um certo )ndice do vetor. 9xistem implementaç8es de vetoresinteligentes ue %& possuem estas habilidades, mas eles no so mais simples vetores mas sim coleç8es ou ob%etos.

oleç6es

>ma coleço <5F ( uma forma muito eficiente de enviar dados porue ela tem a facilidade de uso de um vetor semas limitaç8es do mesmo. 9m uma coleço ( f&cil adicionar, alterar e excluir. 9mbora no to simples de percorrerseus elemento como em um vetor, uma coleço <5F ( pro%etada para permitir um loop de repetiço. >ma dascaracter)sticas mais usadas de uma coleço ( a habilidade de procurar por um elemento espec)fico na coleço atrav(sde uma chave associada.

'ecordsets AD)

odemos imaginar um ob%eto Cecordset 'D5 como um vetor muito inteligente com as habilidades de uma coleço

*e muito mais+. ?o somente podemos usar um recordset para manter dados, mas tamb(m podemos procurar,adicionar, excluir, alterar, e etc. @e um recordset est& conectado com a fonte de dados, ualuer mudança feita norecordset pode ser enviada de volta a fonte de dados com um simples comando. @e o recordset no est& conectado aualuer fonte de dados *isto ( chamado de recordset desconectado+, o recordset pode ser transmitido pela rede emanipulado em um lugar diferente de seu c4digo original.

Livraria Duwamish

orue a Livraria Duwamish usa 'D5 para as suas ferramentas nativas de acesso a dados e 'D5 tem um excelenteob%eto *Cecordset+ para passar dados, decidimos usar o Cecordset 'D5 como o mecanismo de passagem de dados.

Page 61: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 61/66

9le no somente nos fornece um ob%eto de dados bem est&vel *'D5 deve existir por algum tempo ainda+, mastamb(m no precisamos codificar todos as rotinas para os v&rios m(todos.

.antendo ontato9xistem v&rias vantagens para usar recordsets desconectados, mas tamb(m existem vezes em ue um recordsetconectado ( a melhor opço. Nual ( a diferença entre os dois\

Livraria Duwamish

5 exemplo da Livraria Duwamish usa tanto recordsets conectados como desconectados. Nuando um grupo deregistros ( solicitada somente para ser mostrado, os dados so retornados em um recordset desconectado. Nuando osdados reuerem uma conexo, ou a atualizaço de um registro ( reuerida antes ue ualuer c4digo possacontinuar, recordsets conectados so usados. or exemplo, uando um pedido de venda ( inclu)do no banco dedados, um cabeçalho da venda ( criado de uma forma conectada, os campos so atualizados, e o registro ( gravadode volta no banco de dados. Isto permite com ue o pr4ximo trecho de c4digo imediatamente recupere o campochave prim&ria do registro do cabeçalho da venda *<odigo+ para us&-lo com os registros dos detalhes associadoscom a venda. >ma vez ue os registros dos detalhes da venda se%am inclu)dos no banco de dados, a conexo (finalmente rompida. @em a conexo do cabeçalho da venda, o campo <4digo no poderia ser preenchido e portantono estaria dispon)vel para ser usado com os registros dos detalhes da venda. 'mbas as operaç8es esto dentro deuma transaço, assim se ualuer uma falhar, as operaç8es podem ser voltar para tr&s *rolled bac"+.

onectado

>m recordset conectado ( um ob%eto recordset ue mant(m uma conexo com a fonte de dados. 9sta conexo podeser mantida durante a vida do recordset, ou pode ser desconectada a ualuer momento mudando a conexo ativa.@e a conexo ( rompida, ualuer atualizaço ao recordset no ser& transmitida 7 fonte de dados at( ue a conexose%a restabelecida.' vantagem de um recordset conectado ( ue o recordset tem acesso imediato *ue termo relativo+ aos dados. Nuo6imediato6 ( dependente de como o recordset ( conectado a fonte de dados. @e o recordset ( criado para manter umcon%unto dinmico de dados, mudanças nos dados originais so refletidos no recordset. @e o recordset foi criado paraser um con%unto est&tico dos dados *snapshot+, mudanças nos dados originais no so refletidos no recordset e s4 sorecuperados uando o recordset tenta executar uma atualizaço.' desvantagem de um recordset conectado ( ue a conexo com a fonte de dados e carregada com o recordset, noimportando uo longe pela rede ele trafegar. Desta forma, carrega o servidor com excesso de manutenço da

conexo e aumenta o uso de recursos pelo ob%eto Cecordset.

Desconectado

>m recordset desconectado ( simplesmente um recordset ue foi populado com dados de uma fonte de dados edepois desconectado dessa fonte de dados. ?o causa o excesso de conexo para a fonte de dados. or(m, ualueralteraço nos dados no ( refletida na fonte de dados originais at( ue o recordset se%a reconectado a fonte de dadose o m(todo de atualizaço se%a acionado.

Um roposta 5udo ou 7ada/re[entemente uma mudança nos dados pode causar mais de uma alteraço nos dados. Cecordsets transacionaisasseguram ue todas as mudanças se%am realizadas ou, se necess&rio, ue todas se%am revertidas.

7ão>transacional>m recordset no-transacional ( um no ual as mudanças nos dados so feitas permanentemente sem a chance dedizer atrav(s da programaço, 65pa, isso no funciona, desfaça minha $ltima alteraço6 9ssencialmente, no existeum comando 6desfazer6.

5ransacional

or outro lado, um recordset transacional permite ue controlemos se nossas mudanças sero permanentes. odemosiniciar uma transaço, realizar mudanças, e depois gravar *commit+ todas as mudanças, ou 6desfazer6 tudo. >ma vezue a deciso for tomada, o c4digo pode encerrar a transaço.

Page 62: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 62/66

Livraria Duwamish

' Livraria Duwamish usa tanto recordsets transacionais como recordsets no-transacionais. ?o caso de umaalteraço atmica como incluir um registro no estoue, ela usa um recordset no-transacional. Nuando os recordsetsso dependentes de outros recordsets, ela usa recordsets transacionais.' incluso dos detalhes da venda depois da incluso do cabeçalho da venda ( um caso cl&ssico de recordsettransacional. 5 cabeçalho da venda deve ser inclu)do primeiro ao banco de dados para obter a chave prim&ria*<odigo+, e depois os detalhes so inclu)dos. @e, por ualuer motivo, os detalhes violarem as regras de integridadereferencial do banco de dados, a incluso do cabeçalho da venda pode ser revertida *rolled bac"+ sem afetar o restodo banco de dados.

Fre$Tentes ontas !oltasFanter uma conexo com a fonte dos dados pode ser caro em termos dos recursos usados a menos ue tenhamosue fazer acessos fre[entes a fonte de dados, em cu%o caso ( melhor manter a conexo a fonte de dados at( uetodos os acessos tenham terminados.

Livraria Duwamish

Fuitas partes da Livraria Duwamish mant(m uma conexo em cache enuanto elas fazem v&rios acessos ao bancode dados para agrupar v&rios recordsets. >ma vez ue estes v&rios recordsets este%am agrupados, a conexo em

cache ( derrubada.

onex6es em ache

>sando uma conexo em cache ( muito $til uando precisamos fazer fre[entes acessos a fonte de dados, porueabrir e fechar uma conexo toda vez ue ueiramos afetar os dados pode ser custoso em termos de tempo, mem4ria,ou transmisso de dados. or exemplo, conex8es em cache so $teis uando usamos recordsets transacionais, poruea conexo ser& necess&ria mais tarde tanto para gravar *commit+ ou retornar *roll bac"+ as mudanças.

onex6es sem ache

5 ue significa sem cache\ @ignifica simplesmente ue a conexo a fonte de dados no ( mantida em todo o tempode vida de um recordset. >m ambiente sem cache ( muito mais f&cil de trabalhar e ( mais r&pido como um todo.

onclusão5s t4picos de pro%eto descritos neste artigo so os pontos mais pertinentes ue encontramos uando escrevemos acamada de acesso a dados da Livraria DuwamishXlutamos com eles e gostar)amos de passar o ue aprendemos paravoc=s.

Page 63: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 63/66

Desmem(rando a amada de Acesso a Dados

Livraria Duwamish, Fase -

!um*rio; 9xplica o processo de remover o c4digo de acesso a dados de um aplicaço e substitu)-lo por chamadas a

um componente <5F de acesso a dados. *3 p&ginas impressas+ Discute• Fovendo um m4dulo de 'I para um componente <5F

• 9xemplos de c4digo

Introdução' /ase 1 do exemplo da Livraria Duwamish ( pro%etado para demonstrar como desmembrar a camada de acesso adados das aplicaç8es individuais em um componente ue ser& comum a todas as aplicaç8es. ' abordagem ueiremos fazer para remover o acesso a dados das aplicaç8es ( similar a abordagem ue ( usada uando dodesenvolvimento de uma nova aplicaçoXcolhendo informaç8es, analisando, plane%ando, e ento implementando.9ste processo torna-se um esforço cooperativo entre os desenvolvedores da aplicaço e o desenvolvedor respons&vel

 pelo pro%eto do componente de acesso a dados. Ae%a os artigos 6ro%etando uma <amada de 'cesso a Dados,6 para

examinar os t4picos envolvidos em separar o componente de acesso a dados, e 6'I da <amada de 'cesso a Dadosda Livraria Duwamish,6 para detalhes da especificaço dos m(todos e propriedades do componente. 9ste artigodescreve o processo de substituiço a camada de acesso a dados integrada em cada aplicaço des"top por chamadasa m(todos em um componente <5F separadoXa <amada de 'cesso a Dados da Livraria Duwamish *DBD'L+.5 primeiro passo no processo foi definir os reuisitos em cada uma das aplicaç8es e isolar os segmentos de c4digode acesso a dados. 5s segmentos de c4digo representando as funç8es b&sicas associadas com o acesso a dadosX obtendo, incluindo, e alterando registrosXforam ento agrupados %untos.5 fato de ue cada desenvolvedor em nosso grupo teve uma abordagem diferente para a tarefa de acesso a dadosexigiu ue tiv(ssemos de analisar as t(cnicas empregadas. or essa razo, depois ue todos os segmentos de c4digode acesso a dados foi isolado, examinamos cada funço b&sica para encontrar as similaridades b&sicas, permitindo-nos determinar uais funç8es poderiam ser compartilhadas e usadas no componente de acesso a dados. orue todasas necessidades de cada aplicaço no pode ser exatamente satisfeita, algumas modificaç8es adicionais for reuerida

 para cada c4digo da aplicaço.

Aplicação D#; Incluindo uma #enda ?a /ase 0 da aplicaço onto de Aenda *DA+, incluir uma venda reueria o agrupamento de v&rias mudanças nosdados como uma $nica transaço por causa da relaço paiPfilho entre os registros da venda e detalhes. Isto reueriac4digo especial de acesso a dados. 5 c4digo ue foi desenvolvido na /ase 0 a%udou a determinar alguns dos m(todosue foram usados no componente da /ase 1. 5 seguinte c4digo ilustra a incluso de uma venda e seus detalhes.

 ?ote, principalmente, a instruço oVenda#odigo $ oRset%odigo. Isto recupera a chave prim&ria *<odigo+ doregistro inclu)do recentemente. 9ste <odigo ( ento usado como a chave estrangeira para os registros deAendaDetalhe ue so adicionados a seguirPu%lic unction Incluir:enda2o:enda s c:enda9 o:endaDetItens sc:endaDetItens9 oEndereco s cEndereco9 oPedidoStatus s cPedidoStatus9oPedido)ipo s cPedido)ipo3 s (ooleanDim oD* s +e# d%dal.CDataccess

Dim oRset s DOD(.Recordset...' Incluir uma $enda.Set oRset = +e# DOD(.RecordsetIf oD*.%rir)Recordset2sc:E+DS9 oRset9 *)_Optimistic9 OO_5sar)a%ela3 )"en  oRset.dd+e#  it" o:enda  oRset+umCliente = .+umCliente

Page 64: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 64/66

.

.

.  oRsetEntrega = .Entrega  End it"  oRset.5pdate  ' 8uarda Codigo do registro de $enda para usar com os detal"es da $enda  o:enda.Codigo = oRsetCodigo 

If oD*.ec"ar)Recordset2oRset3 )"en  Set oRset = +ot"ing  Else  Err.+um%er = icRECORDSE)_C*OSE_ERROR  Err.Description = scRECORDSE)_C*OSE_ERROR  8o)o Errorandler  End IfElse  Err.+um%er = icRECORDSE)_OPE+_ERROR  Err.Description = scRECORDSE)_OPE+_ERROR  8o)o Errorandler

End If

' Incluir detal"es da $enda.Set oRset = +e# DOD(.RecordsetIf oD*.%rir)Recordset2sc:E+D_DE)*ES9 oRset9 *)_Optimistic9 OO_5sar)a%ela3)"en  or Eac" o:endaDetItem In o:endaDetItens  oRset.dd+e#  it" o:endaDetItem  oRset+um:enda = o:enda.Codigo  oRset+umItem = .+umItem  oRsetPreco5nitario = .Preco5nitario  oRsetAuantidade = .Auantidade  oRset.5pdate  .Codigo = oRsetCodigo  End it"  +e7t  If oD*.ec"ar)Recordset2oRset3 )"en  Set oRset = +ot"ing  Else  Err.+um%er = icRECORDSE)_C*OSE_ERROR  Err.Description = scRECORDSE)_C*OSE_ERROR  8o)o Errorandler  End IfElse  Err.+um%er = icRECORDSE)_OPE+_ERROR  Err.Description = scRECORDSE)_OPE+_ERROR

  8o)o ErrorandlerEnd If...

' 8ra$ar todos os partes da transa01o como uma so.If oD*.Commit)rans2))_DropConnection3 )"en  ' )udo funcionou entao a$isa do sucesso e sai  Incluir:enda = )rue

Page 65: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 65/66

Else  Err.+um%er = ic)R+SC)IO+_C*OSE_ERROR  Err.Description = sc)R+SC)IO+_C*OSE_ERROR  8o)o ErrorandlerEnd IfSet oD* = +ot"ing...End unction

A Aplicação at*lo&o ?a /ase 0 da aplicaço <at&logo, o acesso aos dados foi realizado por uma funço customizada chamada)(ter'ecordset0 ' funço )(ter'ecordset na aplicaço <at&logo, embora definida diferente, compartilha omesmo nome de um m(todo na 'I gen(rica de acesso a dados. <omo as procedures no so compat)veis,

 precisamos remover a funço contida na aplicaço. 9sta funço serve a um duplo prop4sito, fornecer um recordsetatualiz&vel ou no-atualiz&vel.5 m(todo )(ter'ecordset na /ase 1 do componente somente retorna um recordset no-atualiz&vel. ara auelescasos em ue ( reuerido um recordset atualiz&vel, o con%unto de m(todos e&in5rans, A(rir5'ecordset, e

ommit5rans so fornecidos no componente. 5 seguinte c4digo ilustra este processoPri$ate Su% %tnIncluirutor_ClicF23...oD*.(egin)rans 2sDS+3oD*.%rir)Recordset sc)(E*_5)ORES9 oRec9 ad*ocFOptimistic9 adCmd)a%le' Cria um no$o autoroRec.dd+e#oRec+ome = str+omeoRecSo%renome = strSo%renomeoRec.5pdatemn+umutor = oRecCodigooRec.Close

oD*.Commit)ransSet oRec = +ot"ing...End Su%

5 seguinte c4digo ilustra o m(todo )(ter'ecordset no componentePri$ate Su% Mostrar)otalItens23Dim o(ancoDadosPI s +e# CcessoDadosDim oRec s DOD(.Recordset

If o(ancoDadosPI.O%terRecordset2sDS+9 KSE*EC) Codigo rom ItensK9 oRec3 )"en  mn)otalItens = oRec.RecordCount

  Status(ar.Simple)e7t = KL de K B mn)otalItens B K itens.K  oRec.Close  Set oRec = +ot"ingEnd IfEnd Su%

Entre&a e 'ece(imento ?a /ase 0, a aplicaço de 9ntrega e Cecebimento acessava os dados chamando funç8es do m4dulo de 'I de acessoa dados ue era compilado com a aplicaço. 9ste m4dulo se tornou a base para o componente na /ase 1. or causa

Page 66: Livraria Duwamish

7/21/2019 Livraria Duwamish

http://slidepdf.com/reader/full/livraria-duwamish 66/66

disso, a converso foi relativamente f&cil. @implesmente incluimos .!D7; Duwamish -, # amada de Acesso a

Dados como refer=ncia no pro%eto. 9nto removemos o m4dulo 'I de acesso a dados da lista de aruivos inclusosno pro%eto e substitu)mos as chamadas feitas anteriormente as funç8es do m4dulo por chamadas aos m(todos donovo componente. 's funç8es ue comp8em o m4dulo foram inclu)das na DBD'L para /ase 1. 5 seguinte c4digoilustra a chamada a Exec:uer na /ase 0 e ento a mesma chamada na /ase 1. AcessoDados ( a $nica classe naDBD'L./ase 0%Retorno = cessoDadosPI.E7ecAuer?2scCO++EC)9 sAr?3

/ase 1Dim ocessoDadosPI s +e# CcessoDados%Retorno = ocessoDadosPI.E7ecAuer?2scCO++EC)9 sAr?3

onclusão ?a /ase 0 usamos o FicrosoftQ 'ctiveEQ Data 5b%ects *'D5+ para gerenciar o acesso a dados. Isto nos deu umatecnologia comum para usar no gerenciamento dos dados atrav(s do ciclo de vida do exemplo da LivrariaDuwamish. @e voc= tentar isolar um componente de acesso a dados e converte-lo para 'D5 a partir de umaaplicaço des"top cl&ssica ue usa Data 'ccess 5b%ects *D'5+ ou Cemote Data 5b%ects *CD5+, com ou semcontroles ligados a um banco de dados, ser& necess&rio fazer mais convers8es. 9mbora algumas sintaxes se%amsimilares entre as tecnologias, algumas das funcionalidade encontradas no D'5 e CD5 no esto presentes no

'D5. 5 'D5 no suporta controles ligados sem o Cemote Data @ervice *CD@+ 'dvancedData<ontrol. 'l(m domais, conforma voc= migra das aplicaç8es des"top para aplicaç8es em multi-n)veis, os controles ligados tornam-semenos utiliz&veis, ento ( uma boa id(ia fazer a mudança neste momento.

 ?a /ase 0 do exemplo da Livraria Duwamish diferentes desenvolvedores pro%etaram cada aplicaço com poucasdiretrizes. ortanto, diferentes t(cnicas de codificaço foram usadas em cada uma das v&rias aplicaç8es. ?a /ase 1nossa tarefa foi separar a camada de acesso a dados das aplicaç8es e compartilhar um componente <5F. Isto exigiua combinaço e o refinamento dos m(todos de acesso a dados para ue eles pudessem ser compartilhados por todasas aplicaç8es. <omo voc= %& deve ter visto ilustrado, cada aplicaço exigiu algumas modificaç8es.Isto resume a /ase 1 do nosso exemplo. ?a /ase 2 iremos substituir a l4gica do neg4cio em cada aplicaço por umcomponente <5F compartilhado por todos. <omo voc= pode imaginar, o processo ser& similar ao ue foi feito coma camada de acesso a dados na /ase 1, mas muito mais extenso.