Ferramenta para Gerao de Relatrios em Bancos de Dados utilizando Linguagens de Quarta Gerao
ANDR RICARDO ROLIM DOS REIS
Recife, Dezembro de 2011 ANDR RICARDO ROLIM DOS REIS
Ferramenta para Gerao de Relatrios em Bancos de Dados utilizando Linguagens de Quarta Gerao
Monografia apresentada ao Centro de Informtica da Universidade Federal de Pernambuco como requisito parcial para obteno do Grau de Bacharel em Cincia da Computao.
ORIENTADOR: FERNANDO DA FONSECA DE SOUZA
Recife, Dezembro de 2011
Aos meus pais, Jos e Zilsina.
AGRADECIMENTOS
Primeiramente agradeo a Deus por ter me proporcionado sade e energia para a realizao de todo o meu curso e deste trabalho. Agradeo a meus pais, Jos e Zilsina, pelos valores a mim ensinados, pelo esforo incondicional para me proporcionar boa qualidade de vida e por serem o alicerce fundamental sem o qual eu no estaria aqui. Agradeo ao meu irmo, Arthur Felipe, por estar sempre ao meu lado, meu companheiro de quarto de estudo e de dormir. Em breve ele estar concluindo seu curso tambm. Agradeo a minha namorada Thas, pelo apoio irrestrito em horas difceis, minha companheira de todas as horas, por sempre ser to carinhosa e incentivadora mesmo nos momentos mais complicados. O seu carinho e ateno significam muito para mim. Agradeo ao meu orientador Fernando Fonseca que me deu total apoio e se mostrou totalmente prestativo para discutir o tema deste trabalho, mesmo eu tendo o procurado tardiamente. Agradeo a meus amigos de escola (em especial a Felipe e Alan) que me acompanham at hoje num lao forte de amizade e camaradagem. Agradeo a meus amigos do Centro de Informtica, pelos bons e maus momentos passados juntos durante esta jornada, nas dificuldades das noites viradas e projetos concludos (ou no) em cima da hora. Agradeo tambm aos meus companheiros de estgio, pelo ambiente de trabalho agradvel, pela troca de informaes e conhecimentos, to importantes para o meu desenvolvimento profissional.
Se voc quer ser bem sucedido, precisa ter dedicao total, buscar seu ltimo limite e dar o melhor de si mesmo. AYRTON SENNA
RESUMO
As ferramentas existentes atualmente pertencentes categoria Reporting Tools permitem que o usurio crie conjuntos de dados a partir de resultados de consultas SQL (Structured Query Language), mas no possuem opo para o usurio criar funes (functions) e procedimentos (procedures). Estas rotinas de linguagens de programao de quarta gerao estendem o poder de SQL, adicionando construes comuns em linguagens procedurais,tornando-a bastante poderosa e tendo um papel importante na criao de relatrios mais complexos. Assim, o principal objetivo deste trabalho estender o modelo atual de ferramentas de gerao de relatrios para permitir o emprego de linguagens de quarta gerao de sistemas de bancos de dados,sem a necessidade de escrita de cdigo, a partir de elementos grficos.
Palavras-chave:Banco de dados,Reporting Tools, Linguagens de programao de quarta gerao.
ABSTRACT
Currently, tools belonging to theReporting Tools category allow their users to create data sets from the results of SQL (Structured Query Language) queries, but do not present option to create functions and procedures. These routines of fourth generation programming languages extend the SQL power, adding common constructions from procedural languages, making it sufficiently powerful to play an important role in the creation of more complex reports. Thus, the main objective of this work is to extend the current model of reports generation tools to allow the deployment of fourth generation languages of database systems from graphical elements, with no need for code writing.
FIGURA 2.1 - TELA PRINCIPAL DO ORACLE SQL DEVELOPER. .................................................................................. 14 FIGURA 2.2 - CRIAO DE PROCEDIMENTO COM O ORACLE SQL DEVELOPER. .......................................................... 15 FIGURA 2.3 - TELA PRINCIPAL DO MYSQL WORKBENCH. ........................................................................................ 16 FIGURA 2.4 - CRIAO DE PROCEDIMENTO COM O MYSQL WORKBENCH. ................................................................ 17 FIGURA 3.1 - ARQUITETURA EMF (ECLIPSECON 2008 - IBM CORP.) ........................................................................ 20 FIGURA 3.2 - GMF DASHBOARD (ECLIPSE FOUNDATION) ........................................................................................ 22 FIGURA 3.3 - TRECHO DE CDIGO EM EVL. ............................................................................................................. 24 FIGURA 3.4 - EXEMPLO DE CDIGO EGL. ................................................................................................................ 25 FIGURA 3.5 - EXEMPLO DE CDIGO EWL. ............................................................................................................... 26 FIGURA 3.6 - SINTAXE DE UM PROCEDIMENTO ORACLE PL/SQL (ORACLE DATABASE PL/SQL USER'S GUIDE AND REFERENCE)........................................................................................................................................... 27 FIGURA 3.7 SINTAXE DE DECLARAO DE UM PARMETRO EM ORACLE PL/SQL (ORACLE DATABASE PL/SQL) ....................................................................................................................................................... 28 FIGURA 3.8 - EXEMPLO DE CDIGO PL/SQL COM DECLARAES DE VARIVEIS........................................................ 29 FIGURA 3.9 - EXEMPLO DE CDIGO PL/SQL COM DECLARAO DE CURSOR ............................................................. 29 FIGURA 3.10 - EXEMPLO DE CDIGO PL/SQL COM ATRIBUIES.............................................................................. 29 FIGURA 3.11 - SINTAXE DO COMANDO IF (ORACLE DATABASE PL/SQL USER'S GUIDE AND REFERENCE) ............... 30 FIGURA 3.12 - SINTAXE DO COMANDO LOOP (ORACLE DATABASE PL/SQL USER'S GUIDE AND REFERENCE) ........ 30 FIGURA 3.13 - SINTAXE DO COMANDO WHILE-LOOP (ORACLE DATABASE PL/SQL USER'S GUIDE AND REFERENCE) .................................................................................................................................................. 31 FIGURA 3.14 - SINTAXE DO COMANDO FOR-LOOP (ORACLE DATABASE PL/SQL USER'S GUIDE AND REFERENCE) .................................................................................................................................................. 31 FIGURA 4.1 - INTERFACE GRFICA DO PROTTIPO: PACKAGEEXPLORER (1), EDITORAREA (2), PALETTE (3), PROPERTIES (4) E OUTLINE (5). ....................................................................................................................... 35 FIGURA 4.2 - LOCALIZAO DO BOTO PARA GERAO DE CDIGO DO PROCEDIMENTO. ........................................... 36 FIGURA 4.3 - JANELA PARA GERAO DO CDIGO DO PROCEDIMENTO (PROCEDURE GENERATION). ............................ 36 FIGURA 4.4 - INTERFACE GRFICA PARA CRIAO DE CONSULTAS SQL. ................................................................... 37 FIGURA 4.5 - INTERFACE PARA ESCOLHA DE COLUNA/LINHA DA TABELA. ................................................................. 38 FIGURA 4.6 - OS TRS COMPONENTES PRINCIPAIS DO DIAGRAMA: PARAMETER SET, DECLARE BLOCK E BODY BLOCK. ......................................................................................................................................................... 38 FIGURA 4.7 - REPRESENTAO DOS ELEMENTOS PARAMETER (1) E REFCURSOR (2). .................................................. 39 FIGURA 4.8 - REPRESENTAO DOS ELEMENTOS NUMBER (1), ROWTYPE (2), TYPE (3) E CURSOR (4). .......................... 40 FIGURA 4.9 REPRESENTAO DOS ELEMENTOS ASSIGN (1), IF (2), ELSEIF (3), ELSE (4), LOOP (5), ........................... 41 FIGURA 5.1- INTERFACE GRFICA DO PROGRAMA ECLIPSE BIRT. ............................................................................. 42 FIGURA 5.2 - TABELA PERSON. ............................................................................................................................. 43 FIGURA 5.3 - DIAGRAMA DO PROCEDIMENTO MODELADO......................................................................................... 44 FIGURA 5.4 - UTILIZAO DO QUERYBUILDER PARA CRIAO DA CONSULTA. ........................................................... 44 FIGURA 5.5 - GERAO DO CDIGO DO PROCEDIMENTO E ARMAZENAMENTO NO BANCO DE DADOS. .......................... 45 FIGURA 5.6 - CDIGO DO PROCEDIMENTO GERADO. ................................................................................................. 45 FIGURA 5.7 - RELATRIO GERADO PELO ECLIPSE BIRT CHAMANDO O PROCEDIMENTO CRIADO. ................................ 46
LISTA DE TABELAS
QUADRO 1 - RESUMO DAS PRINCIPAIS CARACTERSTICAS DOS SISTEMAS ANALISADOS............................................... 18
LISTA DE ABREVIATURAS E SIGLAS
4GL Fourth-Generation Language API Application programming interface CASE Computer-Aided Software Engineering DSL Domain-Specific Language EGL Epsilon Generation Language EMF Eclipse Modeling Framework EOL Epsilon Object Language Epsilon Extensible Platform of Integrated Languages for mOdelmaNagement EVL Epsilon Validation Language EWL Epsilon Wizard Language GEF Graphical Editing Framework GMF Graphical Modeling Framework HTML HyperText Markup Language PDF Portable Document Format PL/SQL Procedural Language/Structured Query Language SQL Structured Query Language UML Unified Modeling Language XML eXtensible Markup Language SUMRIO
1. INTRODUO ........................................................................................................................... 11 1.1. Motivao .............................................................................................................................. 11 1.2. Objetivos ................................................................................................................................ 12 1.3. Estrutura do trabalho............................................................................................................... 12 2. ESTADO DA ARTE .................................................................................................................... 14 2.1. Oracle SQL Developer ............................................................................................................ 14 2.2. MySQL Workbench................................................................................................................ 16 2.3. Resumo das Caractersticas ..................................................................................................... 18 3. CONCEITOS E TECNOLOGIAS ................................................................................................ 19 3.1. Eclipse Modeling Project ........................................................................................................ 19 3.2. Oracle PL/SQL ....................................................................................................................... 26 3.2.1. Subprogramas Oracle PL/SQL ........................................................................................ 26 3.2.2. Procedimentos Oracle PL/SQL ........................................................................................ 27 4. A FERRAMENTA ....................................................................................................................... 33 4.1. Tecnologias Propostas ............................................................................................................ 33 4.2. Funcionamento da Ferramenta ................................................................................................ 34 4.3. Interface Grfica ..................................................................................................................... 34 4.3.1. Ambiente do Eclipse ....................................................................................................... 34 4.3.2. Gerao do cdigo do procedimento................................................................................ 36 4.3.3. Criao de consultas SQL ............................................................................................... 37 4.3.4. Interface para seleo de colunas e tabelas ...................................................................... 37 4.3.5. Diagrama de modelagem ................................................................................................. 38 5. ESTUDO DE CASO .................................................................................................................... 42 5.1. Eclipse BIRT .......................................................................................................................... 42 5.2. Mtodo utilizado ..................................................................................................................... 43 6. CONSIDERAES FINAIS E TRABALHOS FUTUROS .......................................................... 47 6.1. Contribuies ......................................................................................................................... 47 6.2. Dificuldades Encontradas ....................................................................................................... 47 6.3. Trabalhos Futuros ................................................................................................................... 47 REFERNCIAS BIBLIOGRFICAS .................................................................................................... 49 APNDICE A Passo a passo para a criao do diagrama ..................................................................... 52 ANEXO A Exemplo de cdigo Emfatic ............................................................................................... 56 ANEXO B Tipos de dados predefinidos em Oracle ............................................................................. 57
11
1. INTRODUO
Um relatrio um trabalho textual que rene um conjunto de informaes com a inteno especfica de reportar resultados parciais ou totais a respeito de determinados eventos de uma forma bem apresentvel. Relatrios mais complexos podem incluir elementos adicionais, como grficos, tabelas, figuras, imagens, resumos, sumrios, referncias, entre outros. Relatrios so usados no mundo dos negcios, governo, educao, cincia e em outros campos. Com a expanso crescente da tecnologia da informao e o desejo de competitividade nas empresas, tem havido um aumento na utilizao de recursos computacionais para produo de relatrios unificados que juntam diferentes vises da empresa em um s lugar. Este processo denominado Enterprise Reporting e envolve a consulta de fontes de dados com diferentes modelos lgicos para produzir um relatrio legvel para humanos. Esses relatrios so atualizados regularmente e fornecem informaes aos tomadores de deciso dentro de uma organizao, por exemplo, auxiliando-os em seu trabalho[1]. 1.1. Motivao De acordo com a complexidade dos elementos que compem o relatrio, a sua criao pode ser uma tarefa complicada. Por isso, existem ferramentas para gerao de relatrios (Reporting Tools) que permitem que o usurio crie relatrios de forma rpida e fcil. Essas ferramentas permitem que informaes sejam carregadas de diferentes fontes de dados (bancos de dados e XML [2], por exemplo) e sejam apresentadas na forma de tabelas, listas, grficos, textos, entre outros [3]. Caso a fonte de dados seja um banco de dados, informaes podem ser extradas atravs de consultas SQL [4] e rotinas de linguagens de programao de quarta gerao, como procedimentos e funes. Aps o seu desenvolvimento, o relatrio formatado pode ser facilmente exportado para inmeros formatos comuns de sada como PDF [5], Excel[6], Word[7] e HTML [8]. As linguagens de programao de quarta gerao, ou 4GL 1 em sua abreviatura de origem inglesa, so linguagens com objetivos especficos, muitas vezes comparadas s linguagens de
1 Fourth-generation languages. 12
domnio especfico (DSLs 2 ) [9], [10]. Algumas 4GL so especficas para banco de dados e so chamadas de Database Query Languages. Estas so linguagens bastante poderosas que permitem o acesso e manipulao de informaes provenientes de uma base de dados e podem ser aplicadas na gerao de relatrios, por exemplo. Um exemplo de linguagem de quarta gerao especfica para banco de dados o Oracle PL/SQL que estende a linguagem SQL pela adio de construes encontradas em linguagens procedurais [11]. 1.2. Objetivos Este trabalho foi desenvolvido com o objetivo geral de criar um mecanismo para a criao de procedimentos a partir de elementos grficos, sem a necessidade de escrita de cdigo.Estes procedimentos criados sero aplicados na gerao de relatrios, juntamente com alguma ferramenta de criao de relatrios (Reporting Tool). Sendo assim, a ferramenta gerada neste trabalho funcionar como uma extenso para qualquer outra ferramenta de Reporting Tools que d suporte utilizao de procedimentos armazenados(stored procedures). Este trabalho tem como objetivos especficos: 1) definir a melhor alternativa tecnolgica disponvel atualmente para o desenvolvimento de ferramentas grficas de modelagem; 2) desenvolver um prottipo da ferramenta proposta que permita a modelagem grfica do procedimento e gerao de cdigo; 3) visualizar o retorno do procedimento em forma de relatrio utilizando alguma ferramenta de gerao de relatrios. 1.3. Estrutura do trabalho No presente captulo, foram apresentadas a motivao e os objetivos deste trabalho de graduao. Nesta seo, so apresentados os demais captulos. O captulo 2, ESTADO DA ARTE, apresenta uma anlise de alguns sistemas de desenvolvimento de banco de dados que apresentam algum suporte criao de procedimentos. O captulo 3, CONCEITOS ETECNOLOGIAS, apresenta a metodologia utilizada para o desenvolvimento do trabalho e a fundamentao tericadas tecnologias necessrias na construo da ferramenta.
2 Domain-specific languages. 13
O captulo 4, A FERRAMENTA, apresenta o prottipo desenvolvido da ferramenta proposta para a criao de procedimentos utilizando elementos grficos. O captulo 5, ESTUDO DE CASO, apresenta a utilizao do prottipo desenvolvido em conjunto com uma ferramenta de gerao de relatrios No captulo 6,CONSIDERAES FINAIS E TRABALHOS FUTUROS, so apresentadas as concluses e contribuies deste trabalho, as dificuldades verificadas durante a sua produo e sugeridas possibilidades de trabalhos futuros. Logo em seguida, as referncias bibliogrficas utilizadas na realizao deste trabalho so listadas. No Apndice A encontra-se um tutorial de como criar um diagrama com a ferramenta desenvolvida neste trabalho.
14
2. ESTADO DA ARTE
Neste captulo ser analisado o suporte provido por dois sistemas de gerenciamento e desenvolvimento de banco de dados para a criao de procedimentos. Foram escolhidos o Oracle SQL Developer e o MySQL Workbench pela principal motivao de serem ferramentas gratuitas e amplamente utilizadas no desenvolvimento de aplicaes que utilizam o Oracle ou o MySQL como SGBD. 2.1. Oracle SQL Developer OracleSQLDeveloper[12] uma ferramenta grfica gratuita para desenvolvimento de banco de dadosno sistema Oracle. Com o SQLDeveloper, possvel navegar atravs dos objetos de banco de dados (tabelas, tipos, procedimentos, funes, entre outros), executar comandos e scripts SQL, e editar e depurar rotinas PL/SQL. Alm disso, o programa fornece um conjunto de relatrios e tambm permite a criao de relatrios customizados. O SQL Developer compatvel com a verso 10g do sistema de banco de dados Oracle ou uma mais recente, e executa no Windows, Linux e Mac OSX[13].A Figura 2.1 ilustra a tela principal do sistema.
Figura 2.1 - Tela principal do Oracle SQL Developer. 15
Em relao ao suporte criao de procedimentos PL/SQL, o SQL Developer permite que o desenvolvedor escolha um esquema no qual a rotina ser inserida, defina seu nome e seus parmetros. Para cada parmetro possvel determinar o identificador (nome), o tipo de dados (VARCHAR2, NUMBER, DATE, CLOB ou BLOB), o tipo do argumento (IN, OUT, IN OUT) e o valor inicial padro. A partir desses dados, o programa gera o cdigo do procedimento que inclui o cabealho e o corpo vazio.Alm disso, oreferido programapossui um editor de textos que destaca as construes de PL/SQL, indica erros e possui a funoautocomplete 3 , facilitando o desenvolvimento. A Figura 2.2 mostra a janela de criao de procedimentosdo sistema.
Figura 2.2 - Criao de procedimento com o Oracle SQL Developer.
3 Funo de preenchimento automtico baseado em contexto. 16
2.2.MySQL Workbench MySQL Workbench uma ferramenta visual unificada para arquitetos, desenvolvedores e administradores de banco de dados. O programa fornece modelagem de dados, desenvolvimento de SQL, e ferramentas administrativas para configurao de servidor e administrao de usurios, entre outros. Assim como o OracleSQL Developer, o MySQL Workbench est disponvel para os sistemas operacionais Windows, Linux e Mac OS. O MySQLWorkbench totalmente compatvel com o sistema de banco de dados MySQL, a partir da verso 5.1[14]. A Figura 2.3 ilustra a tela principal do sistema.
Figura 2.3 - Tela principal do MySQL Workbench.
O suporte criao de procedimentos do MySQL Workbench mais restrito que o encontrado no SQL Developer. Ao tentar criar um novo procedimento, o programa gera automaticamente a estrutura bsica da rotina com cabealho e corpo vazio. No h o mesmo suporte definio do nome e parmetros do procedimento, sendo necessrio editar o cdigo diretamente. O editor de textos do MySQLWorkbench tambm destaca as construes da 17
linguagem e indica quando o cdigo contm erros, embora no possua funo autocomplete. A Figura 2.4 mostra a criao de um procedimento utilizando o sistema.
Figura 2.4 - Criao de procedimento com o MySQL Workbench.
18
2.3.Resumo das Caractersticas Nesta seo ser apresentado um quadro com as principais caractersticas dos sistemas analisados relativas ao suporte criao de procedimentos. O Quadro 1 apresenta um resumo das caractersticasdo Oracle SQL Developer e do MySQL Workbench.
Quadro 1 - Resumo das principais caractersticas dos sistemas analisados. Caracterstica Oracle SQL Developer MySQL Workbench Definio de parmetros da rotina. Possui No Possui Definio de corpo da rotina. No Possui No Possui Destaque para construes da linguagem. Possui Possui Editor de texto com funo autocomplete. Possui No Possui Editor de texto com indicao de erros. Possui Possui
possvel ver claramente que o Oracle SQL Developercomparado ao MySQL Workbenchpossui mais funcionalidades que auxiliam na criao de um procedimento, sem necessidade de edio direta de cdigo. No entanto, nenhum dos dois programas analisados possui suporte definio do corpo de um procedimento. Esta a caracterstica desejvel que ser levada em consideraodurante a criao da ferramenta proposta neste documento. O prximo captulo se dedica a apresentao dos conceitos, metodologia e tecnologia empregados no desenvolvimento do trabalho proposto.
19
3. CONCEITOS ETECNOLOGIAS
Para elaborao da proposta de uma ferramenta para modelagem de procedimentos com elementos grficos, foi realizado primeiramente um estudo acerca das tecnologias necessrias para o seu desenvolvimento.Na seo 3.1 ser apresentado o conjunto de tecnologias utilizado para desenvolvimento do prottipo e na seo 3.2 ser apresentado um estudo acerca da linguagem Oracle PL/SQL, a linguagem escolhida para o desenvolvimento do prottipo. 3.1.Eclipse Modeling Project Para o desenvolvimento da ferramenta proposta foi utilizado um conjunto unificado de frameworks de modelagem, ferramentas e implementaes de padres encontrados na comunidade Eclipse[15]. Dentre eles destacam-se os seguintes frameworks: EMF (Eclipse Modeling Framework)[16]e o GMF (GraphicalModeling Framework)[17] que se destinam ao desenvolvimento de metamodelos e editores grficos para a criao de ferramentas CASE. Alm dos frameworks citados, foi utilizada a plataforma Epsilon (Extensible Platform ofIntegratedLanguages for mOdelmaNagement)[18] que prov um conjunto de linguagens destinadas a tarefas de gerenciamento de metamodelos. Os prximos tpicos apresentaro uma viso geral dos recursos acima citados. 3.1.1. Eclipse Modeling Framework (EMF) O EMF, como a prpria sigla indica, um framework de modelagem para a plataforma Eclipse. Ele utiliza as tecnologias Java[19] e XML para a gerao de ferramentas e outras aplicaes baseadas em modelo. O EMF facilita a tarefa de transformar modelos em cdigos Java corretos, eficientes e facilmente customizveis. Alm da gerao de cdigo, o framework prov a capacidade de salvar objetos diretamente em XML, formato padro para representao de dados[20]. O EMF composto por trs elementos fundamentais: 1) EMF Core, que inclui um metamodelo (Ecore) para descrio de modelos, alm de suporte em tempo de execuo para 20
estes, incluindo notificaes de alterao, suporte a persistncia e uma API 4 bastante eficiente para manipulao genrica dos objetos EMF; 2) EMF.Edit, que inclui classes genricas reusveis para a construo de editores para os modelos EMF; e 3) EMF.Codegen, que responsvel pela gerao do cdigo necessrio para a criao dos modelos e editores grficos da aplicao[20]. Os trs elementos podem ser visualizados na Figura 3.1 da arquitetura EMF.
Figura 3.1 - Arquitetura EMF (EclipseCon 2008 - IBM Corp.)
O metamodeloEcore formado pelas seguintes principais componentes: EClass, utilizado para representar uma metaclasse; EAttribute, utilizado para representar um atributo de uma EClass; EReference, utilizado para representar associaes entre classes; e EEnum, utilizado para representar enumeraes[20]. O framework EMF d suporte a trs nveis de gerao de cdigo: Modelo, que prov classes e interfaces codificadas em Java para todos os elementos pertencentes ao metamodelo; Adaptadores, que geram as classes de implementao capazes de adaptar as metaclasses do modelo para edio e visualizao; Editor, que produz uma estrutura bsica apropriada do modelo que ser utilizada na fase de gerao do editor grfico[20].
4 Conjunto de instrues e padres de programao para acesso a um aplicativo de software. 21
3.1.2. GraphicalModeling Framework (GMF) O GMF permite o desenvolvimento de editores grficos a partir de metamodelos definidos em EMF. O GMF tambm utiliza o frameworkGEF[21] que fornece recursos tecnolgicos necessrios para a concepo de ricos editores grficos e visualizaes para o Eclipse. Para o desenvolvimento de editores grficos usando GMF necessrio seguir um processo bem definido. Este processo executado com a ajuda de um painel chamado GMF Dashboard que serve como um guia para o projetista[22][23]. O GMFDashboard ilustrado na Figura3.2. possvel observar que a gerao de um editor grfico GMF contm seis passos:
1. Domain model -representa o metamodelo utilizado para criar o editor grfico. possvel import-lo de diversos tipos de fontes: cdigo Java com anotaes, modelo Ecore, modelo de classe do Rational Rose[24], modelo UML[25] ou esquema XML. Neste projeto foi utilizado o metamodeloEcore do EMF; 2. Domain GenModel -arquivo com terminao.genmodel usado para gerar o cdigo do domainmodel com EMF; 3. GraphicalDefModel - arquivo com terminao .gmfgrafh usado para definir os elementos grficos que representaro cada um dos objetos do domainmodel; 4. ToolingDefModel -arquivo com terminao .gmftool usado para definir a paleta de ferramentas usada no editor grfico. As ferramentas pertencentes paleta podem ser usadas para seleo, criao de objetos e qualquer outra ao a ser realizada no diagrama; 5. MappingModel -arquivo com terminao .gmfmap que conecta o domainmodel, o graphicalmodel (.gmfgraph) e o toolingmodel(.gmftool); e 6. Diagram Editor GenModel -arquivo final com terminao .gmfgen usado para gerar o editor grfico GMF.
22
Figura3.2 - GMF Dashboard(Eclipse Foundation)
3.1.3. Epsilon Epsilonengloba um conjunto de linguagens de programao destinadas a tarefas especficas que facilitam otrabalho de gerenciamento de modelos EMF. Algumas destas tarefas so: gerao de cdigo, transformao entre modelos, validao, comparao, migrao, merging e refactoring de modelos[26]. Dentre as linguagens e ferramentas da famlia Epsilon, destacam- se EuGENia[27], Emfatic[28][29], EOL (EpsilonObjectLanguage)[30], EVL (EpsilonValidationLanguage)[31], EGL (EpsilonGenerationLanguage)[32] e EWL (EpsilonWizardLanguage) [33]que foram utilizadas durante o desenvolvimento deste trabalho. EuGENia uma ferramenta que facilita o trabalho de gerao de editores grficos em GMF, uma tarefa que normalmente seria complexa e rdua. EuGENia automatiza o processo de criao da ferramenta CASE a partir de um simples metamodeloEcore com anotaes, expresso usando a linguagem Emfatic[27]. Emfatic uma linguagem de representao de modelos EMF Ecore, usando uma sintaxe textual compacta e legvel semelhante linguagem Java[29]. Ela d suporte definio de metaclasses, atributos de metaclasses, associaes entre metaclasses e enumeraes, alm de outros elementos do modelo EMF Ecore. possvel gerar o modelo Ecore (arquivo .ecore) a partir de um arquivo Emfatic (representado pela extenso .emf) e vice-versa. Existe um mapeamento entre declaraes Emfatic e construes Ecore, isto , para cada declaraoEmfatic h uma construo Ecore correspondente. 23
O metamodelo escrito em Emfatic pode ser enriquecido com anotaes EuGENiaque permitem definir como ser a representao grfica de cada metaclasse.Essas podem ser representadas como ns ou conexes (links) no diagrama resultante. Tambm permitido definir qual figura representar cada n (retngulo, elipse, entre outros) e como ser desenhada cada conexo (extremidade com seta, quadrado ou losango, por exemplo), entre outras configuraes. Todas estas definies so posteriormente mapeadas automaticamente em modelos GMF[27]. Todos os modelos encontrados no Dashboard GMF so gerados a partir desse metamodelo. O Anexo A apresenta um exemplo de metamodelo definido utilizando Emfatic. EVL uma linguagem que pode ser usada para, de maneira fcil e eficiente, adicionar validaes e pequenos ajustes no editor grfico GMF. Em outras palavras, possvel especificar e avaliar restries no metamodelo utilizando EVL[26]. Um exemplo de cdigo escrito em EVL pode ser visto na Figura 3.3. Em EVL, especificaes de validao so organizadas em mdulos:
Contexto (context) Um contexto especifica em quais tipos de instnciasas invariantes sero aplicadas. Na Figura 3.3, o contexto encontrado na linha 1; Invariante (invariant) Cada invariante EVL define um nome e uma verificao (check). Alm disso, a invariante pode definir uma mensagem que deve ser mostrada ao usurio quando acontecer alguma falha de restrio. Existem duas subclasses de ,9, mensagens so encontradas nas linhas 4 e 10; Guarda (guard) Elementos utilizados para restringir ainda mais o domnio de aplicabilidade das invariantes. Um guarda pode ser aplicado em termos de contexto, limitando a aplicabilidade de todas as invariantes do contexto, ou em termos de invariantes, limitando a aplicabilidade de uma invariante especfica. Na Figura 3.3, o guarda encontrado na linha 8; Correo (fix) Uma correo basicamente define as aes que sero tomadas para reparar a inconsistncia identificada. Na Figura 3.3, a correo encontrada na linha 12; Restrio (constraint) Restriesso usadas para capturar erros crticos que invalidam o modelo. Na Figura 3.3, a restrio encontrada na linha 2; Crtica (critique) Ao contrrio das restries, crticas so usadas para capturar condies no crticas do modelo, ou seja, condies que no o invalidam, mas devem ser apresentadas ao usurio. Na Figura 3.3, a crtica encontrada na linha 7. 24
Figura 3.3 - Trecho de cdigo em EVL.
EGLprov uma linguagem baseada em templates 5 com vrias funcionalidades que simplificam a tarefa de transformar modelos em textos (cdigos). Um programa EGL consiste de uma ou mais sees estticas ou dinmicas. O contedo de sees estticas transformado na ntegra e aparecem diretamente no texto criado, enquanto o contedo de sees dinmicas executado e usado para controlar o texto que criado. Uma seo dinmica delimitada por um par de tags 6 [% %]. Qualquer texto externo a esse par de tags est associado a uma seo esttica[26]. A Figura 3.4 ilustra um exemplo de cdigo escrito em EGL que gera texto no formato HTML.
5 Um formato predefinido que serve como modelo para criao de documentos ou arquivos. 6 Conjunto de caracteres que delimita um item de dados a fim de identific-lo. 25
Figura 3.4 - Exemplo de cdigo EGL.
EOL uma linguagem de programao imperativa para criao, consulta e modificao de modelos EMF. EOL possui uma sintaxe bem semelhante linguagem Javascript[34], fornecendo as caractersticas imperativas habituais como presena de variveis, comandos sequenciais, estruturas de controle e de desvio condicional, alm de outras caractersticas adicionais advindas do OCL[35].As demais linguagens Epsilon, como EGL e EVL, herdam algumas das caractersticas de EOL e podem incluir trechos de cdigo EOL em suas definies[30][26]. EWL uma linguagem utilizada para definio de transformaes no modelo atravs de wizards 7 que podem ento ser executados a partir do editor grfico EMF. Um wizard consiste de trs partes: o guarda (guard), o ttulo (title) e a ao (do). O guarda define os elementos do modeloaos quais owizard aplicado, o ttulo simplesmente prov um nome ao wizard e a ao implementa a lgica do wizard[33][26]. A Figura 3.5 mostra um exemplo de wizard e seus componentes.
7 Funcionalidade de um programa que automatiza tarefas complexas. 26
Figura 3.5 - Exemplo de cdigo EWL.
3.2.Oracle PL/SQL Oracle uma tecnologia de sistemas de banco de dados relacional que fornece recursos abrangentes e facilmente integrada com linguagens de programao, principalmente com Java. PL/SQL significa Extenses de linguagens procedurais para SQL em portugus, o que denota que PL/SQL totalmente integrado com SQL, alm de acrescentar construes de programao que no so nativas de SQL[36][37]. A linguagem PL/SQL tem uma sintaxe prpria para construo de rotinas, ento relevante que estas construes sejam estudadas. Nas prximas sees sero abordadas as construes bsicas necessrias para a criao de subprogramas usando PL/SQL. 3.2.1. Subprogramas Oracle PL/SQL
Subprogramas ou rotinas so blocos PL/SQL que podem ser chamados com um conjunto de parmetros. PL/SQL tem dois tipos de subprogramas, procedimentos e funes. Um subprograma PL/SQL composto basicamente por uma parte declarativacom declaraes de tipos, cursores, variveis; uma parte executvelcom comandos que atribuem valores, controlam a execuo e manipulam dados Oracle;euma parte opcional para manipulao de excees.A ferramenta proposta focar na modelagem de procedimentos, mas os conceitos abordados aqui tambm so vlidos para funes.
27
3.2.2. Procedimentos Oracle PL/SQL
Um procedimento um subprograma que realiza uma tarefa especfica. Procedimentos possuem essencialmente dois componentes: a especificao e o corpo. A especificao comea com a palavra-chave PROCEDURE e contm o nome e a lista de parmetros (que pode ser vazia) da rotina. O corpo aparece logo aps a lista de parmetros e iniciado com a palavra-chave IS (ou AS) e finalizado com END. Dentro do corpo h trs partes: uma parte declarativa opcional, uma parte executvel, e uma parte de manipulao de excees tambm opcional (esta ltima parte no ser tratada neste trabalho). A parte declarativa contm declarao de tipos, cursores, constantes, variveis, entre outros. A parte executvel contm comandos que atribuem valores, controlam a execuo e manipulam dados Oracle[36]. A Figura 3.6 ilustra a sintaxe de um procedimento Oracle PL/SQL.
Figura 3.6 - Sintaxe de um procedimento Oracle PL/SQL (Oracle Database PL/SQL User'sGuideandReference)
Para cada parmetro, preciso especificar o nome, o modo (IN, OUT ou IN OUT), o tipo de dados Oracle e um valor padro opcional. O modo determina o comportamento de cada um dos parmetros. Parmetros com modo IN passam valores para o subprograma sendo chamado, enquanto que parmetros com modo OUT retornam valores ao programa que chama o 28
subprograma. Parmetros IN OUT tanto passam valores ao procedimento como retornam valores atualizados [36]. H vrios tipos de dados nativos de Oracle e cada um deles define um formato especfico de armazenamento, restries e um intervalo vlido de valores. Os tipos de dados mais comumente utilizados no Oracle so NUMBER para valores numricos, VARCHAR2 e CHAR para cadeias de caracteres, e DATE e TIMESTAMP para datas e horrios[37].Existe um tipo de dados em Oracle chamado SYS_REFCURSOR que permite que um conjunto de registros seja retornado por uma rotina. O Anexo B prov um quadro com todos os tipos de dados predefinidos em Oracle. A Figura 3.7ilustra a declarao de um parmetro usando Oracle PL/SQL.
Figura 3.7 Sintaxe de declarao de um parmetro em Oracle PL/SQL (Oracle Database PL/SQL)
Declaraes de variveis devem ser feitas na parte declarativa do subprograma PL/SQL. Declaraes alocam espao de armazenamento para um valor, especificam seu tipo de dados, seu identificador (nome) e valor inicial (opcional)[36]. Existem declaraes de variveis que utilizam os qualificadores especiais %TYPE e %ROWTYPE em suas definies. O atributo %TYPE prov o tipo de dados de uma varivel ou coluna de tabela. O atributo %ROWTYPE prov um tipo registro que representa uma linha em uma tabela.A Figura 3.8ilustra um exemplo de trecho de cdigo com declaraes de variveis. Nas linhas 1 e 2, as variveis so declaradas e inicializadas. O operador de atribuio representado pelo smbolo de dois pontos seguido por um sinal de igual (:=).
29
Figura 3.8 - Exemplo de cdigo PL/SQL com declaraes de variveis
Um cursor um mecanismo pelo qual possvel atribuir um nome a um comando SELECT e manipular as informaes dentro dessa instruo SQL. Declaraes de cursores so compostas por um nome e uma consulta especfica associada[36],[37]. A Figura 3.9 ilustra um exemplo de trecho de cdigo com declarao de cursor.
Figura 3.9 - Exemplo de cdigo PL/SQL com declarao de cursor
A parte executvel de um subprograma PL/SQL composta por comandos de atribuio e manipulao de dados e estruturas de controle[36].Como foi visto anteriormente, no momento da declarao, uma maneira atribuir valores a uma varivel usando o operador de atribuio (:=). A linha 1 da Figura 3.10 ilustra um exemplo de utilizao do operador de atribuio.Outra forma de atribuir valores a uma varivel selecionando valores armazenados na base de dados usando o comando SELECT INTO, como ilustrado na linha 2 da Figura 3.10.
Figura 3.10 - Exemplo de cdigo PL/SQL com atribuies
Uma das estruturas de controle mais importantes o IF. Este comando condicional executa ou ignorauma sequncia de outros comandos de acordo com o valor de uma condio. Sua forma mais simples o IF-THEN, no qual uma sequncia de comandos executada apenas 30
se a condio for verdadeira. A segunda forma do comando IF (IF-THEN-ELSE) adiciona a palavra-chave ELSE seguida por uma sequncia alternativa de comandos que so executados caso a condio seja falsa ou nula. Quando preciso escolher entre vrias alternativas, usa-se a palavra-chave ELSIF para introduzir condies adicionais. As condies so testadas uma por uma de cima para baixo. Se uma dada condio verdadeira, o bloco de instrues associado a ela deve ser executado. Se nenhuma das condies for verdadeira, o bloco correspondente ao ELSE (o ltimo) executado[36]. A Figura 3.11 ilustra a sintaxe do comando IF.
Figura 3.11 - Sintaxe do comando IF (Oracle Database PL/SQL User'sGuideandReference)
No Oracle PL/SQL h vrias estruturas de repetio que executam uma seqncia de comandos repetidamente enquanto a condio de parada no for estabelecida. A forma mais simples o lao bsico que inclui uma seqncia de comandos entre as palavras-chaves LOOP e END LOOP. Existem dois comandos que servem para parar a execuo contnua do lao, evitando loop infinito. Um deles fora o lao a parar incondicionalmente, o comando EXIT. O outro, o comando EXIT-WHEN, para o lao quando a condio na clusula WHEN for verdadeira, ou seja, de forma condicional. Laos simples tambm podem conter um rtulo opcional com identificadores associados que podem ser referenciados pelos comandos de sada[36],[37]. A Figura 3.12 ilustra a sintaxe do comando LOOP.
Figura 3.12 - Sintaxe do comando LOOP (Oracle Database PL/SQL User'sGuideandReference) 31
Os outros comandos de repetio so o WHILE-LOOP e o FOR-LOOP. O WHILE- LOOP executa os comandos que esto dentro do corpo do lao enquanto a condio verdadeira. A condio avaliada antes de cada iterao. Se a condio for verdadeira, a seqncia de comandos executada, caso contrrio, o lao ignorado e o controle passado para o prximo comando[36],[37]. A Figura 3.13 ilustra a sintaxe do comando WHILE-LOOP.
Figura 3.13 - Sintaxe do comando WHILE-LOOP (Oracle Database PL/SQL User'sGuideandReference)
O comando FOR-LOOP itera sobre um intervalo especificado de nmeros inteiros, portanto, o nmero de iteraes conhecido antecipadamente. O operador simbolizado por um ponto duplo (..) fica posicionado entre o limite inferior e superior, indicando o intervalo. Por padro, a iterao prossegue ascendentemente, partindo do limite inferior at o limite superior, mas a palavra-chave REVERSE pode ser usada para indicar variao descendente do intervalo[36]. A Figura 3.14 ilustra a sintaxe do comando FOR-LOOP.
Figura 3.14 - Sintaxe do comando FOR-LOOP (Oracle Database PL/SQL User'sGuideandReference)
32
O prximo captulo se dedica aos detalhes do prottipo desenvolvido, mostrando seus recursos e funcionalidades disponveis.
33
4. A FERRAMENTA
Nesta seo ser apresentada a ferramenta desenvolvida neste trabalho. Esta ferramenta tem como propsito a modelagem de procedimentos a partir de elementos grficos.A principal motivao para o seu desenvolvimento foi suprir as limitaes encontradas nas ferramentas analisadas na seo 2, focando na sua aplicao juntamente com ferramentas de gerao de relatrios. As ferramentas referidas permitiam apenas a definio do esqueleto do procedimento, no dando suporte especificao do corpo da rotina. Na seo 4.1 sero apresentadas as tecnologias propostas para o desenvolvimento da ferramenta, na seo 4.2 ser apresentado o seu funcionamento bsico e na seo 4.3 sero apresentados os componentes que compem sua interface grfica.
4.1.Tecnologias Propostas Diante do estudo realizado ao longo deste trabalho, as tecnologias para o desenvolvimento de uma ferramenta grfica para modelagem de procedimentos so:
Eclipse Modeling Project o FrameworkEMF o FrameworkGMF o Plataforma Epsilon Linguagem de programao: Java Soluo de banco de dados: Oracle 10g
O Eclipse Modeling Project compreende um conjunto unificado de frameworks de modelagem, ferramentas e implementaes que facilitam bastante a tarefa de desenvolvimento de ferramentas CASE, por isso a sua escolha. A escolha de Java como linguagem de programao est diretamente relacionada com as ferramentas descritas anteriormente. O prottipo da ferramenta ser compatvel primeiramente apenas com subprogramas Oracle PL/SQL, gerando cdigo para tal linguagem-alvo,podendo ser posteriormente estendido para outras linguagens.
34
4.2.Funcionamento da Ferramenta O prottipo desenvolvido um plug-in para o Eclipsee permite a criao de procedimentos Oracle PL/SQL modelando-os em um diagrama. O diagrama representa o procedimento e as construes da linguagem so representadas por elementos grficos (retngulos). Estes elementos podem ser adicionados ao diagrama, uns dentro dos outros, formando a rotina. Uma vez modelado o procedimento, o cdigo referente a ele pode ser gerado. Atravs de uma conexo ao sistema de banco de dados Oracle, o cdigo gerado pode ser armazenado no servidor para posterior execuo.A ferramenta, ento, consiste de duas principais funcionalidades: modelagem e gerao do cdigo de um procedimento Oracle PL/SQL. 4.3.Interface Grfica Como a ferramenta desenvolvida um plug-in do Eclipse, esta utiliza todo o ambiente de desenvolvimento que o mesmo dispe, podendo ser integrada a ele sem a necessidade de instalao de um novo software. A Figura 4.1 ilustra a interface grfica do prottipo.
4.3.1. Ambiente do Eclipse
Do lado esquerdo da interface, h uma aba chamada Project Explorer(1) que prov uma visualizao hierrquica dos recursos presentes no espao de trabalho (Workspace). a partir do Project Explorer que o usurio poder visualizar e editar os diagramas existentes e criar novos. A rea central do programa fica o Editor Area (2), o local em que o usurio modifica o contedo dos arquivos do Workspace. Este o espao em que editor grfico fica localizado, permitindo a modelagem do procedimento. Na rea interna do Editor Area fica um componente chamado Palette (3). As ferramentas pertencentes paleta podem ser usadas para seleo, criao de objetos e qualquer outra ao a ser realizada no diagrama. Na parte inferior do programa possvel encontrar a aba chamada Properties (4) que mostra as propriedades bsicas de um recurso selecionado. Esta aba de propriedades permite que o usurio visualize e configure os valores das propriedades de cada elemento do diagrama. 35
Na parte inferior esquerda do programa est localizada a aba Outline(5) que apresenta um esboodo arquivo atualmente aberto no Editor Areae lista seus elementos estruturais.
Figura 4.1 - Interface grfica do prottipo: PackageExplorer (1), EditorArea (2), Palette(3), Properties (4) e Outline(5).
(1) (2) (3) (5) (4) 36
4.3.2. Gerao do cdigo do procedimento
Com o diagrama do procedimento modelado, possvel gerar o cdigo fonte Oracle PL/SQL associado. Para isso, existe um boto na barra de ferramentas que quando clicado abre uma janela em que o usurio pode visualizar e salvar o cdigo gerado em um arquivo do sistema e executar o procedimento, armazenando-o no banco de dados para ser usado posteriormente.NaFigura 4.2 possvel ver a localizao do botoGenerate Procedure.
Figura 4.2 - Localizao do boto para gerao de cdigo do procedimento.
A janela que se abre ao clicar no boto Generate Procedure ilustrada na Figura 4.3. Atravs da interface possvel se conectar uma instncia do Oracle para a visualizao dos procedimentos atualmente armazenados e para o armazenamento do cdigo referente ao procedimento recm modelado. O cdigo gerado pode ser simplesmente copiado ou salvo em algum arquivo do sistema.
Figura 4.3 - Janela para gerao do cdigo do procedimento (Procedure Generation). 37
4.3.3. Criao de consultas SQL
A ferramenta conta com um Query Builder que permite ao usurio criar consultas SQL via interface grfica e utiliz-las na declarao e inicializao de cursores, por exemplo. A Figura 4.4 ilustra a interface grfica para criao de consultas. O usurio pode selecionar colunas de tabelas armazenadas no banco de dados,atribuir apelidos (aliases) e definir condies simples para estes.
Figura 4.4 - Interface grfica para criao de consultas SQL.
4.3.4. Interface para seleo de colunas e tabelas
Outro componente do sistema a interface grfica que permite a escolha de uma coluna ou linha da tabela associada a variveis do tipo TYPE ou ROWTYPE, respectivamente. A interface ilustrada na Figura 4.5. 38
Figura 4.5 - Interface para escolha de coluna/linha da tabela.
4.3.5. Diagrama de modelagem
O principal componente do sistema o diagrama que permite modelar o procedimento. A representao grfica do procedimento no editor grfico dividida em trs componentes principais que so ilustrados na Figura 4.6: Parameter Set Representa o conjunto de parmetros do procedimento; Declare BlockBloco de declaraes de variveis, tipos e cursores do procedimento; BodyBlock Corpo do procedimento.
Figura 4.6 - Os trs componentes principais do diagrama: Parameter Set, Declare Block e BodyBlock.
39
Dentro do blocoParameter Set possvel adicionar elementos do tipo Parameter e RefCursorcomo ilustrado naFigura 4.7. Os elementos do tipo Parameter(1) representam parmetros com tipos de dados escalares NUMBER, CHAR, VARCHAR2 e DATE. Elementos do tipo RefCursor (2) representam parmetros com o tipo de dado SYS_REFCURSOR. Alm de definir o tipo de dado do parmetro, possvel configurar o seu identificador e o seu comportamento (IN, OUT, IN OUT ou padro).
Figura 4.7 - Representao dos elementos Parameter(1) e RefCursor (2).
Dentro do bloco Declare Block possvel adicionar elementos que representam declaraes de variveis de tipos predefinidos (Number, Varchar2, Char, Date), declarao de cursores (Cursor) e declaraes de variveis de colunas ou linhas de tabelas (Type e RowType, respectivamente). Um exemplo de configurao deste bloco ilustrada na Figura 4.8. As declaraes de variveis de tipos predefinidos requerem basicamente a configurao de um identificador, h algumas propriedades adicionais para definio da preciso e escala numrica (no caso do tipo Number), e o tamanho (no caso dos tipos Varchar2 e Char). O tipo Cursor possui um nome e uma consulta SQL associada que pode ser gerada pelo Query Builder. Os tipos Type e RowType possuem um identificador e uma tabela associada. No caso do tipo Type, tambm h um campo para o nome da coluna da tabela. Os campos tabela e coluna podem ser definidos via interface grfica.
(1) (2) 40
Figura 4.8 - Representao dos elementos Number (1), RowType(2), Type(3) e Cursor (4).
O bloco BodyBlock agrupa os tipos que representam os comandos de atribuio (Assign), controle da execuo (If, ElseIf, Else, Loop, ExitLoop, While e For) e manipulao de dados (OpenRefCursor). A Figura 4.9 ilustra o BodyBlock e seus componentes. O tipo Assign(1) representa uma atribuio de uma expresso a uma varivel. Os tipos If (2), ElseIf (3) e Else (4) representam o comando condicional IF de PL/SQL. Todos os trs tipos podem conter outros comandos em seu interior. Os tiposIf e ElseIf possuem um atributo para definio da condio booleana. Os tipos Loop, While e For representam as estruturas de repetio LOOP, WHILE- LOOP e FOR-LOOP, respectivamente, e podem conter outros comandos internos. O tipo Loop possui um atributo opcional para definio do seu rtulo. O tipo While possui apenas um atributo referente condio booleana. O tipo For possui um atributo para definir o nome do contador do loop, dois atributos para delimitar o intervalo (limite inferior e superior) e um atributo booleano para indicar variao crescente ou decrescente do valor do contador. O tipo OpenRefCursorpossui um REF CURSOR e uma consulta SQL associada. (1) (2) (3) (4) 41
Figura 4.9 Representao dos elementos Assign (1), If (2), ElseIf (3), Else(4), Loop (5), ExitLoop(6), While(7), For (8) e OpenRefCursor (9).
O prximo captulo se dedica a apresentar a utilizao da ferramenta desenvolvida juntamente com uma ferramenta de gerao de relatrios.
(1) (2) (3) (4) (5) (6) (7) (8) (9) 42
5. ESTUDO DE CASO
Este captulo tem como objetivo mostrar a utilizao do prottipo desenvolvido durante este trabalho em conjunto com uma ferramenta de gerao de relatrios (Reporting Tool).Na Seo 5.1 ser apresentada a ferramenta para gerao de relatrios utilizada e na seo 5.2 ser detalhado o procedimento realizado no estudo. 5.1.Eclipse BIRT A ferramenta escolhida para utilizao juntamente com o prottipo desenvolvido foi o Eclipse BIRT (Business IntelligenceandReporting Tools). O Eclipse BIRT um projeto cdigo aberto baseado no Eclipse que permite a produo de relatrios a partir de dados provenientes de diversos tipos de fontes, incluindo banco de dados.O sistema ainda fornece exportao do relatrio para diversos formatos como HTML, PDF, XLS e DOC[3]. A Figura 5.1ilustra a interface grfica do Eclipse BIRT.
Figura 5.1- Interface grfica do programa EclipseBIRT. 43
5.2.Mtodoutilizado O mtodo utilizado foi simples. Primeiramente, o procedimento foi criado e armazenado no banco de dados utilizando o prottipo desenvolvido. Depois, um relatrio foi criado utilizando o Eclipse BIRT chamando o procedimento anteriormente citado. Uma tabela foi utilizada para consulta dos dados. A tabela PERSON que possui as colunas id, name e age que representam o identificador, nome e idade de uma pessoa, respectivamente.A Figura 5.2 ilustra a tabela.
Figura 5.2 - Tabela PERSON.
O objetivo era recuperar o identificador, nome e idade das pessoas que possuem idade maior que um determinado nmero.Sendo assim, o procedimento modelado foi simples, possuindo um parmetro de entrada do tipo NUMBER e um parmetro de sada do tipo SYS_REFCURSOR para retorno da consulta. Foi necessrio adicionar o comando OPEN FOR ao corpo do procedimento para associar o parmetro de sada com a consulta apropriada. No foi preciso declarar variveis. O diagrama modelado est ilustrado na Figura 5.3. 44
Figura 5.3 - Diagrama do procedimento modelado.
Para criar a consulta SQL desejada e associ-la ao parmetro de sada, a interface grfica do Query Builder do prottipo foi utilizada. A Figura 5.4 ilustra a criao da consulta.
Figura 5.4 - Utilizao do QueryBuilder para criao da consulta.
45
Com o procedimento j modelado, o cdigo associado foi gerado com auxlio da interface do Procedure Generation conforme mostrado na Figura 5.5. Aps isso, o procedimento foi armazenado no banco de dados para ser chamado atravs do Eclipse BIRT. O cdigo gerado pela ferramenta mostrado na Figura 5.6.
Figura 5.5 - Gerao do cdigo do procedimento e armazenamento no banco de dados.
Figura 5.6 - Cdigo do procedimento gerado.
Para a criao do relatrio utilizando o Eclipse BIRT, primeiramente foi definido um Data Source que simplesmente uma conexo com uma fonte de dados, neste caso, o banco de dados Oracle. A partir do DataSource configurado, foi criado um Data Set que representa um conjunto de dados recuperado. possvel definir um conjunto de dados a partir de uma consulta 46
SQL ou chamando rotinas, como foi realizado. Atravs da interface do BIRT tambm permitido definir quais os valores so passados para o procedimento chamado. No caso do exemplo aqui exposto, foi definido o valor 21 para o parmetro de entrada, o que significa que o conjunto de dados retornado inclui as pessoas com idade maior que 21. Utilizando o ReportDesigner do BIRT, foi criado um simples relatrio com um ttulo e uma tabela para visualizao dos dados. O relatrio gerado pode ser visto na Figura 5.7.
Figura 5.7 - Relatrio gerado pelo Eclipse BIRT chamando o procedimento criado.
O estudo apresentado neste captulo mostrou a possibilidade de utilizar procedimentos modelados com a ferramenta proposta na gerao de relatrios, em conjunto com uma ferramenta apropriada. O prximo captulo traz as principais contribuies, dificuldades e trabalhos futuros para o presente trabalho.
47
6. CONSIDERAES FINAIS E TRABALHOS FUTUROS
Este captulo mostra as concluses sobre este trabalho. A Seo 6.1 descreve suas principais contribuies. A Seo 6.2 aponta as maiores dificuldades encontradas. Finalmente, a Seo 6.3 indica as perspectivas de trabalhos futuros. 6.1.Contribuies Os estudos realizados neste trabalho mostraram a deficincia das ferramentas existentes atualmente em relao ao suporte na criao de rotinas de linguagens de quarta gerao. As ferramentas exploradas apenas forneciam um modo para definio do cabealho da rotina, no fornecendo qualquer suporte definio do seu corpo.A ferramenta proposta neste trabalho supriu tal deficincia. Com o seu uso, possvel modelar um procedimento completo e no apenas sua estrutura, definir parmetros, declaraes e comandos, e aplic-lo na gerao de relatrios. 6.2.Dificuldades Encontradas A tarefa de modelar um procedimento utilizando elementos grficos no fcil. Talvez esse tenha sido o motivo da inexistncia de uma ferramenta deste tipo no mercado. Um fator complicador foia determinao do escopo, o que seria levado em considerao ou no no desenvolvimento do prottipo, quais construes de PL/SQL deveriam ser includas. Outro empecilho foi achar uma maneira boa de representar as construes da linguagem de forma grfica no diagrama.Alm disso, problemas no desenvolvimento da interface grfica, em como customiz-la para melhor utilizao do usurio. 6.3.Trabalhos Futuros Uma continuidade interessante deste trabalho seria a modelagem das construes do procedimento de tal forma que este fosse compatvel com rotinas de outros sistemas de gerenciamento de bancos de dados, alm do Oracle, a fim de ter uma utilidade mais abrangente.
48
Adaptar a ferramenta para permitir a criao de funes, alm de procedimentos. Como as duas rotinas so bem similares, o trabalho de adaptao seria mnimo. Permitir a realizao de chamadas a subprogramas externos dentro da rotina, alm da declarao e manipulao de tipos complexos (como registros, varrays e nestedtables) e outras operaes de manipulaes de dados que no foram implementadas. Enriquecer o diagrama com funcionalidades que aperfeioariam a experincia do usurio durante a tarefa de modelagem do procedimento: construes poderiam estar dispostas de forma sequencial, os elementos poderiam ser movidos de localizao, facilitando reuso, por exemplo.
49
REFERNCIAS BIBLIOGRFICAS
1. GREGORY HILL. Enterprise Reporting Guide. Disponivel em: <http://ghill.customer.netspace.net.au/reporting/>. Acesso em: 01 nov. 2011. 2. WORLD WIDE WEB CONSORTIUM (W3C). Disponivel em: <http://www.w3.org/XML/>. Acesso em: 01 dez. 2011. 3. ECLIPSE FOUNDATION. Eclipse BIRT Overview. Disponivel em: <http://www.eclipse.org/birt/intro/>. Acesso em: 01 dez. 2011. 4. RUSSELL, G. SQL Simple Queries (Napier University - Edinburgh). Disponivel em: <http://db.grussell.org/slides/sql1.pdf>. Acesso em: 01 dez. 2011. 5. ADOBE. Arquivos PDF | Portable Document Format (PDF) da Adobe Acrobat. Disponivel em: <http://www.adobe.com/br/products/acrobat/adobepdf.html>. Acesso em: 01 dez. 2011. 6. MICROSOFT. Microsoft Excel 2010 - Office.com. Disponivel em: <http://office.microsoft.com/pt- br/excel/>. Acesso em: 01 dez. 2011. 7. MICROSOFT. Microsoft Word 2010 Office.com. Disponivel em: <http://office.microsoft.com/pt- br/word/>. Acesso em: 01 dez. 2011. 8. WORLD WIDE WEB CONSORTIUM (W3C). W3C XHTML2 Working Group Home Page. Disponivel em: <http://www.w3.org/MarkUp/>. Acesso em: 01 dez. 2011. 9. MENDES, W. Linguagem de programao de quarta gerao. Knol. Disponivel em: <http://knol.google.com/k/william-mendes/linguagem-de-programao-de-quarta/28wtpufocpbs6/3>. Acesso em: 01 dez. 2011. 10. HEERING, J.; MERNIK, M.; M. SLOANE, A. When and how to develop domain-specific languages. ACM Computing Surveys. New York: [s.n.]. 2005. p. 316344. 11. CHANG, Y.-M.; ULLMAN, J. Using Oracle PL/SQL. The Stanford University InfoLab. Disponivel em: <http://infolab.stanford.edu/~ullman/fcdb/oracle/or-plsql.html>. Acesso em: 01 dez. 2011. 12. ORACLE CORPORATION. Oracle SQL Developer. ORACLE. Disponivel em: <http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html>. Acesso em: 30 nov. 2011. 13. ORACLE CORPORATION. What is SQL Developer? Disponivel em: <http://www.oracle.com/technetwork/developer-tools/sql-developer/what-is-sqldev-093866.html>. Acesso em: 30 nov. 2011. 14. ORACLE CORPORATION. MySQL Workbench. Disponivel em: <http://www.oracle.com/us/products/mysql/mysql-workbench-066221.html>. Acesso em: 30 nov. 50
<http://eclipse.org/gmt/epsilon/doc/eol/>. Acesso em: 22 nov. 2011. 31. ECLIPSE FOUNDATION. Epsilon Validation Language. Disponivel em: <http://www.eclipse.org/gmt/epsilon/doc/evl/>. Acesso em: 01 dez. 2011. 32. ECLIPSE FOUNDATION. Epsilon Generation Language. Disponivel em: <http://www.eclipse.org/gmt/epsilon/doc/egl/>. Acesso em: 01 dez. 2011. 33. ECLIPSE FOUNDATION. Epsilon Wizard Language. Disponivel em: <http://eclipse.org/gmt/epsilon/doc/ewl/>. Acesso em: 22 nov. 2011. 34. W3SCHOOLS.COM. Javascript Introduction. Disponivel em: <http://www.w3schools.com/js/js_intro.asp>. Acesso em: 01 dez. 2011. 35. DEMUTH, B. OCL Portal - Technische Universitt Dresden. Disponivel em: <http://www-st.inf.tu- dresden.de/ocl/>. Acesso em: 01 dez. 2011. 36. ORACLE CORPORATION. Oracle Database PL/SQL User's Guide and Reference 10g Release 2. Oracle Docs, jun. 2005. Disponivel em: <http://docs.oracle.com/cd/B19306_01/appdev.102/b14261.pdf>. Acesso em: 1 dez. 2011. 37. TECH ON THE NET. Oracle/PLSQL Topics. Disponivel em: <http://www.techonthenet.com/oracle/>. Acesso em: 1 dez. 2011. 38. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 6. ed. So Paulo: Pearson Addison Wesley, 2011. 39. ECLIPSE FOUNDATION. Store Procedure (BIRT) - Eclipsepedia. Disponivel em: <http://wiki.eclipse.org/StoredProcedure_%28BIRT%29>. Acesso em: 05 dez. 2011. 40. ABRANTES, J. Fazer monografia moleza: o passo a passo de um trabalho cientfico. 3. ed. Rio de Janeiro: Wak Editora, 2011.
52
APNDICE A Passo a passo para a criao do diagrama
Para que o usurio possa iniciar o trabalho de criao de procedimentos utilizando a ferramenta, primeiramente preciso criar um projeto genrico ou qualquer outro tipo de projeto no Eclipse. Basta clicar com o boto direito do mouse na rea do Project Explorer e escolher a opo New Project como ilustrado na figura abaixo.
Figura Apndice A.1 - Criao de novo projeto no Eclipse.
Uma janela ser aberta mostrando vrias opes. Selecionar a opo General Project e clicar em Next. Ver a janela na ilustrao abaixo.
Figura Apndice A 2 - Escolha do tipo do novo projeto.
53
Na prxima janela exibida, o nome do projeto deve ser configurado. Aps isso, clicar em Finish. O projeto finalmente criado e pode ser visualizado na aba Project Explorer.
Figura Apndice A 3 - Configurao do novo projeto.
Para criar um novo diagrama de Procedimento, clicar com o boto direito em qualquer projeto existente na aba Project Explorer e escolher a opo New Other como ilustrado na figura abaixo.
Figura Apndice A 4 - Criao de novo arquivo.
54
Na janela que ser aberta, escolher a opo Examples Procedure Diagram e clicar em Next.
Figura Apndice A 5 - Criao de novo diagrama de procedimento.
Na prxima janela, configurar o nome do arquivo do modelo de diagrama e clicar em Next novamente. Outra janela ser aberta e o nome do arquivo do modelo de domnio deve ser configurado tambm. Aps isso, clicar em Finish.
Figura Apndice A 6 - Configurao dos nomes dos arquivos do diagrama. 55
Dois arquivos so criados e podem ser visualizados na aba Project Explorer dentro do projeto selecionado conforme mostrado na figura abaixo. Para abrir o diagrama, clicar duas vezes no arquivo com extenso .procedure_diagram.
Figura Apndice A 7 - Projeto e arquivos criados na aba Project Explorer.
03 Tema - Equipamentos de convés de embarcações pesqueiras-Noções de marinharia, guinchos, tangones, aladores (de redes, de linhas, de linhas de corrico e de palangres), gruas, equipamentos de fundeio e atracação.