Book a Demo

Author Topic: CWM support in Sparx EA 12  (Read 9457 times)

Jes

  • EA Novice
  • *
  • Posts: 11
  • Karma: +0/-0
    • View Profile
CWM support in Sparx EA 12
« on: October 27, 2016, 12:18:56 am »
I would like to know what capabilities does EA provides in order to export a data model in the CWM format which is used by the Informatica MDM tool.

In my attempt to quickly import my Master Data Management data model into Informatica MDM I’ve stumbled on the following problem:
Informatica MDM can import data tables together with columns and references if they are defined using CWM (I know very little about this format).

It is clear that MDM uses the CWMRDB namespace to stitch together the model in the resulting XML file. The results looks a great deal as the one that EA produces when exporting a PDM , but not completely. For example:


INFORMATICA MDM CWM EXPORT:
          <CWM:Namespace.ownedElement>
            <CWMRDB:PrimaryKey xmi.id = 'a17' name = 'SVR1_1JAS'>
              <CWM:UniqueKey.feature>
                <CWMRDB:Column xmi.idref = 'a18'/>
              </CWM:UniqueKey.feature>
              <CWM:UniqueKey.keyRelationship>
                <CWMRDB:ForeignKey xmi.idref = 'a19'/>
              </CWM:UniqueKey.keyRelationship>
            </CWMRDB:PrimaryKey>
          </CWM:Namespace.ownedElement>



EA EXPORT:
<UML:Association xmi.id="EAID_63365DE7_E591_4123_93BE_D9F4C3F2C80D" visibility="public" isRoot="false" isLeaf="false" isAbstract="false">
     <UML:Association.connection>
           <UML:AssociationEnd visibility="public" name="Colour" aggregation="none" isOrdered="false" targetScope="instance" changeable="none" isNavigable="false" type="EAID_FE6D5C58_717C_4c37_94C8_48E51485C18C">
                <UML:AssociationEnd.multiplicity>
                     <UML:Multiplicity>
                           <UML:Multiplicity.range>
                                <UML:MultiplicityRange lower="0" upper="-1"/>
                           </UML:Multiplicity.range>
                     </UML:Multiplicity>
                </UML:AssociationEnd.multiplicity>
                <UML:AssociationEnd.participant>
                     <UML:Class xmi.idref="EAID_FE6D5C58_717C_4c37_94C8_48E51485C18C"/>
                </UML:AssociationEnd.participant>
           </UML:AssociationEnd>
           <UML:AssociationEnd visibility="public" aggregation="none" isOrdered="false" targetScope="instance" changeable="none" isNavigable="true" type="EAID_9CFB1BB2_2391_4e00_94D2_F2D333E18951"> <- Reference to Physical Characteristics
                <UML:AssociationEnd.multiplicity>
                     <UML:Multiplicity>
                           <UML:Multiplicity.range>
                                <UML:MultiplicityRange lower="0" upper="-1"/>
                           </UML:Multiplicity.range>
                     </UML:Multiplicity>
                </UML:AssociationEnd.multiplicity>
                <UML:AssociationEnd.participant>
                     <UML:Class xmi.idref="EAID_9CFB1BB2_2391_4e00_94D2_F2D333E18951"/>
                </UML:AssociationEnd.participant>
           </UML:AssociationEnd>
     </UML:Association.connection>
</UML:Association>



What would you suggest we do to close this GAP?
-   Build an EA transformation that would pass through all the design elements in a diagram and provide the expected XML?
-   Export the model from EA using the format that comes the closest to Informatica MDM and close the gap manually in a text editor?
-   Something else?



