Você está na página 1de 24

Tutorial GMF (Graphical Modeling Framework)

Sobre o GMF:
O GMF (Graphical Modeling Framework) um framework para desenvolvimento de editores grficos para modelos de domnio. Ele surgiu de uma unio de dois frameworks denominados GEF (Graphical Editing Framework), utilizado para a criao de editores grficos genricos e EMF (Eclipse Modeling Framework), que permite ao desenvolvedor construir meta-modelos e gerar cdigos java referidos ao mesmo. O framework EMF permite a modelagem do domnio utilizando um meta-modelo prprio, mais simples do que a especificao MOF (Meta-Object Facility) da MDA (Model Driven Architecture), chamado Ecore. A partir do mesmo feita uma transformao em um meta-modelo especifico (*.genmodel) para a gerao de cdigo java.

Baixando o plugin:
Para baixar o plugin do GMF, siga a figura auto-explicativa abaixo:

Agora clique em New Remote Site e adicione o GMF atravs do update site: http://download.eclipse.org/modeling/gmf/update-site/releases/site.xml

Criando o projeto

Selecione a pasta Graphical Modeling Framework e clique em New GMF Project. Em seguida aperte em Next >. Neste caso, nomeamos o projeto como TutorialGMF. Em seguida aperte Next novamente.

Em seguida, habilite a opo Show dashboard view for the created project e clique em Finish.

Feito isso, o dashboard do GMF j estar disponvel em uma das abas do seu eclipse. Observe a figura:

Para nosso exemplo, vamos fazer um diagrama simples, com crculos relacionados a crculos como a figura abaixo:

Para tanto, vamos criar o nosso META-MODELO Criando o meta-modelo (*.ecore) Para construir o meta-modelo do nosso diagrama, basta definirmos uma regra: Cada elemento (Node) vai conter uma ligao (edge) para outro elemento ou para ele mesmo. Para criar o nosso meta-modelo precisamos apenas de um arquivo *.ecore. No dashboard do GMF, dentro do retngulo Domain Model, clique em create. Observe a figura:

Nomeamos o nosso arquivo ecore como My.ecore. Feito isso, aperte em Finish. Depois de criado, observe que o nosso metamodelo est vazio. Clique com o boto direito do mouse e em seguida clique em Show Properties View.

Com a aba de propriedades aberta, preencha, nos campos nulos, algumas informaes bsicas de acordo com a figura:

Classes: Para criar uma classe (EClass), clique com o boto direito e siga os passos de acordo com a figura:

Definiremos agora as propriedades da classe. No campo Name, definimos o nome da classe, no campo Abstract, definimos se a classe abstrata ou no. OBS: Se houver relaes de herana (no o nosso caso), no campo ESuper Types definimos a(s) classe(s) pai.

No nosso caso, vamos criar duas classes. Domain, que corresponde ao domnio do projeto, Node que corresponde aos elementos do nosso diagrama e Edge que corresponde s ligaes entre os elementos do diagrama.

Classes:

Classe Domain:

Classe Node:

Classe Edge:

Relacionamentos: Como j definimos o nosso metamodelo, agora precisamos concretizar esta idia. O elemento vai ser uma agregao do nosso domnio (a classe Domain). Para isso vamos definir a relao (EReference):

Depois de criar a relao, preencha os campos de acordo com a figura acima. O campo Containment como true significa que existe uma agregao entre o domnio e classe Node. O campo EType diz qual classe est sendo relacionada. O campo name o apelido para a relao. Os campos Lower Bound e Upper Bound simbolizam a cardinalidade da relao, onde o nmero -1 significa * (muitos), sendo assim a relao fica de zero para muitos (0..*).

A classe Node tambm ter os seus relacionamentos, portanto, no ser agregao e sim uma associao. Observe a figura:

Observe que desta vez o campo Containment est definido como false, o que implica uma associao (diferente do caso anterior). A cardinalidade tambm foi alterada, definindo o nmero 1, tanto para Lower Bound quanto para Upper Bound. A classe Edge, por sua vez, conter duas relaes: source e target, que definir a origem e o destino do relacionamento entre os elementos.

Atributos: A classe Node possuir apenas um atributo (EAttribute) que denominaremos label do tipo EString (adaptao que o ecore faz da classe java.lang.String).

Aps criar o atributo faa as devidas mudanas nas propriedades do mesmo, preenchendo os campos name e EType conforme figura acima:

Vizualizando o nosso META-MODELO: Para visualizar o nosso meta-modelo de uma forma mais amigvel, salve o metamodelo e clique com o boto direito no arquivo My.ecore de acordo com a figura abaixo, clicando em Initialize ecore_diagram diagram filen:

Se voc seguiu os passos descritos acima fielmente, o seu meta-modelo deve estar mais ou menos assim:

Gerando classes (*.genmodel)


Para gerar as classes do projeto dirija-se ao dashboard do GMF em Derive ao lado esquerdo do retngulo Domain Model.

Aps passar por todos os wizards clique em Finish. Este arquivo *.genmodel gera classes java de acordo com o meta-modelo. Ento vamos a elas. Clique com o boto direito e em seguida clique em Generate Model Code e Generate Edit Code.

Gerando componentes grficos (*.gmfgraph)

Para gerar os componentes grficos dirija-se ao dashboard e clique em Derive esquerda do retngulo Graphical Def Model, observe a figura:

Domain Model: No meio do processo, um dos wizards vai perguntar qual ser o domain model. No nosso caso o domain model a classe Domain (ver meta-modelo). Feito isso, aperte em Finish. Acompanhe o processo de acordo com as figuras abaixo:

A partir de agora vamos definir graficamente como ser representada nosso diagrama. Automaticamente os ns correspondentes classe Node so criados, porm vamos fazer algumas alteraes. Expanda os ns e delete o n Rectangle NodeFigure.

Agora clique com o boto direito em Figure Descriptor NodeFigure e siga as figuras abaixo, criando desta vez uma elipse:

Feito isso, nomeamos a Ellipse como NodeFigure:

Crie agora um label e nomeie-o como NodeLabelFigure:

Agora vamos renomear o Chid Access, objeto que vai ter acesso ao label recm criado. No campo Figure procure e selecione o NodeLabelFigure recm criado:

Pronto, agora salve o seu arquivo e vamos ao prximo passo.

Gerando a paleta (*.gmftool)

Para criar o gmftool dirija-se ao dashboard e clique em Derive, ao lado esquerdo de Tooling Def Model. A partir da repita o processo do exemplo anterior at que aparea a rvore da paleta de acordo com a figura:

Mapeamento gmfgraph + gmftool (*.gmfmap)

Este arquivo, alm de gerir o mapeamento do diagrama, tambm um conjunto de referncias. Ele referencia o meta-modelo ecore, o arquivo gmfgraph e gmftool. nele tambm que se mapeia qual classe se associa a um componente grfico e qual componente grfico se associa a um elemento da paleta. Para criar um arquivo *.gmfmap dirija-se ao GMF dashboard e clique em Combine de acordo com a figura abaixo:

Uma seqncia de wizards aparecer, portanto clique em Next at que a rvore do mapeamento aparea, observe as figuras abaixo:

Arquivo My.gmfmap:

Atravs das propriedades de cada n desta rvore, voc pode conferir se o mapeamento est correto. Estando correto, expanda os ns at Feature Label Mapping false. Ele corresponde ao mapeamento do atributo label da classe Node. Atravs das propriedades, faa referncia ao Diagram Label NodeLabel (ver no arquivo gmfgraph).

Agora selecione o n Link Mapping <{Node.relations:Edge}/NodeRelations> para mapear os relacionamentos. Observe a figura:

Agora vamos gerar um arquivo que, criar de fato, o nosso diagrama.

Clique com o boto direito em Mapping conforme a figure, e clique em Create generator mode.

Aps o clique, uma seqncia de wizards aparecer, clique em Next at que o arquivo gmfgen seja criado.

Clique nele com o boto direito e clique na opo Generate diagram code e aguarde enquanto a barra de progresso gera um novo projeto, o projeto que ser executvel.

O projeto executvel certamente deve se chamar TutorialGMF.diagram. Clique nele com o boto direito do mouse e acompanhe a figura:

Na caixa de texto VM arguments digite -Xmx1024m ou -Xmx512m para aumentar a memria virtual da sua mquina virtual. Isso evita alguns possveis erros de memria durante a execuo, j que o teste feito a partir de uma nova instncia do Eclipse IDE.

Executando o diagrama

Clique com o boto direito sob o projeto e siga a imagem acima. Uma nova instncia do Eclipse IDE ir abrir na sua mquina. Crie um projeto java comum. Clique com o boto direito do mouse sobre o projeto recm criado de acordo com a imagem:

O nosso diagrama j est disponvel, agora s cria-lo.

Diagrama em execuo

Consideraes Finais
Espero que tenha ajudado com este simples tutorial. Naturalmente, com a prtica, criar um diagrama mais sofisticado ficar cada vez mais simples.

Para mais detalhes, consulte o site http://www.eclipse.org/gmf/

Alab Duarte (alabeduarte@gmail.com) Programador e Estudante da Faculdade Ruy Barbosa (Salvador-BA)

Você também pode gostar