Implementando o Padrão "Manter Agregação Mestre/Detalhe"

Tamanho: px
Começar a partir da página:

Download "Implementando o Padrão "Manter Agregação Mestre/Detalhe""

Transcrição

1 8 Capítul Implementand Padrã "Manter Agregaçã Mestre/Detalhe" 6 Implementand UC002 Manter Funcinári! - Analisand a especificaçã A terceira especificaçã de Cas de Us que irems implementar está definida n diagrama da. Figura B8.. Especificaçã para UC002 Manter Funcinári!. Este diagrama ainda é bem sucint prque se trata de um terceir Cas de Us Padrã cm nme Manter Agregaçã Mestre/Detalhe, definid n módul jcmpany Patterns & Methds e autmatizad pels móduls jcmpany FS Framewrk (generalizações da arquitetura) e jcmpany IDE (geradres de artefat). O Mdel de Classes e Prjet de Interfaces cm Usuári (GUI) sã agra de uma dimensã inaprpriada para serem diagramads juntamente cm a visã estrutural d Cas de Us. Pr este mtiv, fram representads em pactes diferentes na ferramenta CASE. O cnteúd d pacte Graf Funcinári pde ser vist abaix. Nta de especificaçã: É primeir ds Cass de Us que implementams até agra, d nível d mar, u seja, de um nível que representa um interesse diret d usuári/cliente, que pdems ntar pel símbl de exclamaçã (!) e cr azul clara (cas estejams visualizand clrid). Smente para rememrar capítul 5, s utrs dis Cass de Us anterires, smads, representavam um únic bjetiv d usuári.

2 Capítul B8 Figura B8.2. Graf d Mdel de Dmíni incluind Agregaçã a ser Mantida e Classe referenciada O prjet de GUI para Manutençã pde ser vist na Figura B8.3. Figura B8.3. Prjet de GUI para frmuláris de manutençã (assistente e tab-flder). O prjet de GUI para Seleçã pde ser vist na Figura B8.4. Figura B8.4. Prjet de GUI para Seleçã de Funcinári.

3 Implementand Padrã Manter Agregaçã Mestre/Detalhe - Obtend Classes de Dmíni em Java Nte que, neste Cas de Us, irems lidar cm um Graf de Classes bem mais próxim ds que encntrams em aplicações d mund real. Desta vez, para evitar trabalh braçal, vams cpiar as classes de Entidades d diretóri [jcmpany]\jcmpany_dcumentaca\rhtutrial\funcinari n frmat em que viriam após a geraçã pr uma ferramenta CASE.. Cpie este diretóri inteir e cle em nss prjet rhtutrial_cmuns, abaix d diretóri cm.empresa.rhtutrial.entidade, cm indicad pela Figura B8.5 e Figura B8.6. Figura B8.5. Classes Java para prsseguir n rhtutrial dispníveis n diretóri de instalaçã. Figura B8.6. Clar diretóri funcinari em cm.empresa.rhtutrial.entidade n prjet rhtutrial_cmuns. Perceba que as classes Dependente e Funcinari apresentam prblema de cmpilaçã após a cópia, já que referenciam a Enumeraçã Sex, que nã fi dispnibilizada. Este esqueciment prpsital ns permitirá exemplificar uma facilidade adicinal d Pwerlgic jcmpany Artifact Generatr, de geraçã de Enumerações I8n, chamadas de Classes de Dmíni Discret. - Gerand Enumerações I8n Classes de Dmíni Discret I Pderíams criar nssa Enumeraçã Sex dentr d subdiretóri funcinari, já que inicialmente será reutilizad smente dentr da sua agregaçã. Mas se já prevems uma pssibilidade de que seja utilizada pr mais Entidades, também nã é uma má idéia já prmvê-la para um nível acima, deixand-a n diretóri raiz entidade 2.. Acine Assistente de Criaçã para Enumeraçã I8n, selecinand pacte desejad e, em seguida, acinand clique direit -> New -> Other.... Figura B8.7. Acinand Assistente de Criaçã de Enumeraçã I8n, n pacte raiz. Na verdade, em aplicações reais númer de classes em geral cstuma ser mair, bem cm númer de prpriedades. Prém, iss nã interfere na cmplexidade da estrutura sintática d Graf, que significa que Cas de Us Padrã que utilizarems permanecerá útil e cntinuará prvend excepcinal prdutividade, mesm se escalarms tamanh d mdel. 2 Obs.: Cm nã tems um utr us previst para Sex neste prjet (a cntrári d cmpnente Enderec, pr exempl, que previms usar em UnidadeOrganizacinal e Funcinari ), alguns irã preferir mantê-l inicialmente em funcinari", psterirmente efetuand uma refatraçã se e quand necessári fr.

4 Capítul B8 2. Acine agra a pçã 02 Classe de Dmíni Discret (Enumeraçã I8n). Figura B8.8. Selecinand Assistente de Criaçã para Enumeraçã I8n. 3. Na página de definiçã, digite nme da Enumeraçã e uma relaçã de valres d tip Códig e Descriçã, que irã representar s valres discrets pssíveis. Para adicinar valres à lista, clique em Adicinar Item, cm exemplificad na Figura B8.9. Figura B8.9. Clicand em Adicinar Item após digitar M em códig e Masculin em Descriçã A Figura B8.0 traz uma explicaçã cmpleta d diálg d Assistente de Criaçã. Figura B8.0. Diálg de criaçã de Classe de Dmíni Discret (Enumeraçã I8n). #. Camps para se infrmar nme da Enumeraçã e seu pacte. #2. Camp para se infrmar códig, que n cas de Entidades persistentes será valr armazenad n SGBD2. É pssível que agra s plugins d Pwerlgic jcmpany Artifact Generatr sejam apresentads cm default pel Eclipse (se nã frem, abra-s na lista). 2 Prtant, a cntrári da ba prática recmendada para Enumerações transientes, n cas das persistentes, mantenha estes códigs pequens para nã gerar desperdíci desnecessári de armazenament.

5 Implementand Padrã Manter Agregaçã Mestre/Detalhe #3. Camp para se infrmar a descriçã, em idima prtuguês (idima default, na verdade). Cm funcina? - Esta descriçã será gerada na Enumeraçã cm um cmentári padrã, a lad de cada valr da Enumeraçã. - Quand um Assistente de Cas de Us ntar uma referência a esta Enumeraçã, este cmentári será acrescid a arquiv ApplicatinResurces.prperties, cm a cnvençã de chave aprpriada: [Nme da Enumeraçã cm inicial minúscula].[valr]=[descriçã] - Enumerações que seguem esta cnvençã pdem ser diretamente utilizadas, de frma internacinalizada, pr cmpnentes JSF u Tag-Files para Struts d jcmpany. #4. Btões para se adicinar itens à lista u para se remver. Para segund cas, psicine na linha desejada e em seguida clique n btã Remver Item. #5. Lista de valres pssível (dmíni discret). #6. Btã de cnfirmaçã para geraçã. 4. Cnfira resultad gerad cm a Figura B8.. Figura B8.. Anatmia de uma Enumeraçã I8n. #. Declaraçã padrã Java. #2. Valres, cm cmentáris seguind a cnvençã I8n. #3. Métd auxiliar, útil para cmpnentes JSF e Tag-Files Struts exibirem valres. 5. Para finalizar, vams acertar as imprtações em Funcinari e Dependente, uma vez que criams Sex n diretóri raiz d pacte de Entidades. Edite cada uma destas classes e digite Cntrl+Shift+O (letra O, nã númer Zer) para que as imprtações sejam ajustadas pel Eclipse autmaticamente. A final, nenhum err de cmpilaçã nas Entidades deve ser mais exibid. - Entendend a Classe de Dmíni Edite a classe Funcinári para uma rápida inspeçã. É imprtante ntar que, para que uma Enumeraçã definida em ferramenta CASE (tal cm EstadCivil, pr exempl), funcine de frma I8n n jcmpany, basta declarar cmentári aprpriadamente após cada valr e cm a cnvençã aprpriada, cm faz geradr.

6 Capítul B8 Figura B8.2. Prpriedades que representam assciações, geradas pr ferramenta CASE. Perceba que prpriedades de assciaçã que nã estavam presentes n mdel da Figura B8.2 agra aparecem na classe, tais cm Enumerações, Cmpnentes e utras. Qualquer ferramenta CASE razável, tal cm Enterprise Architect, utilizad neste livr, cnseguirá gerar estas prpriedades a partir das assciações e agregações mdeladas. Cas nã se pssua nenhuma, naturalmente, deve-se criá-las manualmente ( que é também um trabalh trivial). Mas neste cas específic, já que Funcinari pssui ligaçã bidirecinal cm seus detalhes (na verdade, tda assciaçã cm detalhes deve ser bidirecinal para que funcine aprpriadamente), entã deveríams esperar também pr uma cleçã de Dependente e uma de HistricPrfissinal em Funcinari, mas elas nã existem. Seria pssível gerarms estas cleções utilizand recurss de nssa ferramenta CASE, mas nã fizems em nss exempl para expr uma cmdidade ferecida pels plugins d jcmpany IDE. Estes plugins irã realizar este ajuste para desenvlvedr e criar as cleções, cas ele as esqueça. Cmpreendend iss, estams prnts para iniciar mais uma iteraçã de mapeament Objet-Relacinal. - Gerand Mapeament para Classes e Cmpnentes - Objet-Relacinal III. Decidind a rdem de mapeament. Tems várias classes a mapear, em nssa agregaçã. Pr nde cmeçams? Fi sugerid anterirmente que deveríams iniciar mapeament, preferencialmente, pelas classes mais estáveis, u seja, que referenciam (u imprtam, u dependem de) mens bjets. Esta sugestã tem uma mtivaçã simples em nss cas: cm nã tems ainda a classe cncreta, de Entidades referenciadas, s mapeaments de assciaçã ficariam cm a cláusula targetentity= apntand para uma referência abstrata. Cm esta clásula é que indica a instância real a ser utilizada, iss prvcaria err. Exempl: Cas a classe UnidadeOrganizacinal nã estivesse pré-mapeada, plugin de criaçã de mapeament para Funcinari iria gerar uma assciaçã cm targetentity = UnidadeOrganizacinal.class (abstrata) a invés de uma referência a targetentity = UnidadeOrganizacinalEntity.class (cncreta). O targetentity é únic incnveniente, afetad pela rdem em que se mapeia. Uma vez que tenha cnsciência diss, Desenvlvedr pde gerar mapeaments Objet-Relacinal em qualquer rdem - e ajustar targetentity em seguida. Uma utra ntável dificuldade para se utilizar a dica de rdem pela menr dependência sã as cmpsições Mestre-Detalhe, pis estas pssuem referências bidirecinais2... Pr qual Apesar diss, s plugins de mapeament Objet-Relacinal d jcmpany nã devem ser utilizads para crrigir mdelagem. As classes Java para Entidades já devem, preferencialmente, pssuir uma estrutura crreta de assciações antes de serem mapeadas u utilizadas n jcmpany. N entant, devid a puc cstume de desenvlvedres cm mdelagens bidirecinais cm cleções, e send estas imprtantes para uma Agregaçã Mestre/Detalhe, s plugins efetuaram este ajuste. Outra pçã que jcmpany realiza de frma cmplementar é a geraçã de getters e setters, n padrã JavaBean. Tant as ferramentas CASE quant Eclipse pssibilitam esta geraçã facilmente, mas jcmpany irá também realizar este cmplement se s métds nã existirem, para evitar nãcnfrmidades básicas. 2 Perceba que explicitams tdas as referências n diagrama UML cm as setas de direçã das assciações para facilitar a análise de dependência u referência. Nrmalmente mitiríams bidirecinaments para cmpsições e direcinaments simples para agregações cmpartilhadas, que pdem ser inferids.

7 Implementand Padrã Manter Agregaçã Mestre/Detalhe lad cmeçar? Neste cas específic, sugerims que se inicie mapeament na rdem Raiz/Mestre e, em seguida, Detalhes. Se analisarms nss mdel na Figura B8.2, tirand as Enumerações e as classes já mapeadas, cm UnidadeOrganizacinal e cmpnente Enderec, restam as classes candidatas Funcinari, Dependente, HistricPrfissinal e Ft. Pela análise de dependência simplesmente, a classe Ft seria a primeira pr ter mens referências ( Funcinari é que referencia Ft ). Pderíams mapeá-la agra, mas esta classe tem peculiaridades que serã discutidas cm mais detalhes n próxim capítul. Resta entã a nssa Agregaçã Mestre/Detalhe (Cmpsiçã Bidirecinal). Iniciarems mapeament, neste cas, pela classe Raiz/Mestre, Funcinari. 2. Edite esta classe e pressine Cntrl+N para iniciar seu mapeament, selecinand Assistente de Criaçã númer 0. As infrmações de mapeament para esta classe se encntram na. Basicamente, aplicams as mdificações presentes na especificaçã. Figura B8.3. Mapeament Objet-Relacinal para Funcinari" cm partes mdificadas em amarel. É imprtante entenderms prque tamanh fi infrmad para datanasciment. Este tamanh é dispensável pel JPA, já que tip Date é recnhecid pr SGBDs e nã utiliza tamanh explicit nas DDLs. Mas infrmand pssibilitams que s camps de entrada de data ns frmuláris herdem esta infrmaçã declarada na Entidade, cm nas utras prpriedades. Perceba também que as classes referenciadas já sã identificadas pel jcmpany, e assciações aprpriadas assumidas cm padrã (cm para cmpnente diferenciand-se de manytone). O restante d mapeament já deve ser de cmpreensã d leitr. O resultad gerad é exibid nas Figura B8.4 e Figura B8.5 smente cm as partes nvas em destaque. Cm padrã para camps d tip Date é que sejam exibids cm frmat de entrada dd/mm/aaaa, inclusive cm máscara que restringe a entrada a estas 0 psições, tamanh 0 seria suficiente. Mas a experiência cnta que psições pssibilitam uma melhr estética.

8 Capítul B8 Figura B8.4. Classe Funcinári mapeada. #. O tamanh é gerad para mapeament de datanasciment, para herança ds cmpnentes visuais smente, já que para JPA/Hibernate nã será utilizad. #2. A precisã d tip tempral pde ser definida n padrã JPA. A precisã assumida é TIMESTAMP, que inclui a parte temp n item de data. Irems ajustar este padrã a seguir. #3. As Enumerações sã mapeadas cm cláusula necessária para que sejam persistidas cm alfanumérics (STRING), que significa que s valres C, V, D e S, para Estad Civil, representarã s valres da Enumeraçã n SGBD. Figura B8.5. Classe Funcinári mapeada segunda parte. #4. A assciaçã manytone cm UnidadeOrganizacinal é gerada aprpriadamente, explicitand padrã JPA de FetchType.LAZY e cm nme de Freign Key significativa. #5. Para a assciaçã cm Enderec, que é um Cmpnente, mapeament é específic, send irá reusar as validações que já fizems para CEP e utras deste cmpnente, em nss nv Cas de Us! #6. O mapeament manytone cm arquiv de ft também é gerad e, neste cas (cm ainda nã mapeams arquiv), targetentity fi gerad cm Ft. Mas cm dissems, s arquivs anexads sã um cas especial que será discutid ainda neste capítul. 3. Vams prsseguir agra para nssa primeira classe de Detalhe, Dependente. Edite esta classe e pressine Cntrl+N para iniciar seu mapeament, selecinand Assistente de Criaçã númer 0. Preencha a primeira página d Assistente de Criaçã para mapeaments Objet-Relacinal, cm na Figura B8.6. Repare que jcmpany mantém as assciações na camada d prjetista cm abstrações, utilizand UnidadeOrganizacinal (que é abstract) cm prpriedade e UnidadeOrganizacinalEntity (que é cncreta), n targetentity. Esta prática é mais rica em pssibilidades de flexibilizaçã e refatraçã futuras (verems um bm us de nvs descendentes cncrets para Entidades quand fizerms a implementaçã de Auditria Rígida).

9 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.6. Mapeament Objet-Relacinal de Dependente, cm partes mdificadas em amarel. #. Perceba que, para mapeament de detalhe e cas nã haja uma cleçã para receber mapeament netmany, jcmpany trará a pçã de us de List (recmendad) u Set. O padrã de acess pde sempre ser Lazy, pis jcmpany irá frçar recuperações n graf que cntrla, quand necessári, especialmente neste cas. #2. A selecinar Detalhe n Estereótip um nv camp Classe Mestre irá requisitar que se selecine a classe FuncinariEntity, neste cas. Cuidad para nã selecinar a classe abstrata Funcinari errneamente. 4. Clique em Finish. O resultad btid dispensa maires explicações. Perceba s relacinaments cm tips abstrats (na camada abstrata, d Prjetista ) utilizand juntamente cm targetentity ns metadads (apntand para instância cncreta), em destaque na Figura B8.7. Figura B8.7. Classe Dependente mapeada, cm relacinaments abstrats. 5. Acine Cntrl+Clique sbre tip Funcinári para navegar diretamente para a classe Funcinari. Cnfira utr lad da assciaçã bidirecinal, gerada pel Assistente de Criaçã. Figura B8.8. Classe Funcinari alterada para cnter mapeament bidirecinal netmany para Dependente. #. Cláusula netmany padrã JPA. #2. Opçã de prpagaçã de atualizações e exclusã (CascadeType.ALL), que deve sempre estar desta frma para mapeaments netmany utilizads em assciações d tip Cmpsiçã Mestre-Detalhe. Imprtante: A cláusula mappedby, se mitida, nã causa prblemas funcinais, mas irá

