Home

Programas Desenvolvidos, Testados e Documentados

image

Contents

1. SENADO FEDERAL Secretaria Especial do Interlegis SINTER Subsecretaria de Tecnologia da Informa o SSTIN IATE DO INTERLEGIS RELAT RIO DE PROJETO vers o 2 3 Programas desenvolvidos testados e documentados 1 Termo de Refer ncia Esse relat rio diz respeito ao edital n mero 46 OBJ REL Camada de Persist ncia Objeto Relacional publicado entre os dias 04 a 11 de maio de 2008 a ser realizado no per odo de maio 2008 a outubro 2008 2 Introdu o De acordo com o descrito no termo de refer ncia desse projeto os frameworks utilizados pelo Interlegis permitem o armazenamento de informa es tanto em banco de dados relacionais PostgreSQL e MySQL quanto em banco de dados orientados a objetos ZODB De forma geral quando trata se de representar informa es dentro do Plone utilizando se o framework Archetypes a persist ncia dos dados costuma ser orientada a objetos 00 e realizada diretamente no banco de dados orientado a objetos ZODB H algumas solu es do Interlegis como por exemplo o SAPL Sistema de Apoio ao Processo Legislativo que podem ser consideradas solu es h bridas armazenando informa es em diferentes modelos parte das informa es em banco de dados relacional e parte em banco de dados orientado a objetos No entanto o SAPL n o utiliza o framework Archetypes e por sua vez n o est relacionado com esse projeto Esse relat rio tratar apenas das considera
2. What kinds of relationships does this object have from others db get database selT rm db mappers reference catalog return list set ref relationship for ref in db session query rm filter by targetuid selT UID SENADO FEDERAL Secretaria Especial do Interlegis SINTER def ATSAReferenceable deleteReference self target relationship None if config storage BOTH Referenceable deleteReference selfT target relationship filter by dict sourceuid self UID targetuid target UID if relationship is not None filter by relationship relationship for m in get refs self filter by db session delete m def ATSAReferenceable deleteReterences selt relationship None if config storage BOTH Referenceable deleteRefterences selt relationship filter by dict sourceuid self UID if relationship is not None filter by relationship relationship for m in get refs self filter by db session delete m Subsecretaria de Tecnologia da Informa o SSTIN INTERLEGIS Como descrito no in cio do cap tulo 3 desse relat rio a implementa o foi dividida em 2 partes Abaixo est detalhada a estrutura de m dulos do c digo fonte EXTERNALS txt archetypes sqlalchemystorage archetypes init py sglalchemystorage anit py config py configure zcml database py docs CREDITS txt LICENCE GPL event py Ind
3. name args kw return getattr self PATTERN name J args kw def call pattern self name pattern PATTERN args kw return getattr selTf pattern name J args kw WRAPPER interlegis sglalchemystorage is wrapper method _ ORIG NAME interlegis sglalchemystorage original method name _ def isWrapperMethod meth return getattr meth WRAPPER False def wrap method klass name method pattern PATTERN old method getattr klass name if isWrapperMethod old method Llogger warn Not wrapping s s Already wrapped klass name name return else logger warn Wrapping 5 5 amp klass name name new name pattern amp name setattr klass new name old method setattr method ORIG NAME new name setattr method WRAPPER True setattr klass name method def unwrap method klass name old method getattr iklass name if not isWrapperMethod old method raise ValueError Trying to unwrap non wrapped method 5 5 klass name name orig name getattr old method ORIG NAME new method getattr klass orig name delattr klass orig name setattr klass name new method Na pr tica os m todos que receberam novo comportamento s o embrulhados em um m todo wrapper que executado no lugar do m todo original toda vez que esse tivesse que ser chamado O trecho de c digo que teve maior quantidade de monkeys patches relac
4. es relevantes ao primeiro caso O mapeamento de informa es objeto relacional Nesse caso as informa es que normalmente seriam armazenadas em bancos de dados OO precisam ser mapeadas para um banco de dados relacional Esse segundo relat rio complementa do Relat rio 1 j entregue anteriormente e diz respeito a entrega dos programas desenvolvidos testados e documentados Posteriormente os relat rios 3 e 4 tratar o a respeito das demais entregas 3 C digo Fonte Desenvolvido A solu o de mapeamento objeto relacional implementada recebeu o nome de interlegis sqlalchemystorage e tem como depend ncia principal o m dulo archetypes sqlalchemystorage O processo de instala o da solu o ser descrito no Relat rio 3 manual de instru es esse relat rio cobre apenas os aspectos gerais da implementa o realizada O c digo fonte propriamente dito foi completamente desenvolvido testado e documentado O c digo fonte do projeto foi entregue por correio eletr nico enviado para o consultor do Interlegis Jean Ferri e com c pia para Petr nio Barbosa Lima de Carvalho diretor da subsecretaria de TI do Interlegis e surpevisor nesse projeto Al m disso o c digo fonte complete poder ser baixado atrav s do subversion de acordo com os procedimentos a serem descritos posteriormente no manual de instru es Todos os procedimentos foram testados utilizando a distribui o Linux Ubuntu Server Edition vers o 8 0 4 sabida
5. ex py interfaces py mapper py storage py templates add pt tests _ init__ py configure zcml test SAIndex py test indexStorage py test storage py setup cfg setup py interlegis sqlalchemystorage README txt docs HISTORY txt INSTALL txt LICENSE GPL LICENSE txt Interlegis init py sglalchemystorage README txt TODO txt init py setup cf setup py 11 diret rios 5 SENADO FEDERAL Secretaria Especial do Interlegis SINTER Subsecretaria de Tecnologia da Informa o SSTIN columns py config py configure zcml database py database txt declarative py events py fss py fss txt generator py generator txt interfaces py patch py referenceable py referenceable txt sastorage patch py sastorage patch txt storage conf tests _ init__ py configure zcml database py test base py g 4 arquivos INTERLEGIS
6. ionado com a implementa o da persist ncia de refer ncias Nativamente o Archetypes SENADO FEDERAL Secretaria Especial do Interlegis SINTER Subsecretaria de Tecnologia da Informa o SSTIN INTERLEGIS implementa a API de refer ncias entre objetos em uma classe base a Archetypes Referenceable Referenceable Essa classe implementa m todos para consultar quais refer ncias apontam para um objeto adicionar e remover refer ncias O c digo abaixo mostra quais m todos receberam novo comportamento utilizando essa t cnica def patch referenceable klass klass name klass name fpattern interlegis sglalchempstorage amp s klass name 5 config logger warn Applying Referenceable patches for s klass name if config storage BOTH patch wrap method klass qetRefs ATSAReferenceable getRefs patch wrap method klass getReferences ATSAReferenceable getRefs patch wrap method klass getBRefs AT5AReferenceable getBRefs patch wrap method klass getBackReferences ATSAReferenceable getBRefs patch wrap method klass hasRelationshipTto ATSAReferenceable hasRelationshipTo patch wrap method klass getRelationships ATSAReferenceable getRelationships patch wrap method klass getBRelationships ATSAReferenceable getBRelationships patch wrap method klass getReferenceImpl ATSAReterenceable getReferenceImpl patch wrap method klass getBackReferenceImpl ATSAReferenceable getBackReferenceIm
7. mente a distribui o Linux mais utilizada no Interlegis mas os procedimentos s o igualmente v lidos para outras vers es da SENADO FEDERAL Secretaria Especial do Interlegis SINTER Subsecretaria de Tecnologia da Informa o SSTIN INTERLEGIS distribui o assim como para outras distribui es baseadas no sistema de empacotamento do Debian Al m disso o banco de dados utilizado para nos testes foi o MySQL 5 0 com suporte InnoDB O banco de dados MySQL j vem sendo utilizado em outras solu es do Interlegis como o SAPL Al m disso a infra estrutura descrita na especifica o relatada no Relat rio 1 foi cuidadosamente observada 4 Detalhamento T cnico O c digo fonte desenvolvido baseia se fortemente na t cnica de monkey patch vide http en wikipedia org wiki Monkey patch t cnica utilizada para alterar o comportamento de um c digo fonte sem efetivamente ter que alter lo Esse tipo de t cnica usual em linguagens din micas como Python e justifica se pela necessidade de alterar a forma como partes internas do framework Archetypes funcionam sem a necessidade de manter uma vers o pr pria do framework Todos os monkey patchs desenvolvidos seguem um design pattern conhecido e j adotado em outros Plone Products O c digo fonte da t cnica segue abaixo from interlegis sglalchemystorage config import logger PATTERN interlegis sgqlalchemystorage amp s _ def calliself
8. pl patch wrap method klass addReference ATSAReferenceable addReference patch wrap method klass deleteReference ATSAReferenceable deleteReference patch wrap method klass deleteReferences AT5SAReferenceable deleteReferences config logger warn Referenceable patches applied for 5 klass name def patch reterencetield Tfield klass klass name klass name fpattern interlegis sglalchemypstorage amp s klass name 5 config Logger warn Applying ReferenceField patches for amp s klass name patch wrap method Tfield set ATSAReferenceField set Tfield config logger warn ReferenceField patches applied for amp s klass name O trecho acima exibe quais m todos foram embrulhados com monkeys patchs e encontra se no final do m dulo references py Nesse mesmo m dulo encontramos a implementa o dos patches propriamente ditos Abaixo segue alguns exemplos de como foi poss vel mudar o comportamento dos m todos para passar a persistir as informa es que antes eram mantidas no ZODB e agora podem ser persistidas em um banco de dados relacional utilizando o framework SQLAlchemy def ATSAReterenceable getRelationships self W hat kinds of relationships does this object have db get database selTf rm db mappers reference catalog return list set ref relationship for ref in db session query rm Tfilter by sourceuid selT UID def ATSAReterenceable getBRelationships self IE JE AI

Download Pdf Manuals

image

Related Search

Related Contents

Samsung 2333HD  Mr. Coffee PL13 User's Manual  Lightolier TU Turret TU-Series User's Manual  pure::variants User`s Guide  Sony HTP-78SS User's Manual  Hewlett Packard Enterprise 3 year 4 hour 24x7 BB908A 4900 44TB Capacity Expansion Proactive Service  JVC VN-C3WU User's Manual  um en fl switch smcs - Onlinecomponents.com  RI-200 and RI-210 Repeater Controller V2.02 User Manual    

Copyright © All rights reserved.
Failed to retrieve file