You are on page 1of 59

UNIVERSIDADE FEDERAL DE PERNAMBUCO

GRADUAO EM CINCIA DA COMPUTAO


CENTRO DE INFORMTICA





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.

Keywords:Database, Reporting Tools, Fourth-generation programming
language.

LISTA DE ILUSTRAES


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


2011.
15. ECLIPSE FOUNDATION. Eclipse Modeling Project. Disponivel em: <http://eclipse.org/modeling/>.
Acesso em: 20 nov. 2011.
16. ECLIPSE FOUNDATION. Eclipse Modeling - EMF - Home. Disponivel em:
<http://www.eclipse.org/modeling/emf/>. Acesso em: 20 nov. 2011.
17. ECLIPSE FOUNDATION. Graphical Modeling Framework. Disponivel em: <www.eclipse.org/gmf>.
Acesso em: 20 nov. 2011.
18. ECLIPSE FOUNDATION. Epsilon. Disponivel em: <http://eclipse.org/gmt/epsilon/>. Acesso em: 21
nov. 2011.
19. ORACLE CORPORATION. History of Java Technology. Disponivel em:
<http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html>. Acesso
em: 01 dez. 2011.
20. STEINBERG, D. et al. EMF: Eclipse Modeling Framework. 2 Edio. ed. [S.l.]: Addison-Wesley
Professional, 2008.
21. ECLIPSE FOUNDATION. GEF. Disponivel em: <http://www.eclipse.org/gef/>. Acesso em: 20 nov.
2011.
22. ECLIPSE FOUNDATION. GMF Dashboard View. Disponivel em:
<http://wiki.eclipse.org/index.php/GMF_Tutorial_Part_4#GMF_Dashboard_View>. Acesso em: 01
dez. 2011.
23. ECLIPSE FOUNDATION. Graphical Modeling Framework Tutorial - Eclipsepedia. Disponivel em:
<http://wiki.eclipse.org/Graphical_Modeling_Framework/Tutorial/Part_1>. Acesso em: 01 dez. 2011.
24. IBM. IBM Software - Rational Rose. Disponivel em: <http://www-
01.ibm.com/software/awdtools/developer/rose/>. Acesso em: 01 dez. 2011.
25. OBJECT MANAGEMENT GROUP. Object Management Group - UML. Disponivel em:
<http://www.uml.org/>. Acesso em: 01 dez. 2011.
26. KOLOVOS, D.; ROSE, L.; PAIGE, R. The Epsilon Book. [S.l.]: [s.n.], 2011.
27. ECLIPSE FOUNDATION. EuGENia. Disponivel em: <http://eclipse.org/gmt/epsilon/doc/eugenia/>.
Acesso em: 21 nov. 2011.
28. ECLIPSE FOUNDATION. Emfatic Language Reference. Disponivel em:
<http://eclipse.org/gmt/epsilon/doc/articles/emfatic/>. Acesso em: 2011 nov. 2011.
29. ECLIPSE FOUNDATION. Emfatic - Eclipsepedia. Disponivel em: <http://wiki.eclipse.org/Emfatic>.
Acesso em: 20 nov. 2011.
30. ECLIPSE FOUNDATION. Epsilon Object Language. Disponivel em:
51


<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.

56


ANEXO A Exemplo de cdigo Emfatic


57


ANEXO B Tipos de dados predefinidos em Oracle





58