10 Capítul B8 prduzir SQLs em excess, a mens quand se utiliza Hibernate cm implementaçã JPA, que é nss cas. Muitas vezes um pequen detalhe cm esse gera transtrns em prduçã, causand gargals de perfrmance desnecessáris. Esse tip de esqueciment é, aliás, um ds errs frequêntes n us d Hibernate que jcmpany evita. #3. A tal cm n cas d Cmpnente, pede para que validações invariáveis declaradas n escp d Detalhe (Dependente, n cas) sejam realizadas juntamente cm as validações invariáveis d Mestre. N cas de uma agregaçã, cm discutid em Dmain Driven Design [Evans, Erick 2004], as validações de tds s seus membrs devem ser realizadas em cnjunt. Prtant, esta cláusula deve ser utilizada. #4. A declaraçã é necessária para a indicaçã da(s) cluna(s) que cmpõe a Freign Key utilizada na assciaçã. #5. Perceba que fi utilizad List, a interface de Cleções que esclhems e que estams utilizand explicitand cnteúd da cleçã, cm tip abstrat Dependente, mantend a nssa ba prática de mapear smente abstrações na camada de Entidades d Prjetista. Em targetentity JPA sabe a instância cncreta padrã que deverá ser utilizada, mas iss nã ns tira flexibilidade para adaptações futuras, pis as antações nã geram acplament indesejável. 6. O mapeament Objet-Relacinal para HistricPrfissinal agra traz pucas nvidades, cm pdems ver na. Figura B8.9. Mapeament Objet-Relacinal para HistricPrfissinal, cm partes mdificadas em amarel. #. O Assistente de Criaçã prcura sempre assumir a primeira prpriedade d tip String, cm implementaçã para tstring (Lkup). #2. O tamanh para tips cm decimais, cm s mnetáris, devem ser infrmads separads pr vírgula, cm frmat [tamanh ttal],[precisã da parte decimal]. O resultad smente apresenta mapeament para valr mnetári cm nvidade, cm relaçã a Dependente, expst na Figura B8.20. Um ds esqueciments muit cmuns n mment da mdelagem, especialmente quand cleções sã geradas pela ferramenta CASE, é a ausência da qualificaçã d cnteúd da cleçã, via Generics. Pr este mtiv, pde-se ptar pr realizar tais ajustes de mapeaments através d jcmpany, cm fizems, para em seguida sincrnizá-ls utilizand engenharia reversa d CASE.

11 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.20. Mapeament utilizand precisã e escala. #. O mapeament JPA padrã para salari" define precisã e escala. O length é imprtante para herança d tamanh pels cmpnentes de frmulári, cm n cas de Datas. Terminams mapeament de tda a Agregaçã, cm a exceçã da classe Ft, que verems em separad. Partirems agra para acrescentar as antações de validaçã invariável, cnfrme declaradas na especificaçã. - Implementand Validações Invariáveis de Dmíni Validaçã de Entrada III. Vams cmeçar pelas restrições definidas na classe Funcinári: datanasciment deve ser menr que atual e datanasciment nã deve incluir temp Pdems reslver estas restrições cm uma mdificaçã na d JPA e acrescentand uma validaçã padrã d Hibernate Validatr, Figura B8.2. Cmplementand validações para datanasciment Psicine em seguida após TempralType., e digite Cntrl+Space para ver pções. Selecine DATE para eliminar a pssibilidade da gravaçã da precisã de temp para esta data! cpf deve ser válid Este aparente detalhe é um utr cas de err recrrente de prgramaçã, nã smente em Java mas em qualquer linguagem que trabalhe cm SGBD-R relacinais. Sem recurs acima, crre-se risc de algum Desenvlvedr nã infrmad armazenar a parte tempral em determinadas situações casinand cm cnsequência váris errs na cmparaçã de datas. Pr exempl, datas cm dias iguais pdem ser cnsideradas diferentes prque pssuem a parte tempral diferente.

12 Capítul B8 Figura B8.22. Seleçã de validaçã invariável PlcValCpf d jcmpany. Cm já prpusems, e Cntrl+Space para ver pções de validaçã d jcmpany e selecine PlcValCpf. Nã deve existir cpf duplicad A validaçã de duplicaçã de cpf, tal cm n cas de nme na UnidadeOrganizacinal, é em nível de classe e pdems também reslver cm as Named Queries padrões nadeveexistir. Figura B8.23. Validaçã de duplicidade de CPF, cm Named Query padrã nadeveexistir. Vams definir um índice únic (unique index) em nível d mapeament Objet-Relacinal, de md que este ns sirva a um dupl prpósit: acelerar a cnsulta pr cpf, que utilizarems para verificar a duplicidade; e garantir duplamente, em nível de SGBD, a questã da unicidade. Para tant, declare a cláusula específica d na prpriedade cpf 2, cm na Figura B8.24. Figura B8.24. Definiçã de índice para prpriedade específica. Mas e se nssa implementaçã JPA nã fr Hibernate? E se frms prtar esta aplicaçã para várias implementações JPA distintas? Neste cas, a antaçã será simplesmente desprezada e terems de cuidar para que esquema de índices seja crretamente submetid pel DBA, cm é tradicinalmente feit nas empresas. deve ser válid O Hibernate Validatr traz a para esta finalidade. Figura B8.25. Definiçã de validaçã de frmat de (neste cas, smente se infrmad). 2. Cm iss, terminams as restrições definidas para Funcinari", que pdem ser reslvidas de frma declarativa, mas nã para tda a Agregaçã. Tems ainda três utras definidas em nível d HistricPrfissinal. salari nã deve ser negativ, datainici deve ser menr que atual e datainici nã deve incluir temp Smente a primeira é uma nvidade. As demais estã ilustradas na Figura B8.26 de frma similar a utras que fizems. A Pwerlgic nã julga aprpriad mdificar s padrões de nmenclatura de framewrks reutilizads. Pr iss, validações e utras d Hibernate Validatr sã dispnibilizadas cm estã, u seja, infelizmente sem nenhuma cnvençã específica. 2 Declarações de índices que envlvem múltiplas prpriedades pdem ser feitas em nível da classe.

13 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.26. Validações declarativas em HistricPrfissinal. #. A d Hibernate Validatr permite que se valide interval de valres numérics. - Prgramand Validações Invariáveis de Dmíni Prgramaçã de Dmíni I Neste tópic verems validações um puc mais interessantes d que as que vims até agra, pis exigirã que façams prgramaçã Java pela primeira vez nestes tutriais. Felizmente, a prgramaçã será simples, elegante e encapsulada nas classes de Dmíni! Funcináris devem ter idade mair u igual a MAIORIDADE Para implementar esta validaçã, crie um métd na classe Funcinari (na parte abstrata, pis afinal é uma regra de negóci), chamad validamairidade. Este tip de métd é chamad de assertiva pr devlver um blean e nã cnter arguments (trabalha smente cm valres interns à agregaçã). Nas versões 5.5.x u anterir d jcmpany, ele deverá ainda cnter a cnfrme a implementaçã exemplificada na primeira imagem da Figura B8.27. Já nas versões 6.0.x u superires, nã se deve utilizar esta antaçã. A partir desta versã, devid à adçã d padrã Bean Validatin, métds que devlvem blean, iniciam cm "valida" e nã recebem arguments sã disparads junts da validaçã invariável (desde que a classe pssua a Além diss, na versã 6.0.x s "singletns" tiveram seu sufix renmead de "Helper" para "Util". Figura B8.27. Métds de validaçã cm cdificaçã Java, versã 5.5.x e versã 6.0.x, respectivamente #. Cmentári Javadc! Essencial em métds de negóci. #2. Declaraçã para que este métd seja cnsiderad uma assertiva de validaçã, n jcmpany 5.5.x u anterires. Fará cm que seja executad juntamente cm as demais validações declarativas invariáveis. O padrã d Hibernate Validatr, a mensagem pde ser especificada entre chaves para que seja entendida cm I8n.

14 Capítul B8 Nas versões 6.0.x, perceba que esta antaçã nã é mais necessária, bastand a cnvençã de nmenclatura. A mensagem é cnvencinada cm "validatr.[nme d métd em minúsculas]. Ex.: para este cas, a mensagem de validaçã deve ter chave "validatr.validamairidade=". #3. A assinatura de um métd de assertiva deve retrnar blean, iniciar cm "valida" e nã pde receber arguments. #4. Algritm de implementaçã (prgramaçã prcedimental) da regra de negóci. Nas versões 5.5.x e anterires, usava-se utilitáris cm "DP Singletn", através de métd "getinstance". Obs.: Deve-se evitar, em prgramaçã de métds de Entidades, qualquer dependência que nã seja de utras Entidades u de utilitáris de us cmum, cm em nss cas. #5. A extraçã de valres cnstantes presentes nas regras de negóci para variáveis de classe nã smente é mais elegante pr trnar a regra mais legível cm permite reús destes valres pr diversas regras e ainda timiza a execuçã, evitand instanciar bjets cnstantes pr diversas execuções. Se temcurssuperir entã salari nã deve ser menr que SALARIO_MINIMO_SUPERIOR Esta é uma validaçã um puc mais interessante que a anterir prque também exige prgramaçã e ainda envlve a necessidade de uma primeira interaçã entre bjets, n cas, entre instâncias d Funcinari e de HistricPrfissinal. Para manter uma ba separaçã de respnsabilidades, interna à Agregaçã, vams criar métd recuperamairsalari em HistricPrfissinal cm estátic e prtegid para acess em nível de pacte. Figura B8.28. Métd de serviç em nível de classe e prtegid para acess smente pela Agregaçã. #. Métd em nível de classe, pis percrre cleçã de tds s bjets, e prtegid para acess smente intern à agregaçã. #2. Esta classe smente sabe lidar cm cleções de HistricPrfissinal, que já é amarrad n cntrat d métd. #3. É imprtante testar se a cleçã de histricprfisisnal nã está nula, antes de entrar n lp. Iss é necessári smente se frmulári trabalhar cm este detalhe "pr demanda", uma pçã inclusive "default", em que s histórics nã sã recuperads n mesm mment d funcinári. Neste cenári, a se gravar funcinári esta cleçã entraria cm nul e prvcaria excessã. #4. Este é utr teste imprtante: a prpriedade indexcplc (indicadr de exclusã d jcmpany) é transiente. Ela é herdada d ancestral PlcBaseVO nas versões 5.5.x e anterires d jcmpany (assim cm s métds equals e hashcde, e facilidades para us de chave natural) e gerada n HistricPrfisisnalEntity a partir da versã 6.0.x. Em quaisquer ds dis cass, ela cnterá S para tds s itens marcads para exclusã. Cm nã querems cnsiderar itens a serem excluíds, tems que realizar este teste!

15 Implementand Padrã Manter Agregaçã Mestre/Detalhe #5. A implementaçã deve também levar em cnta a pssibilidade de nuls, pis estarems realizand-a durante uma entrada de dads que pde cnter saláris nã preenchids. Lembre-se que jcmpany deixa linhas em branc e sabe desprezá-las também tems que ter este cuidad em nssas prgramações invariáveis. A classe Raiz da Agregaçã, Funcinári, pde entã implementar a validaçã final reutilizand este serviç em uma segunda assertiva muit semelhante à primeira. Figura B8.29. Segunda assertiva em Funcinari", interagind cm HistricPrfissinal, versões 5.5.x e 6.0.x #. A única peculiaridade desta assertiva é us de um serviç de HistricPrfissinal, smente visível para a agregaçã de Funcinari. A única diferença da segunda versã é a ausência da nã dispnível n padrã Bean Validatin.0, adtad na 6.0.x. Vams agra editar arquiv ApplicatinResurces.prperties (Cntrl+R!) e acrescentar as mensagens para as duas validações que fizems. Lembre-se que, da versã 6.0.x em diante, padrã pr cnvençã das mensagens é "validatr.[nme d métd em minúsculas]". Ou seja, em nss exempl segund métd é "validatr.valiadasalaricurssuperir=". Já n cas das versões 5.5.x e anterires, a mensagem é a indicada na

16 Capítul B8 Figura B8.30. Mensagens I8n para validações prgramadas. - Gerand Artefats Nã-Java Geraçã de Artefats III Finalizada a etapa de mapeament Objet-Relacinal, vams agra desenvlver nss Cas de Us em si.. Acine rteir Cheat-Sheet para padrã Manter Agregaçã Mestre/Detalhe, via menu Help -> Cheat-Sheets. 2. Prssiga n rteir para segund pass, Utilizand Assistente. Vems na Figura B8.3 a primeira janela d Assistente de Criaçã d jcmpany preenchida para nss Cas de Us. Figura B8.3. Tela inicial d Assistente de Criaçã para Padrã Manter Agregaçã Mestre/Detalhe. Tdas as mdificações que tivems de realizar manualmente estã grifadas e nesta altura já nã devem ser nvidade. Mas nte que, para este padrã, infrmams númer de classes de detalhe envlvidas na Agregaçã, em Númer de detalhes. N nss cas sã duas: Dependente e HistricPrfissinal. 3. Vams agra, pela primeira vez, entender em detalhes a segunda janela d Assistente de Criaçã.

17 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.32. Segunda tela d Assistente de Criaçã. #. Títul, cnfrme aparecerá n item de menu e títul da página. #2. Opçã para us de Ajax na Clabraçã de Manutençã. Smente deve ser desmarcada cas seja identificad algum impediment específic nesta Clabraçã que impeça a timizaçã via Ajax (renderizaçã parcial d frmulári durante a interaçã d usuári cm s btões de seleçã, cm F9-Pesquisar). #3. A pçã de Entrada em Lte influi n cmprtament generalizad ds frmuláris, reslvid na camada Cntrle. Marcar esta pçã prduzirá uma variaçã n cmprtament que frmulári seguirá após uma gravaçã cm sucess e esta variaçã dependerá d padrã utilizad: - Nas Clabrações que mantêm uma Agregaçã de Objets pr vez, cm plccrud, plcmestredetalhe etc., padrã após a gravaçã cm sucess é manter s dads recém gravads dispníveis para alterações, cnferências u clnagens. Cm Entrada em Lte marcad, a invés diss, um frmulári em branc será exibid para uma nva inclusã. - Na Clabraçã plctabular, padrã após a gravaçã cm sucess é fazer uma nva recuperaçã de tds s bjets da classe. Cm a variaçã da Entrada em Lte, a recuperaçã nã é realizada e sã adicinads nvs bjets em branc para nvas inclusões. - Já na Clabraçã plccrudtabular, padrã após a gravaçã cm sucess é manter tda a cleçã recém gravada. Cm a variaçã da Entrada em Lte, a cleçã recém gravada é substituída pr nvs bjets em branc enquant s itens de cabeçalh d frmulári sã mantids. Cm achams remta a pssibilidade de clnar dads de funcináris, vams marcar a pçã de Entrada em Lte, neste cas. #4. A pçã de Exclusã Lógica indica para jcmpany nã excluir fisicamente bjets da agregaçã (u seja, nã remver as Tuplas crrespndentes das Tabelas d SGBD-R). Cas seja marcada cm lógica, jcmpany irá utilizar transfrmar exclusões pr uma alteraçã padrã, de valr da prpriedade sithistricplc, de A (Ativ) para I (Inativ). Esta prpriedade é recnhecida pel framewrk, que entã passa a tratar bjets cm situaçã Inativ cm excluíds, d pnt de vista ds usuáris. Em nss Cas de Us, bservand a especificaçã, verems que fi mdelada a Inclusã Verems esta Clabraçã, n módul C (Cass de Us de Manutençã Secundáris).

18 Capítul B8 Padrã para Cas de Us, de Exclusã Lógica. Prtant, irems marcar a exclusã cm Lógica. #5. Neste camp pdems indicar para que frmulári de seleçã utilize paginaçã. Se infrmarms um númer mair que zer nesta pçã, váris cmprtaments genérics serã alterads para a seleçã, em tdas as camadas MVC: As classes genéricas de DAO smente recuperam d SGBD, n máxim, númer de bjets infrmads de cada vez; Barras de navegadres na camada Visã e cntrladres serã renderizads para permitir a usuári paginar uma cnsulta e também dar salts para páginas específicas, além da primeira e da última. Infrmarems númer 5 apenas para facilitar nsss testes. Númers mais aprpriads para situações de prduçã estariam entre 5 e 50, dependend de cada cas. #6. Opçã para geraçã u nã da Clabraçã de Seleçã. Pde-se gerar uma nva, reutilizar alguma existente (uma mesma Clabraçã de Seleçã pde servir a edições em mais de um Cas de Us) u nã gerar, situaçã em que se deve prver alguma frma de seleçã de bjets para ediçã, pr cnta própria, pdend muitas vezes ser através de hiperlinks de utras Clabrações u Explradr de Dads. #7. Idem a item 2 para cas da Clabraçã de Seleçã. #8. Essa pçã dispnibiliza diversas funcinalidades para grids, cm exempl: mstrar e escnder clunas; rdenaçã e redimensinament delas; grid cm sub-grid (mestredetalhe); e drag and drp de linhas. #9. Opçã para incluir a geraçã de metadads, (arquivs package-inf.java ). Cm Cas de Us nã funcinará sem esta parte declarativa, esta pçã smente deve ser utilizada quand fr desejad prduzir artefats islads, tais cm XHTML apenas. #0. Opçã para incluir a geraçã de chamadas de menu para Cas de Us. Registra a chamada, n arquiv geralmenu.xhtml, chamand a clabraçã de manutençã inicialmente. #. Opçã para incluir a geraçã de XHTMLs para Cas de Us. Em situações de desenvlviment para utras tecnlgias de Cliente que nã pretendam utilizar XHTMLs, esta pçã pde ser utilizada. #2. Opçã para geraçã da declaraçã d Frm-Bean n arquiv struts-cnfig.xml (smente para tecnlgia Struts). O jcmpany ppula frm-bean de frma genérica, mas uma declaraçã de frm-bean precisa existir, na mair parte ds cass. #3. Opçã para se utilizar u nã framewrk Apache Validatr. Este framewrk permite a declaraçã de validações variantes em XML, atuand na camada de Cntrle (e nã na de Dmíni, cm é cas d Hibernate Validatr). Usad apenas para Struts. #4. Opçã para incluir a geraçã de mensagens I8n. 4. O próxim diálg já ns fi apresentad, mas algumas pucas nvas pções serã utilizadas. A Figura B8.33 exibe em amarel as partes mdificadas cm relaçã a padrã assumid pel jcmpany para bterms resultad especificad e numeraçã nas nvidades. Cas se desabilite us de Ajax glbalmente, estas pções pdem ser desprezadas. É imprtante lembrar também que jcmpany traz pçã para que cada usuári pssa desabilitar para si esta timizaçã, que é útil na eventualidade de uma parcela mínima d univers de usuáris estar usand Navegadres antigs que prduzam prblemas cm Ajax.

