• Nenhum resultado encontrado

Capítulo 5 A Prova de Conceito

5.3 Aspectos da Manutenção dos Repositórios de Regras e de Ontologia

5.3.3 A Definição de Fatos

Além dos fatos que são criado automaticamente há os fatos que comporão as condições e ações das regras. Estes fatos poderão ser definidos isoladamente ou no instante de criação de regras. A Figura 5.5 mostra a seleção de modelo de fatos para definir um fato isoladamente e a Figura 5.6 mostra a mesma interface do Editor com alguns fatos já definidos.

Figura 5.6 - Editor de Fatos - Fatos definidos.

Neste ponto, é possível pesquisar por Serviços Web que realizem eventuais ações embutidas no fato em definição. Um clique no ícone “Pesquisa SW” e o Editor pesquisará no Mecanismo de Registro por URL de serviço Web para fazer o registro de Boletim de Ocorrência. Estes fatos são também acrescentados no Repositório de Regras conforme representação mostrada na Figura 5-7.

Figura 5.7 - Novos Fatos acrescentados pelo IDE.

Estes modelos em notação UML/MOF do sub-conjunto do vocabulário de identificação civil pode ser representado pelo trecho XML Schema mostrado na Tabela 5.7.

Tabela 5.7 - XML Schema do modelo UML/MOF para o vocabulário parcial de identificação civil.

<xsd:complexType name=“bo” > <xsd:complexContent >

<xsd:extension base=“esbvr:Instantiation”>

<xsd:choice minOccurs=“0” maxOccurs=“unbounded”> <xsd:element name=“bo” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“branch” type=“xsd:IDREF” use=“optional”/> </xsd:extension>

</xsd:complexContent> </xsd:complexType>

<xsd:element name=“bo” type=“bo”/> <xsd:complexType name=“rg” >

<xsd:complexContent >

<xsd:extension base=“esbvr:Instantiation”>

<xsd:choice minOccurs=“0” maxOccurs=“unbounded”> <xsd:element name=“rg” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“car” type=“xsd:IDREF” use=“optional”/> </xsd:extension>

</xsd:complexContent> </xsd:complexType>

<xsd:element name=“rg” type=“rg”/> <xsd:complexType name=“cidadao” >

<xsd:complexContent >

<xsd:extension base=“esbvr:Instantiation”>

<xsd:element name=“cidadao” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“car” type=“xsd:IDREF” use=“optional”/> </xsd:extension>

</xsd:complexContent> </xsd:complexType>

<xsd:element name=“cidadao” type=“cidadao”/> <xsd:complexType name=“nome” >

<xsd:complexContent >

<xsd:extension base=“esbvr:Instantiation”>

<xsd:choice minOccurs=“0” maxOccurs=“unbounded”> <xsd:element name=“nome” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“car” type=“xsd:IDREF” use=“optional”/> </xsd:extension>

</xsd:complexContent> </xsd:complexType>

<xsd:element name=“nome” type=“nome”/> <xsd:complexType name=“numero-rg” >

<xsd:complexContent >

<xsd:extension base=“esbvr:Instantiation”>

<xsd:choice minOccurs=“0” maxOccurs=“unbounded”>

<xsd:element name=“numero-rg” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“car” type=“xsd:IDREF” use=“optional”/> </xsd:extension>

</xsd:complexContent> </xsd:complexType>

<xsd:element name=“numero-rg” type=“numero-rg”/> <xsd:complexType name=“numero-bo” >

<xsd:complexContent >

<xsd:extension base=“esbvr:Instantiation”>

<xsd:choice minOccurs=“0” maxOccurs=“unbounded”>

<xsd:element name=“numero-bo” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“car” type=“xsd:IDREF” use=“optional”/> </xsd:extension>

</xsd:complexContent> </xsd:complexType>

<xsd:element name=“numero-bo” type=“numero-bo”/> <xsd:complexType name=“cidadao-tem-nome” >

<xsd:complexContent >

<xsd:extension base=“esbvr:Fact”>

<xsd:choice minOccurs=“0” maxOccurs=“unbounded”>

<xsd:element name=“cidadao” type=“esbvr:Referent”/> <xsd:element name=“nome” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“cidadao” type=“xsd:IDREF” use=“optional”/> <xsd:attribute name=“nome” type=“xsd:IDREF” use=“optional”/> </xsd:extension>

</xsd:complexContent> </xsd:complexType>

<xsd:element name=“cidadao-tem-nome” type=“cidadao-tem-nome”/> <xsd:complexType name=“cidadao-tem-rg” >

<xsd:complexContent >

<xsd:extension base=“esbvr:Fact”>

<xsd:choice minOccurs=“0” maxOccurs=“unbounded”>

<xsd:element name=“cidadao” type=“esbvr:Referent”/> <xsd:element name=“rg” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“cidado” type=“xsd:IDREF” use=“optional”/> <xsd:attribute name=“rg” type=“xsd:IDREF” use=“optional”/> </xsd:extension>

</xsd:complexContent> </xsd:complexType>

<xsd:element name=“cidadao-tem-rg” type=“cidadao-tem-rg”/> <xsd:complexType name=“cidadao-perdeu-rg-e-registrou-bo” >

<xsd:complexContent >

<xsd:extension base=“esbvr:Fact”>

<xsd:choice minOccurs=“0” maxOccurs=“unbounded”> <xsd:element name=“cidadao” type=“esbvr:Referent”/> <xsd:element name=“rg” type=“esbvr:Referent”/> <xsd:element name=“bo” type=“esbvr:Referent”/> </xsd:choice>

<xsd:attribute name=“car” type=“xsd:IDREF” use=“optional”/>

<xsd:attribute name=“vehicle-identification-number” type=“xsd:IDREF” use=“optional”/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name=“cidadao-perdeu-rg-e-registrou-bo” type=“cidadao-perdeu-rg-e-registrou-bo”/>

O trecho da Tabela 5.8 mostra como os fatos dos diagramas anteriores podem ser representados e validados pelo XML Schema produzido a partir do modelo UML/MOF, que por sua vez foi baseado no metamodelo SBVR.

Tabela 5.8 - Exemplo de fatos validados pelo XML Schema. <bo-tem-numero-bo bo="b" numero-bo="x"/>

<cidadão-tem-nome cidadão="c" nome="n"/> <cidadão-tem-rg cidadão="c" rg="r" /> <rg-tem-numero-rg rg="r" numero-rg="y"/> <cidadão-perdeu-rg-e-registrou-bo cidadão="c" rg="r" bo ="b"/> <rg-esta-cancelado rg="r"/> <esbvr:Thing xmi:id="b"/> <esbvr:Thing xmi:id="c"/> <esbvr:Thing xmi:id="r"/> <esbvr:Text xmi:id="x">123</esbvr:Text> <esbvr:Text xmi:id="n">José Silva</esbvrr:Text> <esbvr:Text xmi:id="y">987</esbvr:Text>