Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DMN-SCE retrofit #2 #35

Open
wants to merge 22 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
973bc3d
SCE-96/SCE-97 Update SCE to further backwards compatibility
falko Jan 30, 2024
ab9d5be
SCE-103/SCE-104 Mark abstract complexType as such
falko Jan 30, 2024
6510b2b
SCE-101/SCE-102 Update importType Property Description
falko Jan 30, 2024
ee1b291
SCE-99/SCE-100 Add extensionElements container and remove other exten…
barmac Jan 18, 2024
507f01f
SCE-105/SCE-106 Rename to tags and make it a list
falko Jan 30, 2024
c78a6b4
Merge SCE 1.0 Ballot 6 (#37)
falko Jan 30, 2024
e89af3d
SCE-96/SCE-97 make TextAnnotation backwards compatible
falko Jan 31, 2024
bc67e40
SCE-96/SCE-97 make Association and Relationship backwards compatible
falko Jan 31, 2024
8868324
SCE-107/SCE-108 Remove Annotation
falko Jan 31, 2024
bb0d4ca
SCE-96/SCE-97 make import more backwards compatible with DMN
falko Feb 1, 2024
6d3e271
feat: adjust DMN to extend SCE
barmac Jan 16, 2024
c528032
feat: use SCE extensions in DMN
barmac Jan 16, 2024
981eed4
chore: add extensionElements to other elements
barmac Jan 16, 2024
a6c6640
chore: adjust to renamed types
barmac Jan 18, 2024
9068d05
feat: adjust names
barmac Jan 18, 2024
9d4a828
chore: remove unused namespace
barmac Jan 18, 2024
0861eb6
chore: verify DI extension
barmac Jan 18, 2024
972b4b2
test: validate with omg-dmn-spec examples
barmac Feb 2, 2024
f9073de
fix: re-add elements removed by accident
barmac Feb 2, 2024
177a963
chore: remove unnecessary xsi:type attributes
barmac Feb 2, 2024
ee3f9e5
SCE: make modelElement optional
barmac Feb 2, 2024
2620b6d
feat: reuse sce artifacts
barmac Feb 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
79 changes: 27 additions & 52 deletions DMN/DMN15.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@
xmlns="https://www.omg.org/spec/DMN/20230324/MODEL/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/"
xmlns:sce="https://www.omg.org/spec/SCE/20211108/MODEL"
targetNamespace="https://www.omg.org/spec/DMN/20230324/MODEL/">

<xsd:import namespace="https://www.omg.org/spec/SCE/20211108/MODEL"
schemaLocation="../SCE/SCE.xsd"/>

<xsd:import namespace="https://www.omg.org/spec/DMN/20230324/DMNDI/"
schemaLocation="DMNDI15.xsd">
<xsd:annotation>
Expand All @@ -14,51 +18,45 @@
</xsd:annotation>
</xsd:import>

<xsd:element name="extensionElements" type="sce:tExtensionElements" />

<xsd:element name="DMNElement" type="tDMNElement" abstract="true"/>
<xsd:complexType name="tDMNElement">
<xsd:sequence>
<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<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>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID" use="optional"/>
<xsd:attribute name="label" type="xsd:string" use="optional"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
<xsd:complexContent>
<xsd:extension base="sce:tBaseElement">
<xsd:sequence>
<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="extensionElements" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="label" type="xsd:string" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="namedElement" type="tNamedElement" abstract="true" substitutionGroup="DMNElement"/>
<xsd:complexType name="tNamedElement">
<xsd:complexContent>
<xsd:extension base="tDMNElement">
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:extension>
<xsd:extension base="tDMNElement" />
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="tDMNElementReference">
<xsd:attribute name="href" type="xsd:anyURI" use="required"/>
</xsd:complexType>
<xsd:element name="definitions" type="tDefinitions" substitutionGroup="namedElement"/>
<xsd:element name="definitions" type="tDefinitions" />
<xsd:complexType name="tDefinitions">
<xsd:complexContent>
<xsd:extension base="tNamedElement">
<xsd:extension base="sce:tModel">
<xsd:sequence>
<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="extensionElements" minOccurs="0" maxOccurs="1" />
<xsd:element ref="import" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="itemDefinition" type="tItemDefinition" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="drgElement" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="sce:modelArtifact" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="elementCollection" type="tElementCollection" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="businessContextElement" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="dmndi:DMNDI" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="expressionLanguage" type="xsd:anyURI" use="optional" default="https://www.omg.org/spec/DMN/20230324/FEEL/"/>
<xsd:attribute name="typeLanguage" type="xsd:anyURI" use="optional" default="https://www.omg.org/spec/DMN/20230324/FEEL/"/>
<xsd:attribute name="namespace" type="xsd:anyURI" use="required"/>
<xsd:attribute name="exporter" type="xsd:string" use="optional"/>
<xsd:attribute name="exporterVersion" type="xsd:string" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Expand Down Expand Up @@ -331,7 +329,6 @@
<xsd:element name="outputValues" type="tUnaryTests" minOccurs="0"/>
<xsd:element name="defaultOutputEntry" type="tLiteralExpression" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="typeRef" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
Expand Down Expand Up @@ -391,50 +388,28 @@
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="artifact" type="tArtifact" abstract="true" substitutionGroup="DMNElement"/>
<xsd:complexType name="tArtifact">
<xsd:complexContent>
<xsd:extension base="tDMNElement"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="group" type="tGroup" substitutionGroup="artifact"/>
<xsd:complexType name="tGroup">
<xsd:complexContent>
<xsd:extension base="tArtifact">
<xsd:attribute name="name" type="xsd:string" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="textAnnotation" type="tTextAnnotation" substitutionGroup="artifact"/>
<xsd:element name="group" type="sce:tGroup" substitutionGroup="sce:group"/>
<xsd:element name="textAnnotation" type="tTextAnnotation" substitutionGroup="sce:textAnnotation"/>
<xsd:complexType name="tTextAnnotation">
<xsd:complexContent>
<xsd:extension base="tArtifact">
<xsd:extension base="sce:tTextAnnotation">
<xsd:sequence>
<xsd:element name="text" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="textFormat" type="xsd:string" default="text/plain"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="association" type="tAssociation" substitutionGroup="artifact"/>
<xsd:element name="association" type="tAssociation" substitutionGroup="sce:association" />
<xsd:complexType name="tAssociation">
<xsd:complexContent>
<xsd:extension base="tArtifact">
<xsd:extension base="sce:tAssociation">
<xsd:sequence>
<xsd:element name="sourceRef" type="tDMNElementReference"/>
<xsd:element name="targetRef" type="tDMNElementReference"/>
</xsd:sequence>
<xsd:attribute name="associationDirection" type="tAssociationDirection" default="None"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:simpleType name="tAssociationDirection">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="None"/>
<xsd:enumeration value="One"/>
<xsd:enumeration value="Both"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="context" type="tContext" substitutionGroup="expression"/>
<xsd:complexType name="tContext">
<xsd:complexContent>
Expand Down Expand Up @@ -561,7 +536,7 @@
<xsd:complexContent>
<xsd:extension base="tIterator">
<xsd:sequence>
<xsd:element name="satisfies" type="tChildExpression"/>
<xsd:element name="satisfies" type="tChildExpression"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
Expand Down
72 changes: 30 additions & 42 deletions DMN/DMNDI15.xsd
Original file line number Diff line number Diff line change
@@ -1,41 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/"
xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"
xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"
xmlns:dc="http://www.omg.org/spec/SCE/20210830/DC"
xmlns:di="http://www.omg.org/spec/SCE/20210830/DI"
xmlns:scedi="https://www.omg.org/spec/SCE/20211108/SCEDI"
targetNamespace="https://www.omg.org/spec/DMN/20230324/DMNDI/"
elementFormDefault="qualified" attributeFormDefault="unqualified">

<xsd:import namespace="http://www.omg.org/spec/DMN/20180521/DC/"
schemaLocation="DC.xsd"/>
<xsd:import namespace="http://www.omg.org/spec/DMN/20180521/DI/"
schemaLocation="DI.xsd"/>
<xsd:import namespace="http://www.omg.org/spec/SCE/20210830/DC"
schemaLocation="../SCE/DC.xsd"/>
<xsd:import namespace="http://www.omg.org/spec/SCE/20210830/DI"
schemaLocation="../SCE/DI.xsd"/>
<xsd:import namespace="https://www.omg.org/spec/SCE/20211108/SCEDI"
schemaLocation="../SCE/SCEDI.xsd"/>

<xsd:element name="DMNDI" type="dmndi:DMNDI"/>
<xsd:element name="DMNDI" type="dmndi:DMNDI" substitutionGroup="scedi:diagrams"/>
<xsd:element name="DMNDiagram" type="dmndi:DMNDiagram"/>
<xsd:element name="DMNDiagramElement" type="di:DiagramElement">
<xsd:element name="DMNDiagramElement" type="di:tDiagramElement">
<xsd:annotation>
<xsd:documentation>This element should never be instantiated directly, but rather concrete implementation should. It is placed there only to be referred in the sequence</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="DMNShape" type="dmndi:DMNShape" substitutionGroup="dmndi:DMNDiagramElement"/>
<xsd:element name="DMNEdge" type="dmndi:DMNEdge" substitutionGroup="dmndi:DMNDiagramElement"/>
<xsd:element name="DMNStyle" type="dmndi:DMNStyle" substitutionGroup="di:Style"/>
<xsd:element name="DMNLabel" type="dmndi:DMNLabel"/>
<xsd:element name="DMNStyle" type="dmndi:DMNStyle" substitutionGroup="scedi:style"/>
<xsd:element name="DMNLabel" type="dmndi:DMNLabel" substitutionGroup="scedi:label"/>
<xsd:element name="DMNDecisionServiceDividerLine" type="dmndi:DMNDecisionServiceDividerLine"/>

<xsd:complexType name="DMNDI">
<xsd:sequence>
<xsd:element ref="dmndi:DMNDiagram" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="dmndi:DMNStyle" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:complexContent>
<xsd:extension base="scedi:tDiagrams">
<xsd:sequence>
<xsd:element ref="dmndi:DMNDiagram" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="dmndi:DMNStyle" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="DMNDiagram">
<xsd:complexContent>
<xsd:extension base="di:Diagram">
<xsd:extension base="scedi:tDiagram">
<xsd:sequence>
<xsd:element name="Size" type="dc:Dimension" minOccurs="0" maxOccurs="1"/>
<xsd:element name="Size" type="dc:tDimension" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="dmndi:DMNDiagramElement" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="useAlternativeInputDataShape" type="xsd:boolean" use="optional" default="false"/>
Expand All @@ -45,9 +52,8 @@

<xsd:complexType name="DMNShape">
<xsd:complexContent>
<xsd:extension base="di:Shape">
<xsd:extension base="scedi:tShape">
<xsd:sequence>
<xsd:element ref="dmndi:DMNLabel" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="dmndi:DMNDecisionServiceDividerLine" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="dmnElementRef" type="xsd:QName" use="required"/>
Expand All @@ -57,28 +63,23 @@
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="DMNDecisionServiceDividerLine">
<xsd:complexType name="DMNDecisionServiceDividerLine">
<xsd:complexContent>
<xsd:extension base="di:Edge"/>
<xsd:extension base="scedi:tEdge"/>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="DMNEdge">
<xsd:complexContent>
<xsd:extension base="di:Edge">
<xsd:sequence>
<xsd:element ref="dmndi:DMNLabel" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:extension base="scedi:tEdge">
<xsd:attribute name="dmnElementRef" type="xsd:QName" use="required"/>
<xsd:attribute name="sourceElement" type="xsd:QName" use="optional"/>
<xsd:attribute name="targetElement" type="xsd:QName" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="DMNLabel">
<xsd:complexContent>
<xsd:extension base="di:Shape">
<xsd:extension base="scedi:tLabel">
<xsd:sequence>
<xsd:element name="Text" type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
Expand All @@ -88,22 +89,9 @@

<xsd:complexType name="DMNStyle">
<xsd:complexContent>
<xsd:extension base="di:Style">
<xsd:sequence>
<xsd:element name="FillColor" type="dc:Color" minOccurs="0" maxOccurs="1"/>
<xsd:element name="StrokeColor" type="dc:Color" minOccurs="0" maxOccurs="1"/>
<xsd:element name="FontColor" type="dc:Color" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
Comment on lines -92 to -96
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@barmac these have to stay for the namespace.

<xsd:attribute name="fontFamily" type="xsd:string"/>
<xsd:attribute name="fontSize" type="xsd:double"/>
<xsd:attribute name="fontItalic" type="xsd:boolean"/>
<xsd:attribute name="fontBold" type="xsd:boolean"/>
<xsd:attribute name="fontUnderline" type="xsd:boolean"/>
<xsd:attribute name="fontStrikeThrough" type="xsd:boolean"/>
<xsd:attribute name="labelHorizontalAlignement" type="dc:AlignmentKind"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has to stay because SCE fixed the typo.

<xsd:attribute name="labelVerticalAlignment" type="dc:AlignmentKind"/>
<xsd:extension base="scedi:tStyle">
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

</xsd:schema>
</xsd:schema>
6 changes: 6 additions & 0 deletions DMN/test/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.PHONY: all
all: validate

.PHONY: validate
validate:
find . -name '*.dmn' -exec xmllint --schema ../DMN15.xsd --noout {} \;
43 changes: 43 additions & 0 deletions DMN/test/example.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns="https://www.omg.org/spec/DMN/20211108/MODEL/"
xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/"
xmlns:dc="http://www.omg.org/spec/SCE/20210830/DC"
xmlns:di="http://www.omg.org/spec/SCE/20210830/DI"
xmlns:scedi="https://www.omg.org/spec/SCE/20211108/SCEDI"
id="Definitions_1yjpawl"
name="DRD"
namespace="http://camunda.org/schema/1.0/dmn"
>
<decision id="Decision_1" name="Decision 1">
<informationRequirement id="InformationRequirement_1mk58yo">
<requiredInput href="#InputData_1" />
</informationRequirement>
<decisionTable id="DecisionTable_0wgzwut">
<input id="Input_1">
<inputExpression id="InputExpression_1" typeRef="string">
<text></text>
</inputExpression>
</input>
<output id="Output_1" typeRef="string" />
</decisionTable>
</decision>
<inputData id="InputData_1" name="Input" />
<dmndi:DMNDI>
<dmndi:DMNDiagram>
<dmndi:DMNShape dmnElementRef="Decision_1">
<dc:Bounds height="80" width="180" x="160" y="100" />
<scedi:sceElementRef>Decision_1</scedi:sceElementRef>
</dmndi:DMNShape>
<dmndi:DMNShape id="DMNShape_1a0wixn" dmnElementRef="InputData_1">
<dc:Bounds height="45" width="125" x="187" y="337" />
<scedi:sceElementRef>InputData_1</scedi:sceElementRef>
</dmndi:DMNShape>
<dmndi:DMNEdge id="DMNEdge_1r1zmhs" dmnElementRef="InformationRequirement_1mk58yo">
<di:waypoint x="250" y="337" />
<di:waypoint x="250" y="200" />
<di:waypoint x="250" y="180" />
</dmndi:DMNEdge>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</definitions>