19 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.33. Definind Clabraçã de Seleçã, cnfrme especificaçã. #. A especificaçã prevê a acmdaçã de dads em um leiaute de pastas, cnhecidas cm Tab-Flders, para evitar a rlagem de tela e melhrar a cmpreensã pr parte de usuáris. A marcarms esta pçã, Assistente de Criaçã já irá ns prver uma rganizaçã d frmulári cm base em Tab-Flder, em nível d leiaute, que segue a seguinte regra padrã: - As prpriedades da classe Raiz/Mestre e Cmpnentes sã distribuídas pr pastas em cnfrmidade cm a Separaçã de Cmpnentes definida. Cm padrã, as prpriedades de classes Cmpnentes ficam agrupadas também visualmente e, prtant, em uma aba distinta de Tab-Flder. Pde-se mudar iss desmarcand a caixa Separaçã de Cmpnentes u alterand-se a segmentaçã destes, que pde ser feit n últim diálg deste Assistente, que verems ainda neste capítul. - Já as prpriedades das classes de Detalhe, cm serã exibidas cm várias crrências, sã rganizadas cm padrã em uma aba de Tab-Flder pr Classe de Detalhe. O recmendad é que se assuma um padrã mais próxim pssível da especificaçã e depis se custmize leiaute cnfrme desejad, utilizand basicamente cnheciments de Facelets e lógicas de Cntrle genéricas d jcmpany. #2. As pções Assistente e Separaçã de Cmpnente irã permitir a Desenvlvedr fazer Crtes interessantes ns frmuláris. Estes crtes serã pssíveis através de uma última janela que smente será exibida na hipótese de alguma destas pções ser marcada: - Já vims cas da Separaçã de Cmpnente, que permite crte das partes de frmulári que serã exibidas em cada aba de Tab-Flder. - Já n cas da pçã Assistente, pder fazer crtes que ns pssibilitarã apresentar frmulári de frma fragmentada, linha a linha se precis, cm um Assistente de Entrada de Dads, é um recurs de usabilidade interessante que apiará s usuáris durante períds de treinament u us inicial. Vams marcar esta pçã em nss cas já que há uma especificaçã para us da Extensã Padrã de Assistente. #3. Se analisarms prjet de GUI para a parte de seleçã da Figura B8.4, verems que fi slicitad uma pesquisa pr interval de idade d Funcinári. Cm este dad nã existe prnt na Entidade, esta slicitaçã exigirá que realizems nã smente uma prgramaçã de cntrle cmplementar, mas também uma custmizaçã na parte visual, de arguments. Para atenderms a este cas, deixams uma lacuna (Cluna 2 da Linha 2) n frmulári dispnível para alteraçã e incluíms a data cm argument, prvisriamente. Os Assistentes de Criaçã, cm plugins de Prcess, fazem um esfrç para bter uma primeira versã de Interfaces cm Usuári cm qualidade de prduçã e que sigam melhres práticas de O&M, Usabilidade em Geral e Web-Design, tend cm base de referência s Padrões da Arquitetura. Eles nã pretendem ser editres artesanais genérics de Interfaces cm Usuári, que deve ser btid cm editres WTP/JBss Tl, Facelets, XHTMLs e JSF.

20 Capítul B8 #4. Algumas utras frmatações e ajustes ainda estã pendentes, tais cm frmat exat para exibir UnidadeOrganizacinal (assumida cm cmb, mas devems alterar para vinculad ) e de rótuls tais cm Cpf, que deve ser CPF. Irems ajustar estes itens durante a cnfecçã da parte de manutençã. 5. Para prduzir frmulári da Clabraçã de Manutençã, veja as mdificações em detalhe, na Figura B8.34. Figura B8.34. Definind Clabraçã de Manutençã, cnfrme especificaçã. A mair parte ds ajustes em crdenadas de camps é cnsequência de terms que remver Object-Id d frmulári para atender à especificaçã. O que tems de mais relevante, neste cas, sã prtunidades de us de frmatações mais interessantes para camps, relacinadas abaix: #. As prpriedades cuj tip seja Enumeraçã sã assumidas em frmuláris cm Cmb Estátic, u seja, listas de valres cujs dads nã pdem ser mdificads pels usuáris. Este padrã é aprpriad para a prpriedade estadcivil. #2. N cas da prpriedade sex, cm sã apenas dis valres, frmat Radi é mais interessante, pis nã cupa mais espaç que Cmb e já permite a visualizaçã das pções existentes. Nrmalmente, indicams Radi para Enumerações que cntenham dis u três valres, n máxim, dependend d tamanh da descriçã destes valres, e Cmb Estátic para três u mais. #3. O frmat Caixa Marcaçã (Checkbx) é assumid para prpriedades cm valr Blean, que sã persistidas cm S u N em SGBDs pel padrã autmatizad n framewrk. Ele é aprpriad para temcurssuperir. #4. O frmat Vinculad, que já vims antes para implementar a recursividade cm UnidadeOrganizacinal, será aqui mais uma vez utilizad, ferecend um diálg Ppup que permite seleções sfisticadas, paginadas cm diverss arguments, cm bjetiv de facilitar a usuári a análise e esclha d bjet que deseja vincular a frmulári principal. Perceba que s Vinculads reusam Clabrações de Seleçã pré-criadas! Um vinculad nã funcinará cas sua Entidade já nã tenha sid utilizada anterirmente cm raiz em uma Clabraçã de Seleçã.

21 Implementand Padrã Manter Agregaçã Mestre/Detalhe #5. O camp bservaca, pr ter um tamanh grande, pde ser mais bem apresentad através d frmat Área, que ferece várias linhas de entrada de text. Neste cas, altere tamanh para cnter númer de linhas e de caracteres pr linha desejads, n frmat: [Númer de Linhas],[Númer de Caracteres]. Utilizams três linhas e itenta caracteres para a prpriedade bservaca. #6. O camp uf fi crretamente assumid cm Cmb Dinâmic, já que seu tip é uma classe Raiz de agregaçã. Este é frmat aprpriad para classes mantidas em caching pel padrã Manter Classe. #7. Pr últim, vams remver a prpriedade ft d frmulári, já que exigirá um tratament especial n próxim capítul. 6. O Assistente prsseguirá agra apresentand um diálg para permitir a definiçã da primeira classe de detalhe, e assim pr diante, até atingir númer de detalhes infrmads n iníci (dis, em nss cas). A janela e instruções de preenchiment para detalhe Dependente sã exibidas na cm partes mdificadas em destaque. Figura B8.35. Tela para definiçã de frmulári e metadads para Detalhe Dependente. #. Classe de Detalhe. Deve-se selecinar a classe cncreta que represente primeir detalhe. #2. A visualizaçã d trech de frmulári (markup) que representa Detalhe será realizada apenas mstrand- abaix da parte principal, d mestre, já que esta é uma visualizaçã lcal e que nã pssui gestã de leiaute atuante. A visualizaçã d us de Tab-Flder, pr exempl, smente será pssível após a liberaçã para teste. #3. Em Títul, títul d Detalhe deve ser infrmad, cnfrme irá aparecer n tp de seu cmpnente (subseçã d frmulári) u na aba d Tab-Flder, cas a pçã de TabFlder tenha sid marcada. #4. Detalhe paginad permite que seja utilizad paginaçã em detalhe, nde cas seja selecinad essa pçã, um camp text é exibid para preencher númer de detalhes pr página. Para este cas de us essa pçã nã será utilizada. #5. Em Prp. Referência, devems selecinar uma das prpriedades da Classe que servirá de referência para que framewrk cnsidere a linha cm preenchida. Em utras palavras:

22 Capítul B8 cas usuári nã frneça um valr para a prpriedade aqui infrmada, tda a linha (bjet) será descnsiderada. Nrmalmente, esta prpriedade representa uma chave alternativa d negóci, u parte dela, e é a primeira prpriedade a aparecer em cada linha n frmulári. O Assistente habitualmente assume um bm padrã, mas este deve sempre ser cnferid. Para cas d Dependente, a prpriedade será nme. #6. Em Multiplicidade devem-se preencher s valres mínims e máxims de bjets deste Detalhe que pdem existir em relaçã a um bjet raiz d Mestre. Cnfrme a sintaxe UML, um valr * indica ilimitads, e um valr discret indica um limite. Devems sempre analisar, n mdel de Classes, a pnta da assciaçã que chega n Detalhe para preencher crretamente estes camps. Para cas d Dependente, s valres devem ser 0..2, pis fi especificad desta frma n Mdel de Classes, cnfrme pde ser cnferid na Figura B8.2. #7. Em Num. Nvs, pdem-se infrmar tamanh d blc de bjets em branc que será criad n frmulári para este detalhe, n mment da criaçã d frmulári; blcs de mesm tamanh também serã criads a cada clique n btã F7-Nv se este detalhe estiver cm fc. O padrã sã 4 (quatr) mas, em nss cas, pdems diminuir para dis. #8. Em Ps. Títul, é pssível ptar pr gerar s rótuls de títul de cada cluna n tp, u seja, uma única vez, acima de tdas as linhas de detalhe; u em linha, de maneira entremeada, acima ds camps de cada linha. Em geral, padrã tp é mais adequad, a nã ser que a quantidade de prpriedades exija mais d que uma linha pr registr. #9. Em Pr Demanda, é pssível se retardar a recuperaçã de bjets desta classe de Detalhe, que passam a nã ser mais recuperads juntamente cm a recuperaçã d bjet Mestre raiz da Agregaçã. Esta pçã deve ser utilizada cm cautela, smente em situações que exijam timizações decisivas de perfrmance, pis dificulta lógicas de prgramaçã que nã pdem cntar mais cm tds s dads da agregaçã representads em memória. Pr exempl, nssa validaçã de Salári Mínim para Curs Superir nã funcinaria se Detalhe Históric Prfissinal fsse declarad cm Pr Demanda e nem a validaçã de cardinalidade autmatizada d jcmpany, que se baseia em verificações em memória! O desenvlvedr deve estar cnsciente e ter cnheciments suficientes sbre cm fazer lógicas de prgramaçã cm estas neste cenári. Pr utr lad, quand númer de classes de detalhe fr muit grande e nã fr pssível se subdividir padrã em mais Clabrações, entã us d Pr Demanda pde ser um fatr de timizaçã imprtante. Nã irems usar neste Cas de Us. #0. A visualizaçã de Detalhes é exibida abaix d frmulári Mestre. As demais infrmações desta Tela sã similares às que cnhecems para ajuste de crdenadas e frmat para prpriedades d Detalhe. 7. O próxim pass d Assistente de Criaçã exibe a mesma tela para definiçã de frmulári e pções para próxim detalhe e também dispensa mais explicações. Perceba ajuste da multiplicidade mínima e alinhament de tdas as prpriedades na mesma linha. Obviamente, uma restriçã de um máxim de dis dependentes é bem hiptética e puc prvável n mund real, apenas usada para frçar a demnstraçã tecnlógica que precisams.

23 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.36. Tela para definiçã de frmulári e metadads para Detalhe HistricPrfissinal. 8. Seguind para últim pass, irems definir pções de geraçã que ns pssibilitará atender a Extensã Padrã UC002. Assistente de nssa especificaçã. Imprtante: Esta pçã ainda nã está funcinal para a tecnlgia Facelets! Prtant, esta seçã smente é relevante para quem está utilizand tecnlgia JSF cm JSP/Tiles u Struts. A definiçã ds passs é realizada através de recrtes d nss frmulári, send cada recrte equivalente a um pass d Assistente. Assistentes pass a pass sã uma excelente pçã para prmver us da aplicaçã. Quand bem utilizads, mstram-se mei mais eficaz de se capacitar usuáris n sistema, ecnmizand em treinament e trnand- bastante eficaz d pnt de vista de usabilidade. Figura B8.37. Tela final para definiçã d crte que será exibid para usuári em cada pass d Assistente. #. A granularidade mínima de apresentaçã em cada pass é uma linha d frmulári. Veja que a primeira cluna já apresenta quais prpriedades estã send exibidas, em cada linha, cm a exceçã ds cmpnentes de Detalhe, que nã pdem ser dividids - cada Detalhe deverá ser apresentand, integralmente, em um únic pass d Assistente. #2. Em Objet, vems a descriçã d estereótip Mestre u nme ds detalhes presentes na Agregaçã send mantida. #3. O Crte Cmpnente pde-se alterar a distribuiçã das linhas pelas Abas de Tab-Flder, se esta pçã fi marcada, u pr seções de frmulári, cas nã tenha sid marcada. Cada grup de linhas cm mesm númer de crte é gerad em uma mesma aba u seçã de frmulári, distintas das demais. Nã irems alterar estes valres. #4. O geradr assume cm padrã clcar tdas as linhas da classe Mestre em um únic pass, mas em nss cas desejams ferecer explicaçã minucisa, linha a linha. Prtant,

24 Capítul B8 alterarems Crte Assistente da frma exemplificada. Cada númer de crte distint será um pass d Assistente. #5. Em Descriçã Assistente, pde-se definir a intrduçã d text que será exibid em cada pass d assistente (a primeira de cada númer de crte é utilizada). Dica: Nã é necessári se infrmar td text neste mment. Infrme apenas suficiente para ter uma referência e cmpletar psterirmente text editand arquiv ApplicatinResurces.prperties. 9. Vams entã finalizar Assistente de Criaçã, clicand em Finish. - Entendend artefats gerads Ediçã de Camada Visã III Na camada Visã deste Cas de Us Padrã fram gerads 6 (seis) arquivs XHTML, alterads 2 (dis) arquivs de XHTML e (um) arquiv de Prperties, para mensagens. Página funcinariarg.xhtml : Parte (markup) de arguments, que cmprá a página de argument e seleçã. Página funcinarisel.xhtml : Parte (markup) de seleçã, que cmprá a página de argument e seleçã. Página funcinarimdt.xhtml : Parte (markup) de manutençã, relativ à Entidade Raiz da agregaçã, que cmprá frmulári de manutençã. Página funcinarimdt2.xhtml : Parte (markup) de manutençã cmplementar, relativ a cmpnente Enderec, que cmprá frmulári de manutençã. Página funcinaridet.xhtml : Parte (markup) de manutençã, relativ a Entidade detalhe Dependente, que cmprá frmulári de manutençã. Página funcinaridet2.xhtml : Parte (markup) de manutençã, relativ a Entidade detalhe HistricPrfissinal, que cmprá frmulári de manutençã. Arquiv geralmenu.xhtml : Alterad para cnter uma nva entrada de menu, incluída n últim blc encntrad e cm chamada para a URL de manutençã. Arquiv ApplicatinResurces.prperties : Alterad para incluir as mensagens (rótuls e títuls) envlvidas n Cas de Us2. Obs.: Perceba que a separaçã ds arquivs XHTMLs em quatr partes especializadas mantém cada página individualmente simples de se entender, emuland as bas práticas de cesã. Além diss, reús fica facilitad. Obs.2: Nvamente, us de nmenclatura padrã em tdas s XHTMLs é suficiente para que leiaute Universal saiba mntá-las da frma aprpriada. Deste md, ganhams duas vezes: evitand a criaçã de leiautes e refrçand a padrnizaçã. Neste tópic, vams editar XHTML de argument funcinariarg.xhtml em mair prfundidade d que fizems até aqui, pis precisarems: Trcar us de datanasciment pr interval de idade, cnfrme a especificaçã; Retirar Object-Id d vinculad; Melhrar leiaute, diminuind tamanh de camps textuais usads para busca pr iniciais. Mas antes de efetuar essas mdificações, vams entender um puc mais a fund a anatmia básica de um XHTML de argument gerada: Perceba a mdificaçã d padrã de sufix, de Man para Mdt, para este padrã, cm relaçã a Manter Agregaçã Simples. 2 N cas de rótuls, smente se fi utilizada a pçã I8n, cas cntrári s rótuls sã gerads n XHTML diretamente.

25 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.38. Anatmia de um arquiv XHTML de argument típica. #. O nme padrã d XHTML é [Identificadr d Cas de Us (alias)]arg.xhtml. Os leiautes universais para frmuláris de seleçã esperam este padrã para cnseguirem mntar a página de argument crretamente n crp d leiaute principal. #2. Blc cm imprtações ds elements que sã utilizads na página. Exempl: plcf d jcmpany, que pr sua vez especializa s cmpnentes JSF d Apache Trinidad. Este desacplament ds XHTMLs de tecnlgias específicas de cliente (Apache Trinidad, Struts etc.) é um benefíci muit imprtante da arquitetura, pis pssibilita a jcmpany evluir, readaptar e substituir implementações atuais pr utras que pssam surgir n futur, preservand grande parte d códig ds XHTMLs prduzid pels clientes2. Além diss, esta simplicidade advinda d baix acplament ainda aumenta a estabilidade e facilita a manutençã, cm vims n capítul 4, sbre arquitetura. #3. Um cmpnente tabela prvê a estrutura mair, que delineia trech d frmulári, renderizand um element HTML table 3. #4. Cmpnentes linha renderizam element HTML tr. #5. Cmpnentes celula envlvem s rótuls e s camps. Este agrupament facilita variações em leiautes d frmulári, cm alinhaments verticais (rótuls à esquerda de camps). Este cmpnente irá renderizar uma trama cm elements HTML span e td 4. #6. O cmpnente titul renderiza rótuls, traduzind-s para idima crrentemente cnfigurad se fr utilizand a prpriedade titulchave. Se fr infrmada a prpriedade titul, a renderizaçã será direta, sem I8n. N cas da tecnlgia Struts, sã Tag-Files que especializam Tag-Libs Struts, bastante similares. 2 Vale aqui uma bservaçã: Smente a bibliteca de cmpnentes Apache Trinidad que vem cm jcmpany traz mais de uma centena de cmpnentes JSF, fra utras biblitecas JSF que se pssa utilizar cncmitantemente! Prtant, desacplament d jcmpany é restrit a algumas dezenas de cmpnentes mais cmuns, tais cm inputtext, Radi, Cmb etc.. Nã é desencrajad a desenvlvedr utilizar utrs cmpnentes JSF quaisquer, quand se faça necessári, e iss nã invalida benefíci de desacplament em 99% ds cass. 3 Muit embra s leiautes privilegiem us de CSS e tags HTML div sempre que pssível, tags HTML table sã mais aprpriadas para us em frmuláris, se cmprtand melhr em redimensinament de janelas ds Navegadres e em variações de resluçã de víde. 4 Nte que jcmpany nã mdifica padrã básic de renderizaçã ds cmpnentes reutilizads d Apache Trinidad.

