Incluindo Restrições XSD em Valores nos Modelos UML

Você pode incluir uma restrição em um tipo simples ou complexo em um modelo UML, e então executar uma transformação UML-para-XSD para gerar um esquema XML que contém tipos simples ou complexos com seus possíveis valores restritos para corresponder a um padrão que uma expressão regular especifica. Também pode executar uma transformação XSD-para-UML em um esquema que contém um tipo com restrição para gerar esses elementos no modelo.
Antes de Iniciar
É necessário aplicar o perfil de transformação XSD em seu modelo, e seu modelo deve conter um pacote com o estereótipo «schema».
Por Que e Quando Desempenhar Esta Tarefa
A classe de origem no modelo pode ser um tipo simples ou complexo que possui um relacionamento de generalização com outro tipo simples ou complexo, respectivamente. Quando você executa uma transformação UML-para-XSD no modelo de origem, se uma generalização entre tipos simples não tiver nenhum estereótipo, ela ainda é gerada como uma restrição XSD no esquema XML, porque os tipos simples não podem ter uma extensão como um elemento filho. Se a generalização entre tipos complexos não tiver estereótipo, ela é gerada como uma extensão XSD no esquema XML. Se a mesma generalização tiver a restrição «restriction», ela é gerada como uma restrição XSD.

Quando você executa uma transformação XSD-para-UML em um esquema XML, as restrições XSD geram tipos simples ou complexos com um relacionamento de generalização para outro tipo da mesma espécie. O relacionamento de generalização é gerado com um estereótipo «restriction».

Para restringir um tipo denominado Class1 em um pacote denominado Package1:

  1. Na visualização Explorador de Projetos, inclua uma classe ao pacote do esquema; em seguida, aplique o estereótipo «simpleType» ou «complexType» à classe. Por exemplo, inclua uma classe denominada Class1 a um pacote do esquema.
  2. Edite as propriedades UML da Class1 para criar um relacionamento de generalização:
    1. Clique com o botão direito do mouse em Class1; então clique em Propriedades UML.
    2. Clique em Generalização.
    3. No canto superior direito da janela Propriedades, clique em Inserir Nova Generalização, que está representado por um botão com um ícone de seta.
    4. Na janela Selecionar Elemento, procure o modelo, expanda o elemento do modelo e então expanda (XSDDataTypes) > XSDDataTypes.
    5. Selecione um tipo de dado. Por exemplo, selecione cadeia.
    6. Clique em OK.
    7. Clique em Fechar.

    A figura a seguir mostra a janela Propriedades em segundo plano e a janela Selecionar Elemento em primeiro plano, que foi aberta para criar um relacionamento de generalização.

    A captura de tela mostra a janela Propriedades em segundo plano com a janela Selecionar Elemento aberta em primeiro plano e a árvore do projeto está expandida para exibir os XSDDataTypes.

  3. Na visualização Explorador de Projetos, expanda a classe denominada Class1, e selecione o novo relacionamento de generalização.
  4. Na visualização da Propriedade, clique na guia Estereótipos; em seguida, clique em Aplicar Estereótipo e selecione restrição. A figura a seguir mostra uma visualização do diagrama dos novos elementos de modelo que foram criados.

    A captura de tela mostra uma visualização do diagrama de Class1 em estereótipo simpleType com uma restrição em estereótipo de relacionamento de generalização para um tipo de cadeia.

  5. Selecione a classe denominada Class1; em seguida, na visualização Propriedades, clique na guia Estereótipos.
  6. Sob a seção Propriedades do Estereótipo, selecione a propriedade padrão e digite um valor para definir a restrição. Por exemplo, digite [0-9]{5}(-[0-9]{4})? como valor para padrão como mostra a seguinte figura.

    A captura de tela mostra a visualização de Propriedades com a guia Estereótipo selecionada e a propriedade padrão destacada.

Exemplo
Depois de configurar e executar uma transformação UML-para-XSD com Package1 como a origem, o modelo de exemplo gera um esquema XML semelhante ao seguinte código XML:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:Package1="http://Package1/" targetNamespace="http://Package1/">
  <xsd:simpleType name="Class1">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>

Feedback