Uploaded image for project: 'Kogito'
  1. Kogito
  2. KOGITO-255

[DMN Designer] Client-side marshaller: Support for extensions

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Done
    • Icon: Major Major
    • None
    • 0.3.0
    • Authoring Tooling
    • None

      The DMN specification supports extensions.

      The server-side marshaller is based on XStream and extensions are registered and a helper class used to marshall/unmarshall the extensions. The client-side marshaller is based on JAXB and hence does not understand arbitrary extensions. We need support for the two KIE extensions:-

      Components Widths Extension
      This stores widths of columns in the DMN file's DI section.

        <dmndi:DMNDI>
          <dmndi:DMNDiagram>
            <di:extension>
              <kie:ComponentsWidthsExtension>
                <kie:ComponentWidths dmnElementRef="_950674CF-0C37-4BB3-B19A-85DAD7A1F815">
                  <kie:width>50.0</kie:width>
                  <kie:width>149.0</kie:width>
                  <kie:width>129.0</kie:width>
                  <kie:width>168.0</kie:width>
                </kie:ComponentWidths>
              </kie:ComponentsWidthsExtension>
            </di:extension>
            <dmndi:DMNShape id="dmnshape-_36D6015E-195F-4D95-8E69-34F5983ECCAF" dmnElementRef="_36D6015E-195F-4D95-8E69-34F5983ECCAF" isCollapsed="false">
              <dmndi:DMNStyle>
                <dmndi:FillColor red="255" green="255" blue="255"></dmndi:FillColor>
                <dmndi:StrokeColor red="0" green="0" blue="0"></dmndi:StrokeColor>
                <dmndi:FontColor red="0" green="0" blue="0"></dmndi:FontColor>
              </dmndi:DMNStyle>
              <dc:Bounds x="191" y="168" width="100" height="50"></dc:Bounds>
              <dmndi:DMNLabel></dmndi:DMNLabel>
            </dmndi:DMNShape>
          </dmndi:DMNDiagram>
        </dmndi:DMNDI>
      

      This is the corresponding DMNDI.xsd segment:

      <xsd:element name="extension" minOccurs="0">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      

      Document Links Extension
      This stores details of attachments in the DMN DRGElement node.

        <dmn:decision id="_36D6015E-195F-4D95-8E69-34F5983ECCAF" name="Decision-1">
          <dmn:extensionElements>
            <kie:attachment url="http://www.google.co.uk" name="attachment1"></kie:attachment>
            <kie:attachment url="http://www.yahoo.co.uk" name="attachment2"></kie:attachment>
          </dmn:extensionElements>
          <dmn:variable id="_8838B4E9-A3DC-4739-ADF4-F39941352F8D" name="Decision-1"></dmn:variable>
          <dmn:decisionTable id="_950674CF-0C37-4BB3-B19A-85DAD7A1F815" hitPolicy="UNIQUE" preferredOrientation="Rule-as-Row">
            <dmn:input id="_8BA78C96-6022-4B67-A369-2CAC76A213F7">
              <dmn:inputExpression id="_D5C4C2BC-B63E-4C06-877A-6D698DDDAAED">
                <dmn:text>input-1</dmn:text>
              </dmn:inputExpression>
            </dmn:input>
            <dmn:output id="_07CA2BE3-7C45-45CB-AADB-AB16D6CB16A6"></dmn:output>
            <dmn:rule id="_FAD8B90B-4DBB-4C5E-8C25-C9DDDDF2F9D0">
              <dmn:inputEntry id="_1C4E5E77-A352-4A64-8052-78F13A9E78E2">
                <dmn:text></dmn:text>
              </dmn:inputEntry>
              <dmn:outputEntry id="_B8BC60A8-4299-42FD-85B3-9FBD6E8B60B6">
                <dmn:text></dmn:text>
              </dmn:outputEntry>
            </dmn:rule>
          </dmn:decisionTable>
        </dmn:decision>
      

      This is the corresponding DMN12.xsd segment:

      <xsd:element name="extensionElements" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      

      Third party extensions
      Ideally we need to support arbritray third-party extensions too; however their format/structure can be anything.

            gcardosi Gabriele Cardosi (Inactive)
            manstis@redhat.com Michael Anstis
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: