Arquitetura de Extensibilidade

A origem da extensibilidade do UML Modeler é chamada plataforma de modelagem. A plataforma de modelagem consiste em um conjunto de serviços que possibilitam o gerenciamento de modelos do UML 2.1 e está baseada em um metamodelo do UML 2.1 que o componente Eclipse MDT UML2 fornece. Como o metamodelo é um Eclipse Modeling Framework (EMF) baseado na implementação da especificação UML 2.1, os objetos que representam modelos do usuário são objetos do UML2.

A API do UML Modeler consiste em uma única classe do utilitário estático, e de várias outras classes e interfaces que são acessíveis a partir da classe UMLModeler. A implementação dessas outras classes e interfaces abrange diversos plug-ins no produto. Esses plug-ins são exportados novamente do plug-in que apresenta a classe UMLModeler, que é parte do pacote denominado com.ibm.xtools.modeler.ui. Para utilizar a extensibilidade do UML Modeler, os clientes da API devem incluir somente uma única dependência de plug-in para o pacote com.ibm.xtools.modeler.ui.

API do UML Modeler

A application programming interface (API) do UML Modeler representa o pacote primário do UML Modeler que apresenta o ponto de entrada para a API do UML Modeler. O pacote com.ibm.xtools.modeler.ui contém a classe UMLModeler que apresenta operações de ciclo de vida para modelos e perfis, e fornece acesso à plataforma de modelagem.

Por exemplo, em muitos casos, o método UMLModeler.openModel retorna um pacote do objeto UML2 (org.eclipse.uml2.uml, pacote de interface). Do mesmo modo que para todos os objetos do UML2, o Pacote estende indiretamente o objeto EMF do EModelElement (org.eclipse.emf.ecore, interface EModelElement).

Os seguintes serviços de plataforma de modelagem também estão disponíveis para modelos baseados em EMF:
  • Serviços que executam consultas básicas em modelos EMF indexados através do IIndexSearchManager da interface, a partir do pacote com.ibm.xtools.emf.index.search
  • Serviços que permitem a participação no processo de upgrade da versão do modelo e gravação da assinatura por meio do IRMPResource da interface, a partir do pacote com.ibm.xtools.emf.core.resource
  • Serviços que executam consultas em modelos do EMF por meio da interface IQueryHelper, a partir do pacote com.ibm.xtools.modeler.ui
  • Serviços que executam consultas de Object Constraints Language (OCL) em modelos EMF por meio da interface IOclQueryHelper, a partir do pacote com.ibm.xtools.modeler.ui.

Para diagramação, a API do UML Modeler utiliza o ambiente de tempo de execução do projeto Eclipse Graphical Modeling Framework (GMF). Por exemplo, o método createDiagram (com.ibm.xtools.uml.ui.diagram, interface IUMLDiagramHelper) retorna um Diagrama GMF (org.eclipse.gmf.runtime.notation, interface Diagram). Esse objeto contém Visualizar (org.eclipse.gmf.runtime.notation) objetos por meio de seu método getChildren(). Cada visualização pode estar associada a um elemento semântico. Para diagramas de modelagem UML, esses elementos semânticos são elementos UML2 e estão acessíveis a partir do método View.getElement().

A plataforma de modelagem apresenta interfaces para ajudar a gerenciar diagramas baseados em notação:
  • Um auxiliador da interface com o usuário para utilizar elementos UML2 por meio da interface IUMLUIHelper a partir do pacote com.ibm.xtools.uml.ui
  • Um auxiliador para utilizar os diagramas baseados em notação do UML 2.0 por meio da interface IUMLDiagramHelper a partir do pacote com.ibm.xtools.uml.ui.diagram
  • Extensões específicas ao UML 2.1 para metamodelo de notação do GMF por meio do pacote com.ibm.xtools.umlnotation

O componente do UML Modeler suporta conteúdo de modelo UML em pacotes que não são modelos. Qualquer suposição de que o elemento-raiz é um modelo não é válida. Modelos não podem ser aninhados em pacotes. A suposição que um modelo não tenha proprietário é válida, embora você não deva fazer essa suposição. A API do UML Modeler gerencia as manifestações dessa suposição.

Para componentes que utilizam os recursos do UML Modeler, ocorrem os seguintes padrões comuns:

Referências à metaclasse do Modelo e à API relacionada:

Filtros de Ação no arquivo plugin.xml:
  • @isModel: Em muitos casos, substitua esse filtro pelo filtro novo @isModelRoot, que corresponde a qualquer pacote que não tenha proprietário e não seja um perfil.
  • @isModelOrProfile: Em muitos casos, esse filtro foi substituído pelo novo filtro @isRootPackage, que corresponde a qualquer pacote que não tenha proprietário.
  • @isPackage: Utilize esse filtro quando você supor que um elemento cuja metaclasse seja exatamente um pacote que tenha um proprietário.
  • @hasContainer e @hasNoContainer: Esses filtros representam que pacotes simples podem estar sem proprietário.
  • umlType e umlStrictType: Esses filtros testam o valor do "Modelo".

Vários:

  • Constantes de manifesto Java™ para o tipo de elemento de Modelo e quaisquer especializações: com.ibm.xtools.uml.type.UMLElementTypes.MODEL ( com.ibm.xtools.uml.core.internal.util.UMLType.MODEL é reprovado)
  • Expressões OCL que podem ocorrer em limitadores de perfil ou XML
  • Oferece acesso ao seguinte:
  • Metaclasse de modelo que utiliza métodos como Model.allInstances(), oclIsKindOf(Model), oclIsTypeof(Model), oclAsType(Model).
  • Operações definidas pelo UML que utilizam métodos como Element::getModel().
  • Gabaritos de Modelos UML e Bibliotecas para um gabarito ou biblioteca que deveria ser um Pacote em vez de um Modelo.
  • Perfis UML para estereótipos que estendem a metaclasse do Modelo, a qual deveria estender o Pacote, em seu lugar.
  • Expressões XPath com uma etapa inicial /Modelo para modelos JET, relatórios BIRT, planilhas XSLT e mais.
  • "com.ibm.xtools.uml.model" para o ID do tipo de elemento do Modelo (Tipos de Elemento GMF), e que também procura quaisquer especializações desse tipo de elemento que um componente pode definir.

Classe com.ibm.xtools.modeler.ui.UMLModeler

O pacote com.ibm.xtools.modeler.ui.UMLModeler contém a classe UMLModeler. A classe UMLModeler é uma classe do utilitário que apresenta operações de ciclo de vida de modelo e perfil, e que fornece acesso à plataforma de modelagem. A classe UMLModeler contém os métodos saveModelResourceAs(Element model, String file) e saveProfileAs(Profile profile, String file).

O método saveModelResourceAs(Element model, String file) salva o modelo que um elemento do modelo raiz especifica para o local que o file especifica. O método saveProfileAs(Profile profile, String file) salva o perfil especificado pelo perfil para o local especificado pelo file.

Nota: Algumas informações, como links para a documentação do Eclipse ou para guias de desenvolvedor, estão disponíveis apenas a partir dos tópicos na ajuda do produto.

Feedback