By the way, this is what Informatica MDM produces when exporting tables from it to an XML file. I guess what i need is to match this format 1 to 1.
Code: [Select]
<?xml version = '1.0' encoding = 'windows-1252' ?>
<XMI xmi.version = '1.2' xmlns:CWMTFM = 'org.omg.xmi.namespace.CWMTFM' xmlns:CWM = 'org.omg.xmi.namespace.CWM'
  xmlns:CWMRDB = 'org.omg.xmi.namespace.CWMRDB' xmlns:CWMOLAP = 'org.omg.xmi.namespace.CWMOLAP'
  timestamp = 'Wed Oct 26 07:16:26 UTC 2016'>
  <XMI.header>
    <XMI.documentation>
      <XMI.exporter>Netbeans XMI Writer</XMI.exporter>
      <XMI.exporterVersion>1.0</XMI.exporterVersion>
    </XMI.documentation>
  </XMI.header>
  <XMI.content>
    <CWMRDB:SQLSimpleType xmi.id = 'a1' name = 'NUMBER' isAbstract = 'false'
      typeNumber = '2'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a2' name = 'FLOAT' isAbstract = 'false'
      typeNumber = '6'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a3' name = 'INT' isAbstract = 'false' typeNumber = '4'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a4' name = 'CHAR' isAbstract = 'false' typeNumber = '1'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a5' name = 'NCHAR' isAbstract = 'false'
      typeNumber = '-15'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a6' name = 'VARCHAR' isAbstract = 'false'
      typeNumber = '12'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a7' name = 'VARCHAR2' isAbstract = 'false'
      typeNumber = '12'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a8' name = 'NVARCHAR' isAbstract = 'false'
      typeNumber = '-15'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a9' name = 'NVARCHAR2' isAbstract = 'false'
      typeNumber = '-15'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a10' name = 'DATE' isAbstract = 'false'
      typeNumber = '91'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a11' name = 'TIMESTAMP' isAbstract = 'false'
      typeNumber = '91'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a12' name = 'CLOB' isAbstract = 'false'
      typeNumber = '2005'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a13' name = 'BLOB' isAbstract = 'false'
      typeNumber = '2004'/>
    <CWMRDB:SQLSimpleType xmi.id = 'a14' name = 'BIGINT' isAbstract = 'false'
      typeNumber = '8'/>
    <CWMRDB:Schema xmi.id = 'a15' name = 'CMX_ORS_JSYC'>
      <CWM:Namespace.ownedElement>
        <CWMRDB:Table xmi.id = 'a16' name = 'C_TEST' isAbstract = 'false' isTemporary = 'false'
          isSystem = 'false'>
          <CWM:Namespace.ownedElement>
            <CWMRDB:PrimaryKey xmi.id = 'a17' name = 'SVR1_1ICD'>
              <CWM:UniqueKey.feature>
                <CWMRDB:Column xmi.idref = 'a18'/>
              </CWM:UniqueKey.feature>
            </CWMRDB:PrimaryKey>
          </CWM:Namespace.ownedElement>
          <CWM:Classifier.feature>
            <CWMRDB:Column xmi.id = 'a19' name = 'AUTH_STAT_DT' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a20' name = 'MAH_NUMBER' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '50'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a6'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a21' name = 'REGISTRATION_NO' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '50'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a6'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a22' name = 'EXCLVTY_END' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a23' name = 'INTR_BIRTH_DT' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a24' name = 'EXCLVTY_START' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a25' name = 'FIRST_AUTH_DT' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a26' name = 'VALIDITY_END' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a27' name = 'VALIDITY_START' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a28' name = 'PROTOCOL_NO' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '50'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a6'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a29' name = 'INVESTIGATION_C' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '50'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a6'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a30' name = 'AUTHORISATN_DT' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a31' name = 'ANTICPTD_END_DT' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a10'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a32' name = 'CM_DIRTY_IND' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a3'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a33' name = 'HUB_STATE_IND' precision = '0' scale = '0'
              isNullable = 'columnNoNulls' length = '0'>
              <CWM:Attribute.initialValue>
                <CWM:Expression xmi.id = 'a34' body = '1'/>
              </CWM:Attribute.initialValue>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a3'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a35' name = 'INTERACTION_ID' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a3'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a36' name = 'DIRTY_IND' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a3'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a37' name = 'DELETED_DATE' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a11'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a38' name = 'LAST_ROWID_SYSTEM' precision = '0'
              scale = '0' isNullable = 'columnNoNulls' length = '14'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a4'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a18' name = 'ROWID_OBJECT' precision = '0' scale = '0'
              isNullable = 'columnNoNulls' length = '14'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a4'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a39' name = 'CREATE_DATE' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:Attribute.initialValue>
                <CWM:Expression xmi.id = 'a40' body = 'CURRENT_TIMESTAMP'/>
              </CWM:Attribute.initialValue>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a11'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a41' name = 'UPDATED_BY' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '50'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a6'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a42' name = 'CREATOR' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '50'>
              <CWM:Attribute.initialValue>
                <CWM:Expression xmi.id = 'a43' body = 'CMX'/>
              </CWM:Attribute.initialValue>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a6'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a44' name = 'DELETED_IND' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a3'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a45' name = 'DELETED_BY' precision = '0' scale = '0'
              isNullable = 'columnNullable' length = '50'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a6'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a46' name = 'LAST_UPDATE_DATE' precision = '0'
              scale = '0' isNullable = 'columnNullable' length = '0'>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a11'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
            <CWMRDB:Column xmi.id = 'a47' name = 'CONSOLIDATION_IND' precision = '0'
              scale = '0' isNullable = 'columnNoNulls' length = '0'>
              <CWM:Attribute.initialValue>
                <CWM:Expression xmi.id = 'a48' body = '4'/>
              </CWM:Attribute.initialValue>
              <CWM:StructuralFeature.type>
                <CWMRDB:SQLSimpleType xmi.idref = 'a3'/>
              </CWM:StructuralFeature.type>
            </CWMRDB:Column>
          </CWM:Classifier.feature>
        </CWMRDB:Table>
      </CWM:Namespace.ownedElement>
    </CWMRDB:Schema>
  </XMI.content>
</XMI>


qwerty

  • EA Guru
  • *****
  • Posts: 13584
  • Karma: +397/-301
  • I'm no guru at all
    • View Profile
Re: CWM support in Sparx EA 12
« Reply #1 on: October 27, 2016, 12:59:16 am »
EA's export formats are visible when doing Export and clicking Publish. This list does not include this CWM format. Also I've never heard any talks about it. Maybe someone has developed some converter.

q.

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8110
  • Karma: +119/-20
    • View Profile
Re: CWM support in Sparx EA 12
« Reply #2 on: October 27, 2016, 08:35:48 am »
It looks like "CWM format" is XMI 1.2 with a CWM metamodel. EA can export XMI 1.2 with a UML metamodel.

I'm more familiar with XMI 1.1 or XMI 2.*, and know nothing about the CWM metamodel, but if I was trying to export CWM as a user I would use the XMI 1.2 format and then post process that to look like CWM. If you do it with an XSLT stylesheet, the publish dialog allows you to select one at time of export, or you can embed it into an MDG technology to define a new export format.