Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS

3,733 views
3,623 views

Published on

Apresentação feita durante a PHP Conference 2008 sobre Desenvolvimento de Aplicativos com Zend Framework e banco de dados CDS/ISIS

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,733
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
79
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS

  1. 1. Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS Domingos Teruel http://www.dteruel.com.br Osasco, 27 – 29 de novembro 2008
  2. 2. Experiência Profissional Tecnólogo em computação cursando especialização em SistemasWeb e Interface de Usuários; Atua na área de desenvolvimento e implementação de projetos de sistemas web-based em Software Livre, trabalha com PHP desde 1999. Analista de Sistemas da instituição ONU/OMS/OPAS/BIREME desde 2004
  3. 3. Quem esta na Platéia? <ul><li>Fãs de Software Livre ? </li></ul><ul><li>Estudantes ? </li></ul><ul><li>Desenvolvedores Avançado de PHP ? </li></ul><ul><li>Desenvolvedores de outras Linguagens ? </li></ul><ul><li>Todas as opções acima ! </li></ul><ul><li>Nenhuma das outras opções !! </li></ul>
  4. 4. Linha da apresentação <ul><li>Apresentação do CDS/ISIS </li></ul><ul><li>Entendendo bases de dados textual </li></ul><ul><li>Estrutura de dados </li></ul><ul><li>CDS/ISIS e Web </li></ul><ul><li>Integração com PHP </li></ul><ul><li>Integração com Zend Framework </li></ul><ul><li>Desenvolvimento de um Projeto </li></ul>
  5. 5. Quem está usando CDS/ISIS <ul><li>UNESCO </li></ul><ul><li>Ministério da Saúde/Educação </li></ul><ul><li>Bibliotecas </li></ul><ul><li>Instituições Públicas/Privadas da América Latina e Caribe </li></ul>
  6. 6. CDS/ISIS Computerized Documentation System / Integrated Set of Information System
  7. 7. CDS/ISIS - Definições <ul><li>CDS/ISIS é um sistema genérico de Armazenamento e Recuperação de Informação </li></ul><ul><li>É um sistema desenvolvido para ser usado por bases de dados estruturadas não-numéricas cujo conteúdo é em sua maioria textual </li></ul><ul><li>É especializado para conteúdo informacionais de tamanho variável </li></ul><ul><li>Funciona como sistema de base de dados local ou em rede </li></ul>
  8. 8. CDS/ISIS - Definições <ul><li>Como o Dbase ou MS-Access, CDS/ISIS não é um sistema de banco de dados relacional, embora também possibilite algumas facilidades relacionais </li></ul><ul><li>CDS/ISIS possibilita realizar buscas, tais como: “Quais os projetos que tratam de pesquisa em Software Livre na Índia” </li></ul><ul><li>Expansível </li></ul><ul><li>Dispõe de uma grande variedade de soluções para a publicação de dados na Internet </li></ul>
  9. 9. CDS/ISIS - O que é uma base de dados? <ul><li>O termo “base de dados” significa uma coleção estruturada de informações </li></ul><ul><li>Uma base de dados contém elementos de dados chamados “registros” </li></ul><ul><li>Cada registro da base de dados tem a mesma estrutura </li></ul><ul><li>Algumas unidades de informação em um registro podem estar ausentes , outras podem ocorrer mais de uma vez </li></ul><ul><li>As unidades de informação em um registro são chamadas de “campos” , os quais podem conter “subcampos” </li></ul>
  10. 10. CDS/ISIS – O que é uma base de dados? Base de dados Campo 1 Campo 2 Campo 3 Campo 4 ausente Campo 1 Campo 2 Campo 3 ausente Campo 4 ausente Campo 1 Campo 2 Campo 3 Campo 4
  11. 11. CDS/ISIS – Noções Básicas <ul><li>Registros são armazenados em um arquivo chamado “Master File” (MST) </li></ul><ul><li>Cada registro possue um identicador único, chamado “Master File Number” (MFN) </li></ul><ul><li>O MFN é automaticamente atribuído na criação do registro </li></ul><ul><li>Campos de um registro são identificados por um código numérico chamado TAG (etiqueta) </li></ul><ul><li>O acesso ao dado pode ser feito por MFN ou pelo conteúdo </li></ul><ul><li>Para isso, deve-se manter um dicionário de termos de busca, chamado “Arquivo Invertido” (Inverted File) </li></ul>
  12. 12. CDS/ISIS – Noções Básicas <ul><li>O dicionário de termos de busca é construído de acordo com os critérios estabelecidos pelo criador da base de dados </li></ul><ul><li>Critérios são padrões que instruem o ISIS como extrair os termos de busca de um registro </li></ul><ul><li>Os critérios são coletados da “Field Selection Table” (FST) (tabela de seleção do campo) </li></ul>
  13. 13. CDS/ISIS – Noções Básicas Base de dados FST Dicionário
  14. 14. WWWISIS: Web-based CDS/ISIS Database Server <ul><li>WWWISIS é um sistema especialmente concebido para atuar como servidor de bases de dados ISIS na World Wide Web em ambientes Cliente/Servidor </li></ul><ul><li>WWWISIS foi desenvolvido pela UNESCO, é mantido e distribuído pela BIREME, para os países da América Latina e do Caribe. BIREME é um centro especializado da OPAS/OMS </li></ul><ul><li>WWWISIS está na versão 7.1 </li></ul>
  15. 15. WWWISIS: Web-based CDS/ISIS Database Server <ul><li>Objetivo/ uso: WWWISIS é um programa concebido para servir como servidor para o CDS/ISIS. É uma biblioteca em C completa para administração e manipulação de bases de dados </li></ul><ul><li>Disponibilidade </li></ul><ul><ul><ul><li>O WWWISIS está disponível livremente para várias plataformas. </li></ul></ul></ul><ul><ul><ul><ul><li>http://bvsmodelo.bvsalud.org </li></ul></ul></ul></ul><ul><li>Exemplos de uso e documentação </li></ul><ul><ul><ul><ul><li>http://bvsmodelo.bvsalud.org </li></ul></ul></ul></ul>
  16. 16. WWWISIS - Características <ul><li>WWWISIS sua operação é conduzida por parâmetros </li></ul><ul><ul><li>Os principais parâmetros são: </li></ul></ul><ul><ul><ul><li>Nome da Base de Dados (db) </li></ul></ul></ul><ul><ul><ul><li>Expresão de Busca (booleana) e </li></ul></ul></ul><ul><ul><ul><li>especificação de formato de saída (pft) </li></ul></ul></ul><ul><ul><li>Podem ser gerados dinamicamente </li></ul></ul><ul><li>WWWISIS pode ser chamado diretamente na linha de comando ou como um script CGI </li></ul>
  17. 17. WWWISIS - Características <ul><li>CDS/ISIS linguagem de formato é suportado pelo WWWISIS </li></ul><ul><li>Parâmentros de pesquisa podem ser passadas através de formulários, via CGI </li></ul><ul><li>WWWISIS: Interface de indexação </li></ul><ul><ul><li>Multi-record file (ex. Registros biblografico para arquivo) </li></ul></ul><ul><ul><li>Suporta vários formatos de arquivos </li></ul></ul><ul><ul><li>Stop words : Sim </li></ul></ul><ul><ul><li>Indexação em nivel de campo: Sim </li></ul></ul>
  18. 18. WWWISIS - Características <ul><li>WWWISIS – Interface de Pesquisa </li></ul><ul><ul><li>Suporte a operadores Boleanos (AND, OR e AND NOT) </li></ul></ul><ul><ul><li>Pesquisa por proximidade </li></ul></ul><ul><ul><li>Truncamento </li></ul></ul><ul><ul><li>Pesquisa em nivel de campo </li></ul></ul><ul><li>WWWISIS – Performance de Pesquisa e Indexação </li></ul><ul><ul><li>Não há necessidade de arquivos ou comandos adicionais, somente a base de dados </li></ul></ul><ul><ul><li>Tempo de resposta (pesquisas simples e complexas) </li></ul></ul><ul><ul><ul><li>Eficiente e rápida </li></ul></ul></ul>
  19. 19. WWWISIS – Integrando com PHP <ul><li>Biblioteca WXIS-MODULES </li></ul><ul><ul><li>Conjunto de scripts WWWIsis que permite, de maneira simples, recuperar em formato XML as informacões da bases de dados CDS/ISIS </li></ul></ul><ul><ul><ul><li>WXIS_LIST => Recuperação e listagem de registros </li></ul></ul></ul><ul><ul><ul><li>WXIS_SEARCH => Pesquisa </li></ul></ul></ul><ul><ul><ul><li>WXIS_INDEX => Listagem do indíce do dicionário de dados </li></ul></ul></ul><ul><ul><ul><li>WXIS_EDIT => Bloqueio de registros </li></ul></ul></ul><ul><ul><ul><li>WXIS_WRITE => Inserção e atualização de registros </li></ul></ul></ul><ul><ul><ul><li>WXIS_DELETE => Exclusão de registros </li></ul></ul></ul><ul><ul><ul><li>WXIS_CONTROL => Funções de controle: status, geração do dicionário de dados e desbloqueio de registros </li></ul></ul></ul>
  20. 20. WWWISIS – Integrando com PHP <ul><li>Classe DB_ISIS </li></ul><ul><ul><ul><li>Classe que encapsula a biblioteca WXIS-MODULES </li></ul></ul></ul><ul><ul><ul><li>Tem caracteristicas de um PDO fornecendo os métodos para acesso e manipulação da base de dados de forma mais transparente </li></ul></ul></ul>
  21. 21. WWWISIS – Integrando com ZendFramework <ul><li>Preparando o Ambiente </li></ul><ul><ul><li>Baixar o ZendFramework </li></ul></ul><ul><ul><ul><li>http://framework.zend.com/download </li></ul></ul></ul><ul><ul><li>Baixar o utilitário WWWISIS e a base de exemplo CDS/ISIS </li></ul></ul><ul><ul><ul><li>http://bvsmodelo.bvsalud.org/php/level.php?lang=pt&component=28&item=2 </li></ul></ul></ul><ul><ul><li>Baixar a biblioteca WXIS-MODULES </li></ul></ul><ul><ul><ul><li>http://productos.bvsalud.org/docs/level2.php?channel=links&lang=pt&graphic=yes&lang=pt&graphic=yes </li></ul></ul></ul>
  22. 22. WWWISIS – Integrando com ZendFramework <ul><li>Preparando o Ambiente </li></ul><ul><ul><li>Estrutura de diretórios </li></ul></ul><ul><ul><ul><li>application </li></ul></ul></ul><ul><ul><ul><ul><li>Contém todo o código da sua aplicação </li></ul></ul></ul></ul><ul><ul><ul><li>library </li></ul></ul></ul><ul><ul><ul><ul><li>Contém todas as bibliotecas necessárias utilizadads na aplicação (ZF, WXIS-MODULES) </li></ul></ul></ul></ul><ul><ul><ul><li>htdocs </li></ul></ul></ul><ul><ul><ul><ul><li>Contém os arquivos públicos, incluindo o arquivo bootstrap </li></ul></ul></ul></ul><ul><ul><ul><li>cgi-bin </li></ul></ul></ul><ul><ul><ul><ul><li>Contém o CGI wxis.exe </li></ul></ul></ul></ul><ul><ul><ul><li>bases </li></ul></ul></ul><ul><ul><ul><ul><li>Contém todos os arquivos CDS/ISIS (Arquivos Mestres, Arquivo Invertidos) </li></ul></ul></ul></ul>
  23. 23. WWWISIS – Integrando com ZendFramework <ul><li>Configurando o Servidor Web (Apache) </li></ul><ul><ul><ul><li>VirutalHost </li></ul></ul></ul><ul><ul><ul><ul><li><VirtualHost *> ServerName wwwisis.local DocumentRoot /home/aplicacoes/wwwisis/htdocs <Directory &quot;/home/aplicacoes/wwwisis/htdocs&quot;> AllowOverride None Options FollowSymLinks MultiViews </Directory> DirectoryIndex index.htm index.php homepage.htm index.html default.htm default.html ScriptAlias /cgi-bin/ /home/aplicacoes/wwwisis/cgi-bin/ ErrorLog logs/wwwisis-error.log CustomLog logs/wwwisis-access-.log combined </VirtualHost> </li></ul></ul></ul></ul><ul><ul><ul><li>wwwisis/.htaccess </li></ul></ul></ul><ul><ul><ul><ul><li>RewriteEngine on RewriteRule !.(css|ico|js|swf|png|gif|jpg)$ index.php </li></ul></ul></ul></ul>
  24. 24. WWWISIS – Integrando com ZendFramework <ul><li>Criando do Arquivo de Configuração </li></ul><ul><ul><li>application/database.def </li></ul></ul><ul><ul><ul><ul><li>[cds] base_path=/home/wwwisis/bases/cds fst_path=/home/wwwisis/bases/cds/cds.fst </li></ul></ul></ul></ul>
  25. 25. WWWISIS – Integrando com ZendFramework <ul><li>O arquivo bootstrap </li></ul><ul><li>... </li></ul><ul><li>Zend_Loader::loadClass('Zend_Controller_Front'); </li></ul><ul><li>Zend_Loader::loadClass('Zend_Config_Ini'); </li></ul><ul><li>Zend_Loader::loadClass('Zend_Registry'); </li></ul><ul><li>// load configuration </li></ul><ul><li>$config = new Zend_Config_Ini('../application/database.def', 'cds'); </li></ul><ul><li>$registry = Zend_Registry::getInstance(); </li></ul><ul><li>$registry->set('config', $config); </li></ul><ul><li>//setup database </li></ul><ul><li>$conn = Zend_Db::factory('DB_ISIS', $params); </li></ul><ul><li>$db = new Database($conn); </li></ul><ul><li>Zend::register('db', $db); </li></ul><ul><li>... </li></ul>
  26. 26. WWWISIS – Integrando com ZendFramework <ul><li>IndexController </li></ul><?php class IndexController extends Zend_Controller_Action { public function indexAction() { /* show main page. */ $db = Zend::registry('db'); $view = Zend::registry('view'); $view->title = 'CDS – Isis na pratica'; echo $view->render('index.php'); } public function noRouteAction() { $this->_redirect('/'); echo 'norouteaction'; } }
  27. 27. WWWISIS – Integrando com ZendFramework <ul><li>AddController </li></ul><?php Zend::loadClass('Zend_Controller_Action'); Zend::loadClass('Zend_View'); class AddController extends Zend_Controller_Action { function indexAction() { $this->_redirect('/'); } function newAction() { /* Display registration form. */ $db = Zend::registry('db'); $view = Zend::registry('view'); $view->title = 'CDS – Isis na pratica'; echo $view->render('view.php'); } ...
  28. 28. WWWISIS – Integrando com ZendFramework <ul><li>AddController </li></ul>... $fname = $filterPost->testAlpha('fname'); $lname = $filterPost->testAlpha('lname'); if (!$error) { $exists = $db->checkIfMemberAlready($email); ... $doc = new DOMDocument(); $root = $doc->createElement(&quot;member&quot;); $doc->appendChild($root); foreach ( $_POST as $key => $value ) { $elem = $doc->createElement($key); $root->appendChild($elem); $elemtext = $doc->createTextNode($value); $elem->appendChild($elemtext); } $myDoc = new Zend_Db_Xml_XmlContent($doc); $about = new DOMDocument(); $abtRoot = $about->createElement(&quot;contacts&quot;); $about->appendChild($abtRoot); $myDoc->about = $about; $db->saveNew($myDoc); $id = $myDoc->id; $db->addMember($id, $email, $passwd, $fname, $lname); $_SESSION['CONTACTS_SESSION'] = session_id(); $_SESSION['xmlid'] = $id; echo $view->render('thanks.php'); } else { session_destroy(); echo $view->render('error.php'); } ...
  29. 29. Caso de Uso
  30. 30. Caso de Uso
  31. 31. Caso de Uso
  32. 32. Caso de Uso
  33. 33. Referências <ul><li>Página Oficial </li></ul><ul><ul><ul><li>www.unesco.org/webworld/isis/isis.htm </li></ul></ul></ul><ul><li>Distribuição CDS/ISIS no Brasil </li></ul><ul><ul><ul><li>http://bvsmodelo.bvsalud.org </li></ul></ul></ul><ul><li>Tutorial de CDS/ISIS </li></ul><ul><ul><ul><li>http://www.ndc.uff.br/TRF/Isis_Tutorial%20em%20portugues.ppt </li></ul></ul></ul><ul><li>Diretório de links sobre ISIS </li></ul><ul><ul><ul><li>http://productos.bvsalud.org/docs/level2.php?channel=links&lang=pt&graphic=yes&lang=pt&graphic=yes </li></ul></ul></ul>
  34. 34. Agradecimentos <ul><li>ONU/OMS/OPAS/BIREME </li></ul><ul><li>PHP Conference </li></ul><ul><li>Você </li></ul>
  35. 35. Dúvidas e comentários?
  36. 36. Obrigado [email_address] http://meadiciona.com/mingomax

×