26 Capítul B8 #7. O cmpnente text renderiza camps de entrada de dads em frma textual. #8. Tds s cmpnentes sã gerads cm a prpriedade id, deste md facilitand sua identificaçã em prgramações Javascript. #9. A expressã para valr de camps de argument deve ser infrmada cm #{plclgicaitens.arguments.[prpriedade de argument].valr}. A sequência de cmunicaçã ds cmpnentes JSF cm Backing Bean (Actin), envlvend lógica de Cntrle genérica e JBss Seam, será explicada mais a fund n módul E. #0. Tds s cmpnentes de entrada de dads sã gerads cm a prpriedade ajudachave 2, que pr sua vez renderiza um element HTML title. Este é um element brigatóri, que além de prver ajuda sensitiva em nível de camp (balões amarels na sbrepsiçã d muse), também é chave para prver acessibilidade, pis cntém text lid pr dispsitivs de api à peraçã pr deficientes visuais quand camp entra em fc. #. O cmpnente cmbestatic renderiza um element HTML select, cntend uma lista de pções exibida de frma Pull-Dwn. É um cmpnente muit interessante pr nã cupar espaç em demasiad n frmulári, prém nã aplicável quand númer de itens a ser exibid fr crescente u muit grande (pr exempl, acima de 00 bjets). #2. O atribut dmíni permite que se infrme uma classe de Enumeraçã, cujs valres serã utilizads pel cmpnente JSF para renderizar as pções d cmbestatic (funcina também de frma similar para cmpnentes radi )3. Imprtante: Para funcinar, a classe de dmíni utilizada deve estar declarada n arquiv de metadads em nível da aplicaçã, na relaçã de classes de dmíni discret (s geradres já fazem esta declaraçã na mair parte ds cass). Exempl, em cm.pwerlgic.jcmpany.cnfig.app/package.inf.java : Figura B8.39. Classes de dmíni discret (Enumerações) e de lkup (Estereótip plctabular ) declaradas em metadads da aplicaçã. #. O atribut exibebranc exibe uma linha adicinal na lista de pções d cmbestatic que, quand esclhida, selecina valr null. Deve ser utilizada sempre que a prpriedade aceitar nuls4. #2. A cntrári ds demais cmpnentes até aqui, vinculad nã pssui um crrespndente muit próxim n Apache Trinidad. Ele renderiza dis camps em HTML: um de códig (pcinal) e utr de descriçã, além de um btã que acina (via Javascript) um diálg Ppup. Este diálg reutiliza uma página de seleçã permitind a usuári selecinar valres de utrs bjets e vinculá-ls a frmulári principal. Para se pegar valr de um camp de qualquer frmulári d jcmpany via Javascript, em JSF, deve-se utilizar prefix crp:, antes d identificadr definid em id. Pr exempl, para pegar valr infrmad n camp , em uma seçã Javascript, pdese cdificar: var = get('crp: '); Este prefix é assumid pel Apache Trinidad, uma vez que td frmulári é gerad dentr de um div HTML cm identificaçã id= crp, que pr sua vez está definid abaix de um element f:view. 2 Se a geraçã crresse sem a pçã I8n ligada, valr seria gerad utilizand a prpriedade ajuda, cm text diret em prtuguês. 3 Cm já vims, as descrições em I8n serã utilizadas para exibiçã a usuári de acrd cm a cnvençã (Ex.: sex.m=masculin) e s valres da Enumeraçã gravads cm códig alfanumérics (ex: M ) n SGBD-R. Em Struts, funcinament é similar. 4 Se esta pçã nã fr usada, a lista d cmbestatic irá aparecer cm primeir valr selecinad. Nestes cass, recmendável é incluir na Entidade um valr inicial para a prpriedade explicitamente.

27 Implementand Padrã Manter Agregaçã Mestre/Detalhe #3. Para que a devluçã d valr selecinad n diálg Ppup retrne crretamente, atribut prpselpp deve cincidir cm atribut prpagregada da Tag linhaseleca, presente na página de seleçã reutilizada. Ist é necessári para que as funções Javascript genéricas d jcmpany cnsigam cpiar s valres selecinads, d diálg Ppup para frmulári, sem necessidade de cdificaçã pel Desenvlvedr. Cnfira valr d atribut prpagregada na página unidaderganizacinalsel.xhtml : Figura B8.40. Valr para retrn de valres selecinads n diálg de seleçã para frmulári. Obs.: Repare também que já utilizams idexibe= N para que camp de id nã seja exibid pel cmpnente vinculad, cm já fizems n Cas de Us anterir. Após as mdificações, este trech da Figura B8.38. Anatmia de um arquiv XHTML de argument típica. deve ficar alterad cnfrme a figura abaix. Figura B8.4. Vinculad ajustad para atender à especificaçã. #4. O atribut autrecuperacaclasse indica a classe que será utilizada para a busca pel camp de códig ( id ), se ele estiver exibid e nã prtegid. Pde-se acrescentar a prpriedade autrecuperacaprpriedade para utilizar utra prpriedade diferente de id (Ex.: uma chave de negóci) para a recuperaçã de bjets vinculads. Irems utilizar este recurs em tutriais d módul C. #5. O atribut actinsel indica nme da Clabraçã de Seleçã a ser reutilizada pel diálg Ppup. Esta Clabraçã deve ter sid previamente desenvlvida. Em nss cas, a desenvlvems para permitir a seleçã para ediçã, de bjets de UnidadeOrganizacinal, bem cm vínculs recursivs. Da frma em que sã cncebidas na arquitetura, ideal é que Clabrações de Seleçã se trnem padrões para busca de determinadas Entidades, reutilizadas pr tda a rganizaçã. É pssível, inclusive, reutilizar esta Clabraçã, mesm que esteja embalada em utra aplicaçã - preferencialmente cnfigurada cm alguma estratégia de unificaçã de lgins (single-signn) para evitar uma nva janela de lgin a chamar diálg! Para este cas, bastaria definir cntext de base para frmaçã d hiperlink para utras aplicações, cm n exempl da Figura B8.42, reutilizand a seleçã de utra aplicaçã cm nme de cntext utraapl : Figura B8.42. Exempl de reús inter-aplicações, em temp de execuçã. Evita a reembalagem. #6. O atribut nkeydwn é utilizad em váris cmpnentes, permitind a cdificaçã de um códig Javascript tda vez que usuári pressina uma tecla sbre cmpnente. N cas d vinculad, chamams a funçã Javascript d jcmpany selecinaprtecla tda vez que usuári aperta seta para baix cm fc n cmpnente Vinculad. Neste cas, esta funçã ativa diálg Ppup via teclad. Esta é uma pçã fundamental para us em aplicações cm entradas de dads massivas. A analisarms a página de um md geral, pdems bservar que está em um estági minimalista, cntend mínim necessári de infrmações: Nã cntém nenhum atribut decrativ (cr, fnte) e nem referências a estils; nenhum códig HTML; nada a respeit de leiaute extern (nem includes); nada sbre tamanh e brigatriedade ds camps; nada sbre valres de Enumerações; nada de um idima específic e ainda cm mínim de dependências e nme padrnizad, pr exigência ds leiautes universais. Tud iss gera inúmeras vantagens, tais cm: Internacinalizaçã (I8n)

28 Capítul B8 Us pssível de utras tecnlgias de cliente (WML, XML etc.), bastand que se crie Renders JSF diferentes (em Struts, especializar Tag-Files). Pssível readaptaçã de tecnlgia n nível d jcmpany, a lng d temp. Baixa curva de aprendizad (um usuári Struts d jcmpany irá facilmente entender as páginas XHTML para JSF!) Reús de cmpnentes visuais, a partir d cnceit de pele e ajustes dinâmics de leiaute (cm entre a página de seleçã e diálg ppup). Eliminaçã de redundância, a partir da herança de tamanh e nulidade d mdel de Dmíni. Ex.: Se tamanh de nme é alterad, nã é precis alterar nenhuma página. Facilidade de lcalizaçã de XHTMLs, devid à frte cnvençã de nmenclaturas. Facilidade de manutençã para alterações de valres de listas e btões de rádi. Valres adicinads u remvids de Enumerações também refletem autmaticamente, dispensand revisões em páginas. Ex.: Para acrescentar um nv tip de Estad Civil, pr exempl, bastaria apenas criar a nva pçã, na Enumeraçã EstadCivil. Estils CSS assumids cm padrã internamente a cmpnente, deste md evitand errs e precupaçã d desenvlvedr cm a cnfiguraçã de peles (pdem, ainda assim, ser alterads, especializand-se a prpriedade classecss, para exceções) Arquitetura OO. A divisã de páginas em cmpnentes menres é útil para se preservar cntrle da cmplexidade, mesm quand tamanh e quantidade de páginas aumentam ( Dividir para Cnquistar, um ds princípis OO mais imprtantes) Pr fim, que é muit imprtante, a página cntinua ttalmente custmizável. Arraste um cmpnente JSF da palheta d Apache Trinidad e ele será renderizad em cnjunt cm a página. - Editand XHTMLs de Argument. Vams agra ajustar, para este cas específic, tamanh de alguns camps, já que para cas de arguments nã precisams d tamanh ttal.. Altere tamanh padrã de nme e lgradur para 20, cnfrme a Figura B8.43 (Lembre-se: psicine a final d element e utilize Cntrl+Space para ativar aut-cmplete d Eclipse). Figura B8.43. Tamanhs especializads. Os demais cntinuam assumind tamanh definid na Entidade. 2. Veja na pçã Visual u Visual/Surce d editr que a visualizaçã destes camps reage a nv tamanh. Já s demais sã exibids em tamanh 5 (cinc), sempre, pis em temp de desenvlviment plugin d Jbss Tls nã recnhece s valres d dmíni, cm jcmpany. 3. Outra mdificaçã bem mais imprtante diz respeit à recuperaçã pr arguments, de interval de idade. Lembre-se que gerams um argument pr datanasciment smente para ns prver espaç na página para fazerms a adaptaçã. Uma primeira cisa a ntar n XHTML gerad é valr 2 (dis) n atribut clumnspan para s cmpnentes celula de datanasciment e unidadeorganizacinal. Este atribut renderiza uma Tag HTML td cm atribut clspan. Este atribut tem efeit de mesclar clunas, exatamente que desejávams, durante Assistente de Criaçã. Uma segunda é a cnvençã de sufix _ArgINI, utilizada smente em camps transientes de argument, utilizads em intervals. Os dis valres pssíveis sã _ArgINI e _ArgFIM. N cas d interval de idade, divida cnteúd da célula pr duas, retirand clumnspan= 2 e alterand seu cnteúd, cnfrme exempl da Figura B8.44.

29 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.44. Trech de XHTML de argument alterad para interval de idade. Perceba que alterams rótuls e text de ajuda, mantend a cnvençã em I8n. Neste cas, explicitams ainda tamanh, pis nã há uma prpriedade crrespndente na Entidade de Dmíni para que tamanh seja herdad. Pr fim, acrescentams uma restriçã de frmat ns cmpnentes para aceitarem smente númers. Os texts crrespndentes estã na Figura B8.45. Dica : Esteja cert de tabular após realizar a digitaçã d últim camp n editr de mensagens. Um err cmum é salvar sem a tabulaçã, situaçã em que valr nã será inserid pr este editr, ficand nul. Dica 2: Os alertas em amarel na cluna esquerda d editr sã prque nã cadastrams valres para s rótuls em utrs idimas. Infrme-s, para testar, u exclua s arquivs de utrs idimas se quiser se livrar destas advertências.

30 Capítul B8 Figura B8.45. Mensagens criadas para interval de idade, seguind a cnvençã de nmenclatura. Cm iss, terminams nssa cnfiguraçã de arguments. - Editand XHTMLs de Manutençã. Vams agra aprender sbre nvs elements visuais e editar nssa página de manutençã funcinarimdt.xhtml. Figura B8.46. Anatmia de um XHTML de Mestre utilizand Tab-Flder. #. O atribut asair é uma especializaçã d jcmpany FS Framewrk a cmpnente HTMLTableLayut d Trinidad, que permite a execuçã de um Javascript, n mment em que usuári tabula para fra da frnteiras da tabela. Neste cas, jcmpany IDE gera uma chamada à funçã cmutaaba, que irá autmaticamente acinar a próxima aba d leiaute na medida em que usuári encerre preenchiment de uma anterir. Este recurs cntribui para uma peraçã de entrada de dads massiva - que nã deve frçar usuári a recrrer a muse para cmutar de abas. #2. Em frmuláris de manutençã, a declaraçã d valr para prpriedades de classes parte da raiz da Agregaçã, representada pel apelid plcentidade - e a partir daí segue a ntaçã de pnts. Sintaxe: #{plcentidade.[cmpnente, se existir].[prpriedade]}. #3. Datas pssuem um cmpnente específic chamad data, similar a cmpnente text (também renderiza uma Tag HTML input type= text ), mas que intrduz máscaras Javascript de entrada de dads, pçã de calendári Ppup, dentre utras pequenas especializações para este tip específic. #4. O cmpnente radi renderiza um element HTML input type= radi, utilizand s valres da Enumeraçã infrmada em dmíni para renderizar s valres pssíveis ds btões de rádi (tal cm n cas d cmbestatic ). dd/mm/yyyy é default. Opções sã dd/mm/yy, MM/yy u MM/yyyy, definidas n atribut mascara.

31 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.47. Cntinuaçã da anatmia de um XHTML de Mestre. #. O cmpnente caixamarcaca renderiza a Tag HTML input text= checkbx. #2. Já mdificams cmpnente vinculad para nss cas, que nã querems ObjectId exibid. Nã se esqueça de aplicar esta mdificaçã. #3. O cmpnente área renderiza a Tag HTML input text= area, que permite múltiplas linhas de entrada de dad. Ele exige a declaraçã d tamanh e númer de linhas (cnfrme já fi gerad). - Custmizand a geraçã de artefats Pdems ns perguntar, neste pnt, se terems que sempre prceder estas mdificações ns XHTMLs (cm idexibe= N ), se há um padrã rganizacinal que define estas pequenas diferenças. Felizmente, iss nã é necessári. A arquitetura de geraçã de artefats d Pwerlgic jcmpany Artifact Generatr fi cncebida cm base em mdels de arquivs (templates), exatamente para permitir a custmizaçã d padrã cm que s artefats sã gerads. Estes templates sã, inclusive, rganizads de frma bastante granular. Pr exempl, template utilizad para geraçã de elements d tip vinculad fica dentr d diretóri [jcmpany]/eclipse/plugins/cm.pwerlgic.plugins_5.5./templates/jsp/jsf/cmpnentes /jsp_plc_agregad.plc. Veja cnteúd deste arquiv na Figura B8.48 cm as partes que tems editad em destaque. Figura B8.48. Template para geraçã de element vinculad em JSF. Pde-se acrescentar u remver prpriedades e alterar valres, tend apenas cuidad de nã mdificar inadvertidamente as partes envltas cm tken ###. Estas sã as partes variáveis em funçã d Cas de Us, substituídas pel Pwerlgic jcmpany Artifact Generatr (em situações especiais é pssível, inclusive, fazer geradres sb medida utilizand-se estes mesms templates). Imprtante : Salve uma cópia ds templates mdificads, prque uma atualizaçã de versã d jcmpany pderá sbrepô-ls. Após cada atualizaçã retrne cm as mdificações u as reaplique, cas template tenha sid alterad. Imprtante 2: Os templates para geraçã de artefats sã uma parte nã dcumentada, pr ser puc usada, mas seu entendiment é, na mair parte d temp, intuitiv. Entre em cntat cm a Pwerlgic se precisar de mais infrmações para persnalizações nesta área. - Editand chamadas de menus Existe ainda uma pequena mdificaçã que tems que realizar na camada Visã n que diz respeit à chamada de menu. Perceba que, na especificaçã das Clabrações (Prjet Físic), Atr interage primariamente cm a Clabraçã de Seleçã. Ou seja, prjetista deseja que, a clicarms n item de menu Funcinári, a URL de seleçã seja acinada e nã a de manutençã, que é padrã gerad. Vams mdificar esta chamada. O nme agregad era anterirmente utilizad em lugar d atual vinculad. Alguns arquivs ainda guardam esta nmenclatura.

32 Capítul B8 4. Edite arquiv geralmenu.xhtml (lembre-se: Cntrl+R) e faça uma alteraçã na URL para disparar a seleçã, /f/n/funcinarisel. 5. Em seguida, passe a URL de manutençã cm parâmetr utilizand padrã?fwplc=[url de manutençã], cnfrme exibid na Figura B8.49. Esta pequena técnica ns permitirá indicar para a seleçã, dinamicamente, para qual URL de manutençã desviar, trnand-a mais reutilizável cm temp. Verems a utilidade desta técnica em próxims tutriais. Figura B8.49. Mdificaçã da chamada para /f/n/funcinarisel, cm a URL de manutençã cm parâmetr. Neste pnt encerrams tdas as mdificações necessárias ns artefats da camada Visã e pdems passar para a camada Cntrle. - Editand metadads de Cntrle Ediçã de Camada Cntrle II Na camada Cntrle, nã irems explicar mdificações n arquiv faces-cnfig.xml e nem a anatmia básica ds dis arquivs de metadads gerads, similar à que já vims para Manter Agregaçã Simples. Existem algumas diferenças relevantes, n entant, e precisarems fazer mdificações ns metadads da seleçã ( package-inf.java para funcinarisel ), de md a alterarms nss argument de busca, de datanasciment para idade. Vejams s pnts chave ds metadads da seleçã. Figura B8.50. Mdificações em metadads de cntrle para alterar arguments na Clabraçã funcinarisel. #. A classe de cntrle que estará atuand, em nss cas, será FuncinariActin, criada (vazia) pel Assistente de Criaçã d Pwerlgic jcmpany Artifact Generatr, cnfrme requisitams.

33 Implementand Padrã Manter Agregaçã Mestre/Detalhe #2. As pções de navegaçã paginada em dads de seleçã também sã geradas aqui. Após nsss testes, tems que ns lembrar de alterar númer de bjets pr página, de 5 para um númer aprpriad para us em prduçã, cm 25 u 50. #3. Um atribut dinamictip também ns permite variar cmprtament d cmpnente de leiaute utilizad para navegaçã paginada. Pdems, pr exempl, definir se usuári pderá mdificar númer de registrs pr página dinamicamente, dar salts de página u utras pções. #4. Os arguments sã definids cm nme da prpriedade, peradr e frmat, em prpriedades cm nmes crrespndentes. Clique após as Enumerações Operadr. u Frmat. e digite Cntrl+Space para bter ajuda cm as pções dispníveis.. Aplique as mdificações em destaque na Figura B8.50 para indicar us d nv argument basead em idade. Vams agra entender as diferenças geradas ns metadads para funcinarimdt, em adiçã a que já vims na manutençã unidaderganizacinalman. Figura B8.5. Variações relevantes ns metadads de cntrle para funcinariman. #. A classe de cntrle (Backing Bean) que atuará também fi assumida cm a nva que indicams, FuncinariActin. Nã precisaríams dela prque nã tems necessidade de nenhuma prgramaçã de Cntrle para a Clabraçã de Manutençã neste Cas de Us. Prém, vams deixá-la atuand para implementações futuras. #2. Um grup de ns permite definir para Leiaute Universal para utilizar subleiaute genéric de Tab-Flder. Em tabflderusa deve-se definir true. #3. Em tabflderlayut, na frma autmatic (default), Leiaute Universal irá reutilizar um leiaute de Tab-Flder que dispensa cdificaçã de XHTMLs. #4. Em tabfldercampfc, s primeirs camps de cada aba de Tab-Flder sã definids de md a rientar cmprtament genéric d leiaute Universal de Tab-Flder, pr exempl, indicand em que camp clcará fc após a cmutaçã de cada Aba. Sem esta pçã, usuári teria que ir a muse para cmutar a aba. #5. atribut entradaemlte=true, ativams cmprtament já explicad. Pequen históric ds metadads d jcmpany FS Framewrk: Nã pderíams usar cmpnentes JSF para Tab-Flder u para fazer Assistente, pr exempl? É sempre pssível, a desenvlvedr, utilizar quaisquer cmpnentes JSF que deseje, até prque jcmpany dispnibiliza mais de uma centena deles através d Apache Trinidad. Mas verems que s cmpnentes de leiaute Facelets sã assim cncebids para serem mais invisíveis a desenvlvedr, externs as frmuláris de negóci. Deste md, eles atendem a um grande númer de interações cm s leiautes gerenciads pel jcmpany, que nã seriam triviais para cmpnentes mais refinads, que deixams para us intern as frmuláris.

34 Capítul B8 Os metadads que definims em antações para Assistente e Tab-Flder (também para cas Explradr de Dads (TreeView) que fizems anterirmente) eram riginalmente declarads em definições específicas de cmpnentes de leiaute Facelets. Estas definições, feitas em XHTML para cada frmulári, terminavam pr ser extensas e cm muita similaridade. Após fases sucessivas de refatraçã, as partes cmuns destas definições de leiautes fram generalizadas para framewrk intrduzind s leiautes Universais. Após algum temp, estes leiautes passaram a dispensar ttalmente as declarações similares de leiaute cm Facelets, atendend a um univers entre 60% e 90% ds cass. Para eliminar a necessidade, pr cmplet, de que desenvlvedr declare um leiaute cm Facelets em XHTML apenas para declarar duas u três variações de metadads, estes fram prmvids para nível de Clabraçã em antações padrã Java 5. - Entendend a Lógica Generalizada para Arguments Prgramaçã de Camada Cntrle I Nós já alterams s valres de argument de busca, de datanasciment para idade, n XHTML e também ns metadads de cntrle. Mas perceba que a prpriedade idade nã é cnhecida pel JPA e nem pel SGBD-R. Em suma, idade é uma prpriedade transiente u calculada e nã uma prpriedade persistente, cm s demais arguments utilizads. Mas cm funcina a lógica de prgramaçã generalizada, tip QBE (Query by Example), implementada pel jcmpany nas seleções? Nas camadas de Visã e Cntrle, jcmpany apenas captura cada valr de argument infrmad e encapsula em POJOs d tip PlcArgVO, que cntém também peradr a ser utilizad e utrs valres necessáris. Em seguida, jcmpany envia uma cleçã cm estes POJOs para a camada Mdel. Serviçs da camada Mdel irã abrir a transaçã e delegar para a camada de Persistência tratament final d tip QBE. As implementações genéricas de DAO, seja para Hibernate (Sessin), seja para JPA (EntityManager), irã prduzir cláusulas de filtr where dinamicamente em funçã d que fi infrmad e devlver cleções cm resultads, utilizand NamedQueries declaradas cm base para a cláusula select e as demais. Recapituland: se usuári infrmu smente um valr para argument nme, entã um bjet transiente PlcArgVO, cntend a prpriedade, peradr e valr infrmad é enviad cm argument para que a camada Mdel/Persistência faça restante d serviç. Após entender esta mecânica, cncluíms que precisarems prgramar apenas, na camada Cntrle, a cnversã d valr infrmad para argument transiente idade, infrmad pel usuári, para argument recnhecid, datanasciment. - Intrduçã as Template Methds. O primeir Design Pattern que terems que aprender para prgramar descendentes das classes de Cntrle genéricas ( PlcBaseJsfActin para JSF u PlcBaseActin para Struts) é Template Methd [Gamma, Erick 200]. De um md resumid2: 2. Cada açã d usuári é recebida pr um métd da classe de Cntrle. Ações em btões d framewrk (F2-Gravar, F9-Pesquisar etc.) sã atendidas pr métds de cntrle d framewrk em PlcBaseJsfActin. 3. N jcmpany, cada um destes métds de cntrle cntém prgramações genéricas que variam em cnfrmidade cm s metadads definids para as Clabrações, cncebids para diferenciações típicas (prgramaçã declarativa). 4. Além diss, estes métds implementam DP Template Methd, dispnibilizand pnts de extensã n crp ds algritms genérics, seguind um esquema padrã descrit abaix: O métd principal chama utrs, vazis, destinads a prgramaçã pr exceçã em classes descendentes. Cm um bm us da camada Bridge para especializaçã ns leiautes universais, estas taxas pdem subir para 80% a 00% ds cass! 2 Nã precisams, neste capítul, saber cm iss acntece, em detalhes. Verems detalhes n capítul 6.

35 Implementand Padrã Manter Agregaçã Mestre/Detalhe /** *. Métd de Cntrle cm prgramações generalizadas */ public String metdcntrle() thrws PlcExceptin { // 2 metdcntrleantes(<arguments>); (...) // 3. Algritm genéric inici. // 4 metdcntrleapi(<arguments>); (...) // 5. Algritm genéric cntinuaçã. // 6 return metdcntrleaps(<arguments>); } /* * 7. Métds vazis para especializações. */ public vid metdcntrleantes(<arguments>) thrws PlcExceptin { // Vazi } public vid metdcntrleapi(<arguments>)thrws PlcExceptin { // Vazi } public String metdcntrleaps(<arguments>)thrws PlcExceptin { // 8 return mesmapagina ; } Códig B8.. Esquema exempl de "Template Methd". #. Métd principal utilizand DP Template Methd. #2. Chamada a um primeir métd de extensã. Quand é chamad antes das prgramações genéricas principais, ele é batizad cm a cnvençã [nme d métd principal]antes. #3. Algritm genéric principal, eventualmente utilizand metadads da camada Cntrle. #4. Chamada a um segund métd de extensã. Se fr necessári um pnt de extensã n mei d algritm genéric, ele é batizad cm a cnvençã [nme d métd principal]api. Nte que este tip de métd é pcinal nem sempre é necessári, em tds s métds de cntrle. #5. Cntinuaçã d algritm genéric principal. #6. Chamada a um terceir métd de extensã. Quand é chamad após as prgramações genéricas principais, ele é batizad cm a cnvençã [nme d métd principal]aps". Obs.: Este últim métd, n cas da camada Cntrle, irá devlver uma String que define flux de apresentaçã para a interaçã crrente, segund a arquitetura de cntrle d JSF (idem para Struts). Esta String identifica uma nva visã para apresentaçã definida n arquiv faces-cnfig.xml (u struts-cnfig.xml). Nas Clabrações padrões d jcmpany, a mair parte das ações mantêm usuári na mesma página (String mesmapagina ). Mas desenvlvedr pde especializar este métd e alterar seu flux de execuçã, mudand valr de retrn. #7. Os métds de extensã estã sempre - garantidamente - vazis, send destinads à especializaçã smente2. #8. O métd Aps" pssui apenas desvi padrã de flux, sem nenhuma utra implementaçã. Deste md, pde ser especializad sem risc de sbrepsiçã ds algritms genérics. Mas cm sã cncebids s arguments e pnts exats de extensã ds Template Methds? Em seu livr Test Driven-Design [Beck, Kent 2003], Kent Beck, um ds maires desenvlvedres de sftware da atualidade, explica assim esta questã: Para aprfundament nesta área pde ser necessári um estud d funcinament básic de flux de cntrle destes framewrks, para quem nã s cnhece. 2 Cm se fssem abstrats. Na verdade, a classe PlcBaseJsfActin smente nã é definida cm abstrata prque pde atender de frma direta a 80% ds cass de cntrle.

36 Capítul B8 Um Template Methd é mais bem identificad através da experiência d que prjetad antecipadamente. Tda vez que dig para mim mesm: Ah, esta é a sequência e aqui estã s seus detalhes, eu sempre me peg depis cpiand códig para métds descendentes e trnand a extrair as partes verdadeiramente variáveis. Ref. B8.. Kent Beck em Test Driven-Design. Págs. 70 e 7. Assim, nte que esta é uma questã que evlui cm a experimentaçã, cm a explraçã prática. Quand surgem necessidades em pnts chave de algritms que ainda nã pssuem pnts de extensã, s desenvlvedres ainda pdem sbrepr métd principal, de visibilidade public, eventualmente cpiand seu cnteúd para descendente e mdificand-. Feit cm exceçã, ist nã é nada demais, mas se huver uma necessidade recrrente, pssivelmente é cas de se criar um nv métd de extensã e é assim que eles vem send criads pela Pwerlgic, mediante identificaçã de demandas de us. - Mdificand prgramações genéricas para manipulaçã de arguments de seleçã Após esta breve intrduçã, pdems agra retrnar a nss cntext específic. E a próxima pergunta é: Onde (em qual Template Methd ) incluirems nssa intervençã para realizar a alteraçã de arguments? Os capítuls d módul E irã entrar mais a fund na arquitetura d jcmpany FS Framewrk, prvend subsídis para esta finalidade. Mas cnhecer tds s Template Methds, seus pnts de extensã e algritms generalizads n framewrk é alg que se assimila cm us - e que diferenciará desenvlvedr experiente, que encntrará saída para qualquer situaçã, e d iniciante, que precisará de mais api. 5. Edite a classe FuncinariActin. 6. Vams agra utilizar algumas funções d Eclipse que ns apiarã na descberta ds Template Methds. Psicine n crp da classe e acine Clique-Direit -> Surce -> Override/Implement Methds.... Figura B8.52. Acess à pçã de exibiçã de métds de ancestral para sbrepsiçã. 7. Após acinar a pçã, tda a hierarquia ancestral será exibida, send que s métds cm implementaçã serã facilmente identificáveis pr terem a visibilidade public, exibids cm blinhas em cr verde. Os métds de extensã sã dispnibilizads cm visibilidade prtected e visíveis cm lsangs amarels. Já s métds cm lsangs amarels cm uma barra transversal sã métds deprecated. O jcmpany também rdena s métds de extensã, clcand-s mais próxims d métd principal, de md a facilitar a descberta das pções de especializaçã. Veja uma análise para nss cas específic, na Figura B8.53.

37 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.53. Diálg para seleçã de métds para especializaçã. #. Sã s métds principais, públics e cm prcessament genéric implementad. #2. Sã s métds para extensã, vazis e cm sufix padrã, para prgramações de diferenciaçã. #3. Outrs métds cm prefix igual a d principal pdem existir, mas se nã pssuem s sufixs padrões é prque fram criads para mair cesã de determinads trechs d algritm principal. 8. Marque métd pesquisacmnavegadrantes. N nss cas, s únics candidats seriam pesquisaantes e pesquisacmnavegadrantes. O segund é crret, pis estams utilizand navegaçã paginada. Após clicarms, Eclipse já trará um métd n descendente prnt para implementaçã, cnfrme mstra a Figura B8.54. Figura B8.54. Métd de extensã da Classe de Cntrle, cnfrme gerad pel Eclipse. #. Antaçã que indica que métd sbrepõe um ancestral. #2. Perceba que, n cas deste métd, deve-se retrnar cm resultad uma cleçã de bjets List<PlcArgVO>. Cada PlcArgVO encapsula um argument declarad para a lógica. Pdese, prtant, alterar esta cleçã prgramaticamente para btençã de cmprtament dinâmic u quaisquer exceções a algritm padrã, cm é nss cas. #3. Uma lista pré-mntada cm POJOs cntend arguments é passada cm argument, facilitand nss trabalh. Pdems utilizá-la cm base, apenas realizand nsss ajustes. #4. O métd vem cm chamada a métd ancestral, que retrna cnteúd da cleçã, sem interferências. 9. Vams finalmente implementar nss algritm, atents aqui a uma ba prática: devems evitar a implementaçã de nssas regras lg ns métds de extensã. Iss tende a diminuir encapsulament Perceba que, apesar de ser primeir métd de extensã d Template Methd pesquisa, algum prcessament genéric já precedeu. Prtant, as chamadas as métds cm sufix Antes nã sã necessariamente antes de se executar qualquer utra cisa, mas antes de se executar algritm principal, que neste cas é a chamada à camada Mdel/Persistência para recuperaçã da lista segund s arguments infrmads. Cm dissems, a cncepçã ds pnts de extensã é feita experimentalmente. Em um cas típic de pesquisa, quase nenhuma utilidade prática teria um métd antes d mment da mntagem ds arguments.

38 Capítul B8 e depreciar a qualidade d códig, a lng d temp, na medida em que surgirem utras pssíveis implementações para mesm métd. Trque, prtant, a chamada a ancestral pela chamada a utr métd (que ainda nã existe), cm nme de mdificaidadeparadatas. Este nv métd receberá a cleçã de PlcArgVO e a devlverá, mdificada. 0. Perceba que crrerá um err imediatamente após digitarms nme d nv métd, pis este ainda nã existe. Mas pdems utilizar, neste mment, um utr recurs bastante interessante d Eclipse, Quick Fix, exibid na Figura B8.55. Figura B8.55. Alteraçã de chamada para nv métd, ainda nã existente, e acinament d Quick Fix d Eclipse. #. Digite primeiramente nme e arguments para nv métd desejad. #2. Em seguida, clique n ícne de err, à esquerda da linha cm prblemas, para acinar Quick Fix (Acert Rápid) d Eclipse. #3. O Eclipse exibirá uma quantidade de ações crretivas que cnsegue inferir, dentre elas a açã que desejams, Create methd mdificaidadeparadatas (...). #4. Perceba que, n balã amarel para nssa pçã, uma imagem d métd que será prduzid é exibida em negrit para cnferência. Basta digitar enter u clicar na nssa pçã para disparar a criaçã d métd, que aparecerá cm na Figura B8.56. Figura B8.56. Nv métd criad via Quick Fix.. Em seguida, implemente métd mdificaidadeparadatas cm códig explicad na Figura B8.57.

39 Implementand Padrã Manter Agregaçã Mestre/Detalhe Figura B8.57. Métd para ajustes de arguments de idade para data. #. Nã esquecer cmentári Javadc para métds específics de cntrle. #2. O tratament generalizad de exceções será discutid em próxims capítuls. Pr enquant, lembre-se de incluir a cláusula thrws PlcExceptin, cnfrme a figura. #3. Nã cdifique a varredura pela cleçã na mã. Digite fr + Cntrl+Space para pções d Eclipse, que já recnhecem a única cleçã em escp e geram trech de laç (lp). Smente tivems que incluir <PlcArgVO> n Iteratr para evitar um casting" lg abaix, pis esta é a frma mais elegante de se fazer, em Java 5. Imprtante: Nte que jcmpany nã irá mntar um PlcArgVO para arguments nã infrmads. #4. startswidth : O teste pderia ser de igualdade em idade_argini e idade_argfim, mas, cm nã tems utrs arguments cm nmes iniciads cm idade, teste pelas iniciais cm startswith funcina. NumberUtils.isNumber : Já incluíms máscara ns camps de argument para idade, para garantir que usuári infrme smente númers na entrada de dads - mas um teste adicinal aqui cm NumberUtils.isNumber refrça nssa segurança. #5. Trca ds nmes das prpriedades de argument: Nesta linha, trcams a raiz d nme ds dis arguments (ArgINI e ArgFIM), de idade para datanasciment 2. #6. Trca ds valres infrmads para s arguments: A implementaçã da substituiçã ds valres em si ns é extremamente facilitada pr utilitáris de ajuda para datas, dispnível em PlcDateHelper. Na prática, desenvlvedr pderia utilizar qualquer bibliteca de utilitáris para datas que lhe cnviesse, mas jcmpany traz um cnjunt de funções úteis em PlcDateHelper 3. O pacte da classe NumberUtils utilizad é rg.apache.cmmns.lang.math. Existe utra pçã em rg.apache.cmmns.lang, mas a primeira é mais atual e deve ser selecinada. 2 Lembre-se que primeir argument de replaceall é uma expressã regular. Em nss cas nã faz diferença, mas é um prblema recrrente quand realizams trcas de cadeias de String mais cmplexas. Pderíams usar StringUtils.replace, também das biblitecas Cmmns d Apache, cm alternativa. 3 PlcDateHelper, assim cm tdas as biblitecas de utilitáris, sã stateless e usam DP de Criaçã Singletn (GF). Sua única instância em memória deve ser btida cm métd PlcDateHelper.getInstance(). Além de códigs arquiteturais d framewrk, em muitas situações de prgramaçã em granularidade mais fina precisarems reutilizar códigs de biblitecas de utilitáris. Nte que jcmpany vem cm algumas classes de utilitáris próprias, sempre dispníveis cm Singletn, iniciadas cm Plc e terminadas cm Helper. Ex.: PlcDateHelper, PlcCacheHelper, PlcAntacaHelper e assim pr diante. Pde-se pesquisar pr tdas utilizand-se Cntrl+Shift+T n Eclipse e digitand-se Plc*Helper. Mas jcmpany traz, hmlgadas, diversas biblitecas de utilitáris d mercad, send a principal delas Apache Cmmns. O Apache Cmmns vem cm classes tipicamente cntend métds estátics e sufix padrã terminad em Utils, tais cm NumberUtils, StringUtils, DateUtils, BeanUtils, CllectinUtils etc.

40 Capítul B8 #7. Trca ds tips da prpriedade de argument: Precisams dizer, em cada PlcArgVO, qual é tip d argument encapsulad. N nss cas, uma data. Ela pderia ser incluída cm String diretamente ( DATE ), mas da frma realizada, através da Enumeraçã, é mais segur e elegante. Lembre-se de acinar Cntrl+Shift+O (letra O) para imprtar referências. #8. A final, devlvems a lista mdificada. Iss encerra nssa primeira prgramaçã pr exceçã de camada Cntrle. Irems explrar mais alguns cass típics ns tutriais d módul B, mas módul E está vltad para explicações arquiteturais mais prfundas nesta área. - Editand metadads de Dmíni Ediçã de Camada Mdel/Dmíni III Obs.: A prsseguir para próxim pass d Assistente de Criaçã Cheat-Sheet, verems que a classe FuncinariEntity se encntra cm errs. Para acertar a imprtaçã, clique em Cntrl+Shift+O. Estes ajustes sã necessáris algumas vezes, dependend de nssa rganizaçã de pactes. Nã realizarems prgramações de negóci na classe FuncinariManager neste capítul. A prgramaçã de validações de entrada de dads invariáveis, para atender às restrições de Dmíni, também já fi realizada após s mapeaments bjet-relacinais. Neste tópic, prtant, vams ns cncentrar em entender nvidades geradas ns metadads para este nv Cas de Us Padrã e fazer pequens ajustes de cnfiguraçã para finalizar a cnfiguraçã da Exclusã Lógica, basicamente. Para este Cas de Us Padrã, jcmpany também irá gerar n prjet rhtutrial_cmuns mais 2 (dis) arquivs de metadads package-inf.java, um para cada Clabraçã, que cntêm declarações que precisam ser cnhecidas pr tdas as camadas MVC. Nesta categria se inserem as definições d graf de classes envlvid (Entidade raiz, detalhes, cmpnentes, vinculads, lkup, enumerações etc.), e d padrã da clabraçã, prpriamente dit (plccrud, plctabular etc.). A Figura B8.58 explica as nvidades ns metadads cmuns para a Clabraçã de Manutençã. Figura B8.58. Metadads para camada de Dmíni, Clabraçã de Manutençã. Já apresentams a mairia das antações deste arquiv n Cas de Us anterir. As diferenças imprtantes estã numeradas. #. O padrã da Clabraçã agra é MESTRE_DETALHE (ns estereótips de mdelagem, usams plcmestredetalhe ), e alterams a cmplexidade deste nss Cas de Us para MEDIA (muit embra este segund seja meramente cadastral, sem influência sbre nenhum cmprtament). #2. Se a prpriedade que representa uma classe d tip Cmpnente nã tiver a nmenclatura padrã ( mesm nme da classe cm inicial minúscula), seu nme deve ser declarad em prpriedade. O mesm padrã é exigid para assciações um para um. Neste cas, tivems entã que explicitar nme enderecresidencia. #3. Cada classe d tip Detalhe que pertencente a graf de classes utilizad pela Clabraçã é declarada, cm prpriedades que definem preferências para sua manipulaçã, geradas em cnfrmidade cm pções que infrmams nas telas d Assistente de Criaçã. Para mdificar alguma pçã após a geraçã, prtant, basta editá-las diretamente neste arquiv. Uma expectativa cmum em iniciantes em jcmpany é esperar muit ds plugins de criaçã d jcmpany IDE (eventualmente, que funcinem cm editres genérics, também para manutençã). Prém, cm temp e prática, percebe-se que também é bem

41 Implementand Padrã Manter Agregaçã Mestre/Detalhe Já para a Clabraçã de Seleçã, graf é muit similar a da Manutençã, dispensand explicações. A única exceçã é a declaraçã de Detalhes, que nã é utilizada na seleçã. Imprtante: Antes de finalizar, vams realizar um ajuste prvisóri na entidade Funcinari: Cmente a assciaçã manytone de Funcinari para FtEntity, pis esta entidade ainda nã fi mapeada. Remva também s métds getter e setter crrespndentes para esta prpriedade. Nã precisarems deles, cm verems n próxim capítul. Figura B8.59. Referência a FtEntity cmentada em Funcinári. Remver getft e SetFt. - Editand artefats gerads Ediçã de Camada Persistência Nesta etapa, apenas cnfira arquiv hibernate.cfg.xml. Perceba que jcmpany já inseriu entradas para tdas as Entidades Envlvidas, cm exceçã de Ft, que farems n próxim capítul. - Realizand Liberaçã Rápida Cm Reiníci via Maven Apesar de parcialmente implementad (pis ainda nã fizems a parte de fts), seria bm efetuarms uma nva liberaçã de nss desenvlviment parcial para cnferência. Faça iss, utilizand a pçã Liberaçã Rápida para Tmcat cm Reinici u clicand a final d Assistente Cheat-Sheet. - Gerand Esquema Relacinal (DDL) - Geraçã de DDL III. Abra Navegadr e chame 2. Autentique-se na aplicaçã (admin senha) e acesse a pçã Área de TI -> Esquema DDL Geraçã 3. Selecine Atualizaçã na lista Tip de Esquema e clique em Gerar Esquema. Nvamente, jcmpany irá exibir esquema DDL necessári para sincrnizarms nss mapeament cm esquema atual d SGBD, cntend smente as diferenças que prduzims cm s nvs mapeaments realizads para Cas de Us UC002 Manter Funcinári!. Desta vez a cmplexidade da DDL gerada é bem mair que das anterires. Terems, inclusive, que efetuar alguns ajustes n esquema gerad antes de submetê-l cm sucess. 4. Um primeir ajuste é remver tdas as restrições ( check cnstraint ) que se referem a current_date, smente para versões 5.5.x e anterires. Esta restriçã é gerada errneamente pel utilitári d Hibernate a recnhecer antações d Hibernate Validatr, pel mens n cas d SGBD Apache Derby. Prtant, simplesmente remva a cláusula check (... < current_date), em FUNCIONARIO e também em HISTORICO_PROFISSIONAL. prdutiv editar metadads e arquivs diretamente, que ferece uma flexibilidade impssível de se bter cm Assistentes de Criaçã. Prtant, nã utilize s geradres de códig em excess s melhres resultads advém da cmpreensã mais prfunda da arquitetura d jcmpany FS Framewrk e de seus metadads. É pssível que padrã gerad funcine para utrs SGBDs.

42 Capítul B8 Figura B8.60. Esquema de DDL prduzid a partir d mapeament da nva Agregaçã Mestre-Detalhe. Obs.: Perceba que uma restriçã similar para a cluna SALARIO também fi gerada. Mas neste cas a sintaxe é válida e pde ser mantida se desejad. Figura B8.6. Smente a restriçã em DATA_INICIO fi remvida. A de salári pde ser mantida. 5. Um segund ajuste é uma alteraçã n nme da Freign Key FK_ENDERECO_UF. Já existe uma FK cm este nme, criada n capítul anterir, entre a tabela UNIDADE_ORGANIZACIONAL e UF. A se tentar submeter este esquema, uma mensagem será exibida, cm na Figura B8.62. Figura B8.62. Freign Key declaradas em Cmpnentes exigem ajuste ns nmes, em nível de DDL. A geraçã deste nme idêntic deve-se a fat de terms reutilizad Cmpnente Enderec tant para UnidadeOrganizacinal quant para Funcinari. Cm a assciaçã cm declaraçã d nme da FK ) fica dentr d Cmpnente, crre a clisã. O JPA pssui uma antaçã que permite mdificar nmes de clunas em classes que reusam Cmpnentes, Mas ainda nã pssui para nmes de FK, cm é nss cas. Uma utra saída seria simplesmente eliminarms a definiçã d nme, mas deste md apenas trcaríams de prblema: as FKs passariam a ser identificadas através de um númer de hash, nã significativ.

"Manter Agregação Mestre/Detalhe"

Manter Agregação Mestre/Detalhe 6Implementand Padrã "Manter Agregaçã Mestre/Detalhe" Capítul 8 Implementand UC002 Manter Funcinári! - Analisand a especificaçã A terceira especificaçã de Cas de Us que irems implementar está definida n

Leia mais

Agenda. A interface de Agendamento é encontrada no Modulo Salão de Vendas Agendamento Controle de Agendamento, e será apresentada conforme figura 01.

Agenda. A interface de Agendamento é encontrada no Modulo Salão de Vendas Agendamento Controle de Agendamento, e será apresentada conforme figura 01. Agenda Intrduçã Diariamente cada um ds trabalhadres de uma empresa executam diversas atividades, muitas vezes estas atividades tem praz para serem executadas e devem ser planejadas juntamente cm utras

Leia mais

Novo Sistema Almoxarifado

Novo Sistema Almoxarifado Nv Sistema Almxarifad Instruções Iniciais 1. Ícnes padrões Existem ícnes espalhads pr td sistema, cada um ferece uma açã. Dentre eles sã dis s mais imprtantes: Realiza uma pesquisa para preencher s camps

Leia mais

Aula 11 Bibliotecas de função

Aula 11 Bibliotecas de função Universidade Federal d Espírit Sant Centr Tecnlógic Departament de Infrmática Prgramaçã Básica de Cmputadres Prf. Vítr E. Silva Suza Aula 11 Biblitecas de funçã 1. Intrduçã À medida que um prgrama cresce

Leia mais

Manual. Autorizador da UNIMED

Manual. Autorizador da UNIMED Manual Prtal Autrizadr da UNIMED Pass a Pass para um jeit simples de trabalhar cm Nv Prtal Unimed 1. Períd de Atualizaçã Prezads Cperads e Rede Credenciada, A Unimed Sul Capixaba irá atualizar seu sistema

Leia mais

Boletim Técnico. CAGED Portaria 1129/2014 MTE. Procedimento para Implementação. Procedimento para Utilização

Boletim Técnico. CAGED Portaria 1129/2014 MTE. Procedimento para Implementação. Procedimento para Utilização Bletim Técnic CAGED Prtaria 1129/2014 MTE Prdut : TOTVS 11 Flha de Pagament (MFP) Chamad : TPRQRW Data da criaçã : 26/08/2014 Data da revisã : 12/11/2014 País : Brasil Bancs de Dads : Prgress, Oracle e

Leia mais

2º Passo Criar a conexão via ODBC (Object DataBase Conection)

2º Passo Criar a conexão via ODBC (Object DataBase Conection) Prjet de Sexta-feira: Prfessra Lucélia 1º Pass Criar banc de dads u selecinar banc de dads. Ntas: Camps nas tabelas nã pdem cnter caracteres acentuads, especiais e exclusivs de línguas latinas. Nã há necessidade

Leia mais

UNIVERSIDADE FEDERAL DE RONDÔNIA

UNIVERSIDADE FEDERAL DE RONDÔNIA UNIVERSIDADE FEDERAL DE RONDÔNIA Manual de Us (Para Detentres de Bens) Infrmações adicinais n Prtal da Crdenaçã de Patrimôni: www.cpa.unir.br 2013 Cnteúd O que papel Detentr de Bem pde fazer?... 2 Objetiv...

Leia mais

SMART CONTROLE DO ESTOQUE DE GONDOLA

SMART CONTROLE DO ESTOQUE DE GONDOLA SMART CONTROLE DO ESTOQUE DE GONDOLA O prcess de cntrle de estque de gôndla fi desenvlvid cm uma prcess de auxili a cliente que deseja cntrlar a quantidade de cada item deve estar dispnível para venda

Leia mais

Sistema de Comercialização de Radiofármacos - Manual do Cliente

Sistema de Comercialização de Radiofármacos - Manual do Cliente Sistema de Cmercializaçã de Radifármacs - Manual d Cliente O IEN está dispnibilizand para s seus clientes um nv sistema para a slicitaçã ds radifármacs. Este nv sistema permitirá a cliente nã só fazer

Leia mais

MANUAL DOS GESTORES DAA

MANUAL DOS GESTORES DAA UNIVERSIDADE FEDERAL DO PIAUÍ UFPI NÚCLEO DE TECNOLOGIA DA INFORMAÇÃO - NTI MANUAL DOS GESTORES DAA MÓDULOS: M atrícula e P rgramas e C DP [Digite resum d dcument aqui. Em geral, um resum é um apanhad

Leia mais

FKcorreiosg2_cp1 - Complemento Transportadoras

FKcorreiosg2_cp1 - Complemento Transportadoras FKcrreisg2_cp1 - Cmplement Transprtadras Instalaçã d módul Faça dwnlad d arquiv FKcrreisg2_cp1.zip, salvand- em uma pasta em seu cmputadr. Entre na área administrativa de sua lja: Entre n menu Móduls/Móduls.

Leia mais

Design Patterns ABSTRACT FACTORY EMERSON BARROS DE MENESES

Design Patterns ABSTRACT FACTORY EMERSON BARROS DE MENESES Design Patterns ABSTRACT FACTORY EMERSON BARROS DE MENESES 1 Breve Históric Sbre Design Patterns A rigem ds Design Patterns (Padrões de Desenh u ainda Padrões de Prjet) vem d trabalh de um arquitet chamad

Leia mais

Casos de Uso Centrados em Dados (Primários)

Casos de Uso Centrados em Dados (Primários) B Módul Cass de Us Centrads em Dads (Primáris) A. Este é um módul prátic que traz tutriais cm passs para implementaçã de Cass de Us Padrões d jcmpany Develper Suite, incluind variações típicas (Inclusões

Leia mais

Processo TCar Balanço Móbile

Processo TCar Balanço Móbile Prcess TCar Balanç Móbile Tecinc Infrmática Ltda. Av. Brasil, 5256 3º Andar Centr Cascavel PR 1 Sumári Intrduçã... 3 Funcinalidade... 3 1 Exprtaçã Arquiv Cletr de Dads (Sistema TCar)... 4 1.1 Funcinalidade...

Leia mais

Exercícios de Java Aula 17

Exercícios de Java Aula 17 Exercícis de Java Aula 17 Link d curs: http://www.liane.cm/2013/10/curs-java-basic-java-se-gratuit/ 1. Faça um prgrama que peça uma nta, entre zer e dez. Mstre uma mensagem cas valr seja inválid e cntinue

Leia mais

1 Criando uma conta no EndNote

1 Criando uma conta no EndNote O EndNte Basic (anterirmente cnhecid pr EndNte Web), é um sftware gerenciadr de referências desenvlvid pela Editra Thmsn Reuters. Permite rganizar referências bibligráficas para citaçã em artigs, mngrafias,

Leia mais

MTUR Sistema FISCON. Manual do Usuário

MTUR Sistema FISCON. Manual do Usuário MTUR Sistema FISCON Manual d Usuári Índice 1. INTRODUÇÃO... 3 2. DESCRIÇÃO DO SISTEMA... 3 3. ACESSAR O SISTEMA... 4 4. UTILIZANDO O SISTEMA... 5 4.1. CADASTRAR CONVENENTE... 5 4.2. INSERIR FOTOGRAFIAS/IMAGENS

Leia mais

ALTERAÇÕES NO SISTEMA ORION

ALTERAÇÕES NO SISTEMA ORION ALTERAÇÕES NO SISTEMA ORION Orin Versã 7.74 TABELAS Clientes Na tela de Cadastr de Clientes, fi inserid btã e um camp que apresenta códig que cliente recebeu após cálcul da Curva ABC. Esse btã executa

Leia mais

Manual do Novo Pátio. Revenda. Versão 2.0

Manual do Novo Pátio. Revenda. Versão 2.0 Manual d Nv Páti Revenda Versã 2.0 1 Cnteúd INTRODUÇÃO... 3 1.LOGIN... 4 2.ANUNCIANTE... 4 2.1 Listar Usuáris... 4 2.2 Criar Usuári... 5 2.2.1 Permissões:... 6 3.SERVIÇOS... 7 3.1 Serviçs... 7 3.2 Feirã...

Leia mais

Vensis PCP. Rua Américo Vespúcio, 71 Porto Alegre / RS (51) 3012-4444 comercial@vensis.com.br www.vensis.com.br

Vensis PCP. Rua Américo Vespúcio, 71 Porto Alegre / RS (51) 3012-4444 comercial@vensis.com.br www.vensis.com.br Vensis PCP Vensis PCP O PCP é módul de planejament e cntrle de prduçã da Vensis. Utilizad n segment industrial, módul PCP funcina de frma ttalmente integrada a Vensis ERP e permite às indústrias elabrar

Leia mais

Tutorial de criação de um blog no Blogger

Tutorial de criação de um blog no Blogger Tutrial de criaçã de um blg n Blgger Bem-vind a Blgger! Este guia pde ajudar vcê a se familiarizar cm s recurss principais d Blgger e cmeçar a escrever seu própri blg. Para cmeçar a usar Blgger acesse

Leia mais

Versões Todos os módulos devem ser atualizados para as versões a partir de 03 de outubro de 2013.

Versões Todos os módulos devem ser atualizados para as versões a partir de 03 de outubro de 2013. Serviç de Acess as Móduls d Sistema HK (SAR e SCF) Desenvlvems uma nva ferramenta cm bjetiv de direcinar acess ds usuáris apenas as Móduls que devem ser de direit, levand em cnsideraçã departament de cada

Leia mais

Código: Data: Revisão: Página: SUMÁRIO

Código: Data: Revisão: Página: SUMÁRIO UC_REQ-MK_ACF-001 27/01/2015 00 1 / 12 SUMÁRIO INTRODUÇÃO... 2 Objetiv... 2 Públic Alv... 2 Escp... 2 Referências... 2 DESCRIÇÃO GERAL DO PRODUTO... 2 Características d Usuári... 2 Limites, Supsições e

Leia mais

WEBSITE LOJAS JOMÓVEIS

WEBSITE LOJAS JOMÓVEIS WEBSITE LOJAS JOMÓVEIS Manual d Usuári Elabrad pela W3 Autmaçã e Sistemas Infrmaçã de Prpriedade d Grup Jmóveis Este dcument, cm tdas as infrmações nele cntidas, é cnfidencial e de prpriedade d Grup Jmóveis,

Leia mais

MTUR Sistema FISCON. Manual do Usuário

MTUR Sistema FISCON. Manual do Usuário MTUR Sistema FISCON Manual d Usuári Índice 1. INTRODUÇÃO... 3 2. DESCRIÇÃO DO SISTEMA... 3 3. ACESSAR O SISTEMA... 4 4. UTILIZANDO O SISTEMA... 5 4.1. CADASTRAR CONVENENTE... 5 4.2. INSERIR FOTOS DOS CONVÊNIOS...

Leia mais

Linguagem de. Aula 07. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagem de. Aula 07. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagem de Prgramaçã IV -PHP Aula 07 Prfa Cristiane Kehler cristiane.kehler@canas.ifrs.edu.br Banc de Dads Manipulaçã de Banc de Dads HTML básic códigs cm páginas estáticas HTML + PHP códigs cm páginas

Leia mais

SGCT - Sistema de Gerenciamento de Conferências Tecnológicas

SGCT - Sistema de Gerenciamento de Conferências Tecnológicas SGCT - Sistema de Gerenciament de Cnferências Tecnlógicas Versã 1.0 09 de Setembr de 2009 Institut de Cmputaçã - UNICAMP Grup 02 Andre Petris Esteve - 070168 Henrique Baggi - 071139 Rafael Ghussn Can -

Leia mais

API de Integração E-Zoop Documentação de uso

API de Integração E-Zoop Documentação de uso API de Integraçã E-Zp Dcumentaçã de us Data de Atualizaçã: 10/06/2015 Índice 1. Intrduçã... 1 2. Características... 2 Cadastr de características... 2 Exclusã de características... 4 Listagem de características...

Leia mais

MTur Sistema Artistas do Turismo. Manual do Usuário

MTur Sistema Artistas do Turismo. Manual do Usuário MTur Sistema Artistas d Turism Manual d Usuári Índice 1. INTRODUÇÃO... 3 2. DESCRIÇÃO DO SISTEMA... 3 3. ACESSAR O SISTEMA... 4 4. UTILIZANDO O SISTEMA... 9 4.1. CADASTRAR REPRESENTANTE... 9 4.2. CADASTRAR

Leia mais

Sistema OnixNet / TrucksNet Contagem de Estoque pelas oficinas

Sistema OnixNet / TrucksNet Contagem de Estoque pelas oficinas Versã: 3.0.0.48 Empresa: TrucksCntrl Slicitante: Diretria Respnsável: Fernand Marques Frma de Slicitaçã: e-mail/reuniã Analista de Negóci: Fábi Matesc Desenvlvedr: Fabian Suza Data: 24/09/2012 Sistema

Leia mais

COMO CONFIGURAR SUA(S) CONTA(S) NO MICROSOFT OFFICE OUTLOOK

COMO CONFIGURAR SUA(S) CONTA(S) NO MICROSOFT OFFICE OUTLOOK COMO CONFIGURAR SUA(S) CONTA(S) NO MICROSOFT OFFICE OUTLOOK Use as instruções de acrd cm a versã d seu Outlk (2010, 2007 u 2003) Para saber a versã de seu Outlk, clique n menu Ajuda > Sbre Micrsft Office

Leia mais

Manual de Instalação

Manual de Instalação Manual de Instalaçã Prdut: n-hst Versã d prdut: 4.1 Autr: Aline Della Justina Versã d dcument: 1 Versã d template: Data: 30/07/01 Dcument destinad a: Parceirs NDDigital, técnics de suprte, analistas de

Leia mais

GUIA DE USO DO TECLADO VIRTUAL

GUIA DE USO DO TECLADO VIRTUAL GUIA DE USO DO TECLADO VIRTUAL A Indra, através das Cátedras de Tecnlgias Acessíveis que prmve em clabraçã cm a Fundaçã Adecc e diversas universidades espanhlas, apiu desenvlviment em cnjunt cm a Universidade

Leia mais

Inscrição do Candidato ao Processo de Credenciamento

Inscrição do Candidato ao Processo de Credenciamento Inscriçã d Candidat a Prcess de Credenciament O link de inscriçã permitirá que candidat registre suas infrmações para participar d Prcess de Credenciament, cnfrme Edital. Após tmar ciência de td cnteúd

Leia mais

Modelagem, qualificação e distribuição em um padrão para geoinformações

Modelagem, qualificação e distribuição em um padrão para geoinformações Mdelagem, qualificaçã e distribuiçã em um padrã para geinfrmações Julia Peixt 14h, 14 de junh de 2010. Mtivaçã Acerv de dads desde 1994 em diferentes áreas de pesquisa; Muitas pessas fazend muits trabalhs

Leia mais

Dissídio Retroativo. Cálculos INSS, FGTS e geração da SEFIP

Dissídio Retroativo. Cálculos INSS, FGTS e geração da SEFIP Dissídi Retrativ Cálculs INSS, FGTS e geraçã da SEFIP A rtina de Cálcul de Dissídi Retrativ fi reestruturada para atender a legislaçã da Previdência Scial. A rtina de Aument Salarial (GPER200) deve ser

Leia mais

Interfaces com o Usuário. Capítulo. Entendendo o resultado produzido para UC002 Manter Funcionário!

Interfaces com o Usuário. Capítulo. Entendendo o resultado produzido para UC002 Manter Funcionário! 6Testand e Aprimrand Interfaces cm Usuári Capítul 10 Entendend resultad prduzid para UC002 Manter Funcinári! - Frmulári Padrã para Manter Agregaçã Mestre/Detalhe - Usabilidade III A clicarms na pçã Menu

Leia mais

DOCUMENTAÇÃO DA VERSÃO

DOCUMENTAÇÃO DA VERSÃO DOCUMENTAÇÃO DA VERSÃO V2.04 S4 Página 1 de 14 INDICE ALTERAÇÕES IMPLEMENTADAS NA VERSÃO 2.04 DO SST...3 ITENS DE MENU CRIADOS PARA A VERSÃO 2.04...3 PRESTADOR...3 Relatóri de Metas...3 CLIENTE...4 Tela

Leia mais

Guia Sphinx: Instalação, Reposição e Renovação

Guia Sphinx: Instalação, Reposição e Renovação Guia Sphinx: Instalaçã, Repsiçã e Renvaçã V 5.1.0.8 Instalaçã Antes de instalar Sphinx Se vcê pssuir uma versã anterir d Sphinx (versões 1.x, 2.x, 3.x, 4.x, 5.0, 5.1.0.X) u entã a versã de Demnstraçã d

Leia mais

Controle de Atendimento de Cobrança

Controle de Atendimento de Cobrança Cntrle de Atendiment de Cbrança Intrduçã Visand criar um gerenciament n prcess d cntrle de atendiment de cbrança d sistema TCar, fi aprimrad pela Tecinc Infrmática prcess de atendiment, incluind s títuls

Leia mais

Informática II INFORMÁTICA II

Informática II INFORMÁTICA II Jrge Alexandre jureir@di.estv.ipv.pt - gab. 30 Artur Susa ajas@di.estv.ipv.pt - gab. 27 1 INFORMÁTICA II Plan Parte I - Cmplementar cnheciment d Excel cm ferramenta de análise bases de dads tabelas dinâmicas

Leia mais

MANUAL DE INSTALAÇÃO

MANUAL DE INSTALAÇÃO ÍNDICE QUE VALORES [MASTERSAF DFE] TRAZEM PARA VOCÊ? 1. VISÃO GERAL E REQUISITOS PARA INSTALAÇÃO... 2 1.1. AMBIENTE... 2 1.2. BANCO DE DADOS... 4 2. BAIXANDO OS INSTALADORES DO DFE MASTERSAF... 5 3. INICIANDO

Leia mais

Processo de envio de e-mail de marketing

Processo de envio de e-mail de marketing Prcess de envi de e-mail de marketing Intrduçã Visand um melhr gerenciament ns prcesss de marketing das empresas, fi desenvlvid uma nva funcinalidade para sistema TCar, que tem pr finalidade realizar envis

Leia mais

Copyright 1999-2006 GrupoPIE Portugal, S.A. Manual Utilizador

Copyright 1999-2006 GrupoPIE Portugal, S.A. Manual Utilizador Reprts Relatóris à sua Medida Reprts Cpyright 1999-2006 GrupPIE Prtugal, S.A. Reprts 1. WinREST Reprts...5 1.1. Licença...6 1.2. Linguagem...7 1.3. Lgin...7 1.4. Página Web...8 2. Empresas...9 2.1. Cm

Leia mais

Modelo de Negócios. TRABALHO REALIZADO POR: Antonio Gome- 2007009 // Jorge Teixeira - 2008463

Modelo de Negócios. TRABALHO REALIZADO POR: Antonio Gome- 2007009 // Jorge Teixeira - 2008463 Mdel de Negócis Trabalh n âmbit da disciplina de Mdelaçã de dads. Criaçã de uma platafrma utilizand as tecnlgias SQL PHP e Javascript.. TRABALHO REALIZADO POR: Antni Gme- 2007009 // Jrge Teixeira - 2008463

Leia mais

Desenho centrado em utilização

Desenho centrado em utilização Desenh centrad em utilizaçã Engenharia de Usabilidade Prf.: Clarind Isaías Pereira da Silva e Pádua Departament de Ciência da Cmputaçã - UFMG Desenh centrad em utilizaçã Referências Cnstantine, L.L., &

Leia mais

Documentação de Versão Projeto Saúde e Segurança do Trabalho

Documentação de Versão Projeto Saúde e Segurança do Trabalho Dcumentaçã de Versã Prjet Saúde e Segurança d Trabalh DATA: tt/3/yy Pág 1 de 6 ÍNDICE ALTERAÇÕES IMPLEMENTADAS NA VERSÃO 2.1 DO SST... 2 ITENS DE MENU CRIADOS PARA A VERSÃO 2.1... 2 PRESTADOR... 2 CLIENTE...

Leia mais

Manual de Operação WEB SisAmil - Gestão

Manual de Operação WEB SisAmil - Gestão Manual de Operaçã WEB SisAmil - Gestã Credenciads Médics 1 Índice 1. Acess Gestã SisAmil...01 2. Autrizaçã a. Inclusã de Pedid...01 b. Alteraçã de Pedid...10 c. Cancelament de Pedid...11 d. Anexs d Pedid...12

Leia mais

Event Viewer - Criando um Custom View

Event Viewer - Criando um Custom View Event Viewer - Criand um Custm View Qui, 06 de Nvembr de 2008 18:21 Escrit pr Daniel Dnda Cnhecend Event Viewer Muit imprtante na manutençã e mnitrament de servidres Event Viewer é uma ferramenta que gera

Leia mais

Orientações para a Escrituração Contábil Digital (Sped Contábil) Versão 14.01 Soluções SPDATA

Orientações para a Escrituração Contábil Digital (Sped Contábil) Versão 14.01 Soluções SPDATA 2015 Orientações para a Escrituraçã Cntábil Digital (Sped Cntábil) Versã 14.01 Sluções SPDATA Equipe SAT Análise Desenvlviment e Qualidade de Sftware 07/04/2015 Sumári Objetiv... 3 Cnsiderações gerais...

Leia mais

Tribunal de Contas do Estado de Minas Gerais Diretoria de Tecnologia da Informação

Tribunal de Contas do Estado de Minas Gerais Diretoria de Tecnologia da Informação 1.1.1.1 Cas de us Descmpactar e Cnverter arquivs d módul de Instruments de Planejament 1.1.1.1.1 Precndições 1. O cas de us de envi deve ter sid cncluíd cm sucess 1.1.1.1.2 Flux principal 1. O SICOM descmpacta

Leia mais

BANKSYNC ALGORITMO PARA GERAÇÃO DO CÓDIGO DE BARRAS (DLL)

BANKSYNC ALGORITMO PARA GERAÇÃO DO CÓDIGO DE BARRAS (DLL) OBJETIVO O algritm para geraçã d códig de barras (dll) utilizad n SAP Business One (SBO) deve ser instalad e cnfigurad adequadamente para pssibilitar a visualizaçã e impressã de blets lcalmente, assim

Leia mais

Legenda da Mensagem de Resposta à Verificação de Elegibilidade (respostaelegibilidade)

Legenda da Mensagem de Resposta à Verificação de Elegibilidade (respostaelegibilidade) Legenda da Mensagem de Respsta à Verificaçã de Elegibilidade (respstaelegibilidade) Mensagem : Respta à verificaçã de elegibilidade (respstaelegibilidade) - Flux : Operadra para Prestadr Códig da mensagem

Leia mais

Lumine Database Mapping for PHP. Treinamento Básico

Lumine Database Mapping for PHP. Treinamento Básico Lumine Database Mapping fr PHP Treinament Básic Cnhecend as características básicas de um ds framewrks de mapeament de banc de dads relacinais mais fáceis de ser utilizad. Hug Ferreira da Silva 13/12/2010

Leia mais

Banco de Dados. DIEGO BARCELOS RODRIGUES dbarcelos@ifes.edu.br 2015 (2015/1) 1. Ifes - Campus Cachoeiro de Itapemirim

Banco de Dados. DIEGO BARCELOS RODRIGUES dbarcelos@ifes.edu.br 2015 (2015/1) 1. Ifes - Campus Cachoeiro de Itapemirim Ifes - Campus Cacheir de Itapemirim Banc de Dads DIEGO BARCELOS RODRIGUES dbarcels@ifes.edu.br 2015 (2015/1) 1 Agenda Breve revisã ds Cnceits Básics SQL (Linguagem de Cnsulta Estruturada) Subdivisões da

Leia mais

Anexo 03 Recomendação nº 3: estatuto padrão, estatuto fundamental e contrato social

Anexo 03 Recomendação nº 3: estatuto padrão, estatuto fundamental e contrato social Anex 03 Recmendaçã nº 3: estatut padrã, estatut fundamental e cntrat scial 1. Resum 01 Atualmente, Estatut da Crpraçã da Internet para a atribuiçã de nmes e númers (ICANN) tem um mecanism únic para alterações.

Leia mais

Vensis Manutenção. Rua Américo Vespúcio, 71 Porto Alegre / RS (51) 3012-4444 comercial@vensis.com.br www.vensis.com.br

Vensis Manutenção. Rua Américo Vespúcio, 71 Porto Alegre / RS (51) 3012-4444 comercial@vensis.com.br www.vensis.com.br Vensis Manutençã Vensis Manutençã É módul que permite gerenciament da manutençã de máquinas e equipaments. Prgramaçã de manutenções preventivas u registr de manutenções crretivas pdem ser feits de frma

Leia mais

Plano de aulas 2010 1ª série 1ª aula 2ª etapa

Plano de aulas 2010 1ª série 1ª aula 2ª etapa Plan de aulas 2010 1ª série 1ª aula 2ª etapa Escla Clégi Eng Juarez Wanderley Prfessr Fernand Nishimura de Aragã Disciplina Infrmática Objetivs Cnstruçã de um website pessal para publicaçã de atividades

Leia mais

Documentação de Versão Projeto Saúde e Segurança do Trabalho

Documentação de Versão Projeto Saúde e Segurança do Trabalho Prjet Saúde e Segurança d Trabalh DATA: tt/3/yy Pág 1 de 8 ÍNDICE ALTERAÇÕES IMPLEMENTADAS NA VERSÃO 2.2 DO SST... 2 ITENS DE MENU CRIADOS PARA A VERSÃO 2.2... 2 SEGURANÇA... 2 SAÚDE... 2 SAÚDE/AUDIOMETRIA...

Leia mais

De acordo com estes critérios, uma sugestão de formato para nomes de tablespaces no banco de dados Oracle é a seguinte: S_O_T, onde:

De acordo com estes critérios, uma sugestão de formato para nomes de tablespaces no banco de dados Oracle é a seguinte: S_O_T, onde: Pedr F. Carvalh cntat@pedrfcarvalh.cm.br Tablespaces: Organizaçã e Nmenclatura Definir critéris para a divisã de um banc de dads Oracle em tablespaces é sempre uma questã imprtante para s DBAs na rganizaçã

Leia mais

MANUAL DE PROCEDIMENTOS

MANUAL DE PROCEDIMENTOS MANUAL DE PROCEDIMENTOS Etapa 3 Cadastr d Prcess Seletiv O Presidente da CRM cadastra s dads d prcess n sistema. O prcess seletiv é a espinha drsal d sistema, vist que pr mei dele regem-se tdas as demais

Leia mais

MANUAL DO USUÁRIO FINANCEIRO

MANUAL DO USUÁRIO FINANCEIRO SIGIO Sistema Integrad de Gestã de Imprensa Oficial MANUAL DO USUÁRIO FINANCEIRO S I G I O M A N U A L D O U S U Á R I O P á g i n a 2 Cnteúd 1 Intrduçã... 3 2 Acess restrit a sistema... 4 2.1 Tips de

Leia mais

CRONOGRAMA DELPHI para turmas Aproximadamente 84 horas - aulas de 2 horas

CRONOGRAMA DELPHI para turmas Aproximadamente 84 horas - aulas de 2 horas CRONOGRAMA DELPHI para turmas Aprximadamente 84 hras - aulas de 2 hras Primeira Parte Lógica de Prgramaçã 5 aulas 10 hras AULA 1 OBJETIVO 1. Cnceits básics: Algritm, Tips de Variáveis, Tips e Expressões

Leia mais

Channel. Colaboradores. Tutorial. Atualizado com a versão 3.9

Channel. Colaboradores. Tutorial. Atualizado com a versão 3.9 Channel Clabradres Tutrial Atualizad cm a versã 3.9 Cpyright 2009 pr JExperts Tecnlgia Ltda. tds direits reservads. É pribida a reprduçã deste manual sem autrizaçã prévia e pr escrit da JExperts Tecnlgia

Leia mais

Todos os direitos reservados Versão 1.2

Todos os direitos reservados Versão 1.2 Guia de Relatóris Tds s direits reservads Versã 1.2 1 Guia de Relatóris Índice 1 Pedids... 3 1.1 Mnitr de Pedids... 3 1.2 Pedids... 4 1.3 Estatísticas de Pedids... 5 1.4 Acess e Cnsum... 7 1.5 Pedids pr

Leia mais

CRC-MG Central de Registro Civil de Minas Gerais Certidão Online - Serventia. Manual do usuário

CRC-MG Central de Registro Civil de Minas Gerais Certidão Online - Serventia. Manual do usuário CRC-MG Central de Registr Civil de Minas Gerais Certidã Online - Serventia Manual d usuári Prefáci Data: 30/01/2015 Versã dcument: 1.0 1. COMO ACESSAR O MÓDULO DA CERTIDÃO ONLINE... 04 2. OPÇÕES DE PEDIDOS

Leia mais

com jcompany Extensions Capítulo Expandindo o Poder do jcompany Developer Suite - Entendendo as melhores práticas de customização

com jcompany Extensions Capítulo Expandindo o Poder do jcompany Developer Suite - Entendendo as melhores práticas de customização A6Extensões Arquiteturais cm jcmpany Extensins Capítul 23 Expandind Pder d jcmpany Develper Suite - Entendend as melhres práticas de custmizaçã Exercitams em váris capítuls as pssibilidades de extensã

Leia mais

Tutorial Sistema Porto Sem Papel

Tutorial Sistema Porto Sem Papel Tutrial Sistema Prt Sem Papel 8 ESTADIA CONVENCIONAL: A estadia cnvencinal é aquela em que a embarcaçã deseja executar uma peraçã de carga, descarga, carga/descarga, embarque/desembarque de passageirs

Leia mais

Número de cédula profissional (se médico); Nome completo; 20/06/2014 1/7

Número de cédula profissional (se médico); Nome completo; 20/06/2014 1/7 Mdel de Cmunicaçã Sistema Nacinal de Vigilância Epidemilógica Âmbit d Dcument O presente dcument traduz mdel de cmunicaçã entre Centr de Suprte da SPMS e clientes d Sistema Nacinal de Vigilância Epidemilógica.

Leia mais

CTH - ALERT REFERRAL NOVAS FUNCIONALIDADES/Perfil Administrativo Centro de Saúde

CTH - ALERT REFERRAL NOVAS FUNCIONALIDADES/Perfil Administrativo Centro de Saúde Cnsulta a Temp e Hras CTH - ALERT REFERRAL NOVAS FUNCIONALIDADES/Perfil Administrativ Centr de Saúde 2013 ALERT Life Sciences Cmputing, S.A.. Tds s direits reservads. A ALERT Life Sciences Cmputing, S.A.

Leia mais

MANUAL DE PROCEDIMENTOS PARA REGISTO DE. Técnicos de Instalação e Manutenção de Edifícios e Sistemas. (TIMs)

MANUAL DE PROCEDIMENTOS PARA REGISTO DE. Técnicos de Instalação e Manutenção de Edifícios e Sistemas. (TIMs) MANUAL DE PROCEDIMENTOS PARA REGISTO DE Técnics de Instalaçã e Manutençã de Edifícis e Sistemas (TIMs) NO SISTEMA INFORMÁTICO DO SISTEMA NACIONAL DE CERTIFICAÇÃO ENERGÉTICA NOS EDIFÍCIOS (SCE) 17/07/2014

Leia mais

MANUAL DO USUÁRIO EVENTOS

MANUAL DO USUÁRIO EVENTOS SISTEMA DE INFORMAÇÃO E GESTÃO INTEGRADA POLICIAL Elabrad: Equipe SAG Revisad: Data: 17-09-2008 Data: Aprvad: Data: A autenticaçã d dcument cnsta n arquiv primári da Qualidade Referencia: Help_Online_Events.dc

Leia mais

Acesso ao menu da presença de Carga Exportação WEB

Acesso ao menu da presença de Carga Exportação WEB Manual de Utilizaçã Presença de Carga Exprtaçã WEB Acess a menu da presença de Carga Exprtaçã WEB Acessar site d TECON RG (HTTP://www.tecn.cm.br); Clicar em Tecn Online; Infrmar usuári e senha de acess

Leia mais

MANUAL DO USUÁRIO ANTECEDENTES CRIMINAIS

MANUAL DO USUÁRIO ANTECEDENTES CRIMINAIS SISTEMA DE INFORMAÇÃO E GESTÃO INTEGRADA POLICIAL Elabrad: Equipe SAG Revisad: Aprvad: Data: 11/09/2008 Data: 10/10/2008 Data: A autenticaçã d dcument cnsta n arquiv primári da Qualidade Referencia: Help_Online_Antecedentes_Criminais.dc

Leia mais

Segue abaixo projeto para desenvolvimento de novo website para loja Virtual

Segue abaixo projeto para desenvolvimento de novo website para loja Virtual Lja Virtual Desenvlviment FrmigaNegócis Orçament: /2012 Cliente: Respnsável: Prjet: Lja virtual Telefne: Frmiga (MG), de de 2012 Intrduçã Segue abaix prjet para desenvlviment de nv website para lja Virtual

Leia mais

RECOMENDAÇÕES GERAIS PARA AQUISIÇÃO DE IMAGENS RADIOLÓGICAS PARA CRIAÇÃO DE RÉPLICAS FETAIS ATRAVÉS DE IMPRESSÃO 3D

RECOMENDAÇÕES GERAIS PARA AQUISIÇÃO DE IMAGENS RADIOLÓGICAS PARA CRIAÇÃO DE RÉPLICAS FETAIS ATRAVÉS DE IMPRESSÃO 3D RECOMENDAÇÕES GERAIS PARA AQUISIÇÃO DE IMAGENS RADIOLÓGICAS PARA CRIAÇÃO DE RÉPLICAS FETAIS ATRAVÉS DE IMPRESSÃO 3D ULTRASSONOGRAFIA OBSTÉTRICA RESSONÂNCIA MAGNÉTICA FETAL ANEXO 1 TUTORIAL PARA EXPORTAÇÃO

Leia mais

Versão 14.0 Junho 2015 www.psr-inc.com Contato: sddp@psr-inc.com. Representação mais detalhada da operação em cada estágio: 21 blocos

Versão 14.0 Junho 2015 www.psr-inc.com Contato: sddp@psr-inc.com. Representação mais detalhada da operação em cada estágio: 21 blocos Versã 14.0 Junh 2015 www.psr-inc.cm Cntat: sddp@psr-inc.cm SDDP VERSÃO 14.0 Nvidades Representaçã mais detalhada da peraçã em cada estági: 21 blcs Tradicinalmente, a peraçã de cada estági (semana u mês)

Leia mais

INTRODUÇÃO A LOGICA DE PROGRAMAÇÃO

INTRODUÇÃO A LOGICA DE PROGRAMAÇÃO INTRODUÇÃO A LOGICA DE PROGRAMAÇÃO A Lógica de Prgramaçã é necessária à tdas as pessas que ingressam u pretendem ingressar na área de Tecnlgia da Infrmaçã, send cm prgramadr, analista de sistemas u suprte.

Leia mais

Operação Metalose orientações básicas à população

Operação Metalose orientações básicas à população Operaçã Metalse rientações básicas à ppulaçã 1. Quem é respnsável pel reclhiment de prduts adulterads? As empresas fabricantes e distribuidras. O Sistema Nacinal de Vigilância Sanitária (Anvisa e Vigilâncias

Leia mais

Um controlador de domínio baseado em Linux para laboratório vsphere - parte 4

Um controlador de domínio baseado em Linux para laboratório vsphere - parte 4 Um cntrladr de dmíni basead em Linux para labratóri vsphere - parte 4 Essa é uma série de quatr artigs, que explicam cm instalar e cnfigurar um appliance basead em Linux em seu ambiente de labratóri vsphere

Leia mais

BRIEFING DO WEBSITE E SISTEMAS FEMURN A FEMURN. Página de conteúdo estático. Página de conteúdo estático. Página de conteúdo estático.

BRIEFING DO WEBSITE E SISTEMAS FEMURN A FEMURN. Página de conteúdo estático. Página de conteúdo estático. Página de conteúdo estático. www.maxmei.cm BRIEFING DO WEBSITE E SISTEMAS FEMURN A FEMURN Históric Diretria Ex-presidentes Estatut Página de cnteúd estátic. Página de cnteúd estátic. Página de cnteúd estátic. Página de cnteúd estátic.

Leia mais

H. Problemas/outras situações na ligação com a Segurança Social;

H. Problemas/outras situações na ligação com a Segurança Social; Mdel de Cmunicaçã Certificads de Incapacidade Temprária Âmbit d Dcument O presente dcument traduz mdel de cmunicaçã entre Centr de Suprte da SPMS e clientes n âmbit ds CIT Certificads de Incapacidade Temprária.

Leia mais

Diretor Conselheiro Técnico Consultores de serviços. Responsável pela Qualidade Gerente de Vendas Garantista

Diretor Conselheiro Técnico Consultores de serviços. Responsável pela Qualidade Gerente de Vendas Garantista Sã Paul, 06 de Julh de 2009. Nº. 341 Divulgar esta infrmaçã para: Diretr Cnselheir Técnic Cnsultres de serviçs Gerente de Serviçs Gerente de Peças Chefe de Oficina Respnsável pela Qualidade Gerente de

Leia mais

III.3. SISTEMAS HÍBRIDOS FIBRA/COAXIAL (HFC)

III.3. SISTEMAS HÍBRIDOS FIBRA/COAXIAL (HFC) 1 III.3. SISTEMAS HÍBRIDOS FIBRA/COAXIAL (HFC) III.3.1. DEFINIÇÃO A tecnlgia HFC refere-se a qualquer cnfiguraçã de fibra ótica e cab caxial que é usada para distribuiçã lcal de serviçs de cmunicaçã faixa

Leia mais

MANUAL DE PROCEDIMENTOS PARA INSCRIÇÕES ON-LINE

MANUAL DE PROCEDIMENTOS PARA INSCRIÇÕES ON-LINE MANUAL DE PROCEDIMENTOS PARA INSCRIÇÕES ON-LINE N prcess de renvaçã de matrículas para an lectiv 2008/2009, e na sequência d plan de melhria cntínua ds serviçs a dispnibilizar as aluns, IPVC ferece, pela

Leia mais

Anexo V. Software de Registro Eletrônico em Saúde. Implantação em 2 (duas) Unidades de Saúde

Anexo V. Software de Registro Eletrônico em Saúde. Implantação em 2 (duas) Unidades de Saúde Anex V Sftware de Registr Eletrônic em Saúde Implantaçã em 2 (duas) Unidades de Saúde Índice 1 INTRODUÇÃO... 3 2 ESTRATÉGIAS E PROCEDIMENTOS DE IMPLANTAÇÃO... 3 4 INFRAESTRUTURA NAS UNIDADES DE SAÚDE -

Leia mais

Transformadores. Transformadores 1.1- INTRODUÇÃO 1.2- PRINCÍPIO DE FUNCIONAMENTO

Transformadores. Transformadores 1.1- INTRODUÇÃO 1.2- PRINCÍPIO DE FUNCIONAMENTO Transfrmadres 1.1- INTRODUÇÃO N estud da crrente alternada bservams algumas vantagens da CA em relaçã a CC. A mair vantagem da CA está relacinada cm a facilidade de se elevar u abaixar a tensã em um circuit,

Leia mais

UML. Diagrama de Classes de Projeto e Diagrama de Objetos Análise e Projeto de Software. Profª. Cibele da Rosa Christ

UML. Diagrama de Classes de Projeto e Diagrama de Objetos Análise e Projeto de Software. Profª. Cibele da Rosa Christ UML Diagrama de Classes de Prjet e Diagrama de Objets Análise e Prjet de Sftware Prfª. Cibele da Rsa Christ cibele@senacrs.cm.br SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC

Leia mais

Manual do DEC Domicílio Eletrônico do Contribuinte

Manual do DEC Domicílio Eletrônico do Contribuinte GOVERNO DO ESTADO DE SÃO PAULO SECRETARIA DA FAZENDA Crdenadria da Administraçã Tributária Diretria Executiva da Administraçã Tributária Manual d DEC Dmicíli Eletrônic d Cntribuinte Manual DEC (dezembr

Leia mais

Apresentação do Curso

Apresentação do Curso At endi m ent acl i ent e Apr es ent aç ãdc ur s Apresentaçã d Curs O curs Atendiment a Cliente fi elabrad cm bjetiv de criar cndições para que vcê desenvlva cmpetências para: Identificar s aspects que

Leia mais

Guia Prático do Estágio. Seu Estágio em 5 Passos

Guia Prático do Estágio. Seu Estágio em 5 Passos Guia Prátic d Estági Seu Estági em 5 Passs O que é Estági? A atividade de estági é um fatr significativ na frmaçã d prfissinal, pr prprcinar a interaçã d alun cm a realidade da prfissã e a cmplementaçã

Leia mais

MANUAL DO USUÁRIO - DIVULGAÇÃO DE PESSOAS E OBJETOS

MANUAL DO USUÁRIO - DIVULGAÇÃO DE PESSOAS E OBJETOS SISTEMA DE INFORMAÇÃO E GESTÃO INTEGRADA POLICIAL Elabrad: Equipe SAG Revisad: Aprvad: Referencia: Help_Online_Divulgaçã_Pessas_Objets.d c Versã: 01.00 Data: 27/08/2008 Data: 10/10/2008 Data: A autenticaçã

Leia mais

3 Formulação da Metodologia 3.1. Considerações Iniciais

3 Formulação da Metodologia 3.1. Considerações Iniciais 53 3 Frmulaçã da Metdlgia 3.1. Cnsiderações Iniciais O presente capítul tem cm finalidade prpr e descrever um mdel de referencia para gerenciament de prjets de sftware que pssa ser mensurável e repetível,

Leia mais

Manual de Instalação e Configuração

Manual de Instalação e Configuração Manual de Instalaçã e Cnfiguraçã Prdut:n-ReleaserEmbedded fr Lexmark Versã 1.2.1 Versã d Dc.:1.0 Autr: Lucas Machad Santini Data: 14/04/2011 Dcument destinad a: Clientes e Revendas Alterad pr: Release

Leia mais

Capítulo V. Técnicas de Análise de Circuitos

Capítulo V. Técnicas de Análise de Circuitos Capítul V Técnicas de Análise de Circuits 5.1 Intrduçã Analisar um circuit é bter um cnjunt de equações u valres que demnstram as características de funcinament d circuit. A análise é fundamental para

Leia mais

Este documento tem como objetivo definir as políticas referentes à relação entre a Sioux e seus funcionários.

Este documento tem como objetivo definir as políticas referentes à relação entre a Sioux e seus funcionários. OBJETIVO Este dcument tem cm bjetiv definir as plíticas referentes à relaçã entre a Siux e seus funcináris. A Siux se reserva direit de alterar suas plíticas em funçã ds nvs cenáris da empresa sem avis

Leia mais

Aplicação Hibernate1 no NetBeans

Aplicação Hibernate1 no NetBeans Aplicaçã Hibernate1 n NetBeans Hibernate é um framewrk que frnece ferramentas para efetuar mapeament bjet/relacinal para Java. Mapeament bjet/relacinal é prcess de cnversã bidirecinal entre bjets e tabelas

Leia mais

METAS DE COMPREENSÃO:

METAS DE COMPREENSÃO: 1. TÓPICO GERADOR: Vivend n sécul XXI e pensand n futur. 2. METAS DE COMPREENSÃO: Essa atividade deverá ter cm meta que s aluns cmpreendam: cm se cnstrói saber científic; cm as áreas d saber estã inter-relacinadas

Leia mais

Manual de Configuração

Manual de Configuração Manual de Cnfiguraçã Pnt de Venda (PDV) Versã: 1.1 Índice 1 EASYASSIST PONTO DE VENDA (PDV)... 3 1.1 INSTALANDO O TERMINAL EASYASSIST PONTO DE VENDA (PDV)... 3 1.2 CAPTURANDO O NÚMERO DE SÉRIE E O GT DO

Leia mais