Skip to content

Commit

Permalink
DROOLS-3903 DMN Submarine endpoint codegen (#71)
Browse files Browse the repository at this point in the history
* DROOLS-3814 DMN Submarine Example on Quarkus

* Allegedly external module problems fixed >0.13.1, upgrade to 0.13.3

* Add byName endpoint

* License header

* Downgrade to Quarkus 0.12.0 to test Jenkins CI pipeline

* Try inherit 0.13.1 from submarine BOM (failed locally on 2019-05-16)

* Revert and downgrade again to Quarkus 0.12 for Jenkins CI

* Try with 0.13.1 and Jenkins CI

* Downgrade to Quarkus 0.12.0 for Jenkins CI

Error on Jenkins CI is:
io.quarkus.bootstrap.BootstrapException: Failed to locate current
project among the loaded local projects

locally building fine.

* Align to -runtimes kie-dmn-rest-utils rename

* Implement review feedback

* renaming submarine in kogito (#1)

* Rework using Application injection

* Working ok with generated endpoint for the model

* cleanups

* version alignment for the native maven profile (locally checked)
  • Loading branch information
tarilabs authored and evacchi committed Aug 27, 2019
1 parent 0dc9e33 commit 7239709
Show file tree
Hide file tree
Showing 6 changed files with 461 additions and 0 deletions.
15 changes: 15 additions & 0 deletions dmn-quarkus-example/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/target
/local
/bin

# Eclipse, Netbeans and IntelliJ files
/.*
!.gitignore
/nbproject
/*.ipr
/*.iws
/*.iml

dependency-reduced-pom.xml
/*.log

136 changes: 136 additions & 0 deletions dmn-quarkus-example/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.kie.kogito</groupId>
<artifactId>kogito-examples</artifactId>
<version>8.0.0-SNAPSHOT</version>
</parent>
<artifactId>dmn-quarkus-example</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-bom</artifactId>
<version>${version.io.quarkus}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>

<dependency>
<groupId>org.kie.kogito</groupId>
<artifactId>kogito-dmn-rest-utils</artifactId>
</dependency>

<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.kie.kogito</groupId>
<artifactId>kogito-maven-plugin</artifactId>
<extensions>true</extensions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemProperties>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemProperties>
</configuration>
</plugin>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<configuration>
<enableHttpUrlHandler>true</enableHttpUrlHandler>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<systemProperties>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner
</native.image.path>
</systemProperties>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
230 changes: 230 additions & 0 deletions dmn-quarkus-example/src/main/resources/Traffic Violation.dmn
Original file line number Diff line number Diff line change
@@ -0,0 +1,230 @@
<?xml version='1.0' encoding='UTF-8'?>
<dmn:definitions xmlns:dmn="http://www.omg.org/spec/DMN/20180521/MODEL/" xmlns="https://github.com/kiegroup/drools/kie-dmn/_A4BCA8B8-CF08-433F-93B2-A2598F19ECFF" xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/" xmlns:kie="http://www.drools.org/kie/dmn/1.2" xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/" xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" id="_1C792953-80DB-4B32-99EB-25FBE32BAF9E" name="Traffic Violation" expressionLanguage="http://www.omg.org/spec/DMN/20180521/FEEL/" typeLanguage="http://www.omg.org/spec/DMN/20180521/FEEL/" namespace="https://github.com/kiegroup/drools/kie-dmn/_A4BCA8B8-CF08-433F-93B2-A2598F19ECFF">
<dmn:extensionElements/>
<dmn:itemDefinition id="_63824D3F-9173-446D-A940-6A7F0FA056BB" name="tDriver" isCollection="false">
<dmn:itemComponent id="_9DAB5DAA-3B44-4F6D-87F2-95125FB2FEE4" name="Name" isCollection="false">
<dmn:typeRef>string</dmn:typeRef>
</dmn:itemComponent>
<dmn:itemComponent id="_856BA8FA-EF7B-4DF9-A1EE-E28263CE9955" name="Age" isCollection="false">
<dmn:typeRef>number</dmn:typeRef>
</dmn:itemComponent>
<dmn:itemComponent id="_FDC2CE03-D465-47C2-A311-98944E8CC23F" name="State" isCollection="false">
<dmn:typeRef>string</dmn:typeRef>
</dmn:itemComponent>
<dmn:itemComponent id="_D6FD34C4-00DC-4C79-B1BF-BBCF6FC9B6D7" name="City" isCollection="false">
<dmn:typeRef>string</dmn:typeRef>
</dmn:itemComponent>
<dmn:itemComponent id="_7110FE7E-1A38-4C39-B0EB-AEEF06BA37F4" name="Points" isCollection="false">
<dmn:typeRef>number</dmn:typeRef>
</dmn:itemComponent>
</dmn:itemDefinition>
<dmn:itemDefinition id="_40731093-0642-4588-9183-1660FC55053B" name="tViolation" isCollection="false">
<dmn:itemComponent id="_39E88D9F-AE53-47AD-B3DE-8AB38D4F50B3" name="Code" isCollection="false">
<dmn:typeRef>string</dmn:typeRef>
</dmn:itemComponent>
<dmn:itemComponent id="_1648EA0A-2463-4B54-A12A-D743A3E3EE7B" name="Date" isCollection="false">
<dmn:typeRef>date</dmn:typeRef>
</dmn:itemComponent>
<dmn:itemComponent id="_9F129EAA-4E71-4D99-B6D0-84EEC3AC43CC" name="Type" isCollection="false">
<dmn:typeRef>string</dmn:typeRef>
<dmn:allowedValues kie:constraintType="enumeration" id="_626A8F9C-9DD1-44E0-9568-0F6F8F8BA228">
<dmn:text>"speed", "parking", "driving under the influence"</dmn:text>
</dmn:allowedValues>
</dmn:itemComponent>
<dmn:itemComponent id="_DDD10D6E-BD38-4C79-9E2F-8155E3A4B438" name="Speed Limit" isCollection="false">
<dmn:typeRef>number</dmn:typeRef>
</dmn:itemComponent>
<dmn:itemComponent id="_229F80E4-2892-494C-B70D-683ABF2345F6" name="Actual Speed" isCollection="false">
<dmn:typeRef>number</dmn:typeRef>
</dmn:itemComponent>
</dmn:itemDefinition>
<dmn:itemDefinition id="_2D4F30EE-21A6-4A78-A524-A5C238D433AE" name="tFine" isCollection="false">
<dmn:itemComponent id="_B9F70BC7-1995-4F51-B949-1AB65538B405" name="Amount" isCollection="false">
<dmn:typeRef>number</dmn:typeRef>
</dmn:itemComponent>
<dmn:itemComponent id="_F49085D6-8F08-4463-9A1A-EF6B57635DBD" name="Points" isCollection="false">
<dmn:typeRef>number</dmn:typeRef>
</dmn:itemComponent>
</dmn:itemDefinition>
<dmn:inputData id="_1929CBD5-40E0-442D-B909-49CEDE0101DC" name="Violation">
<dmn:variable id="_C16CF9B1-5FAB-48A0-95E0-5FCD661E0406" name="Violation" typeRef="tViolation"/>
</dmn:inputData>
<dmn:decision id="_4055D956-1C47-479C-B3F4-BAEB61F1C929" name="Fine">
<dmn:variable id="_8C1EAC83-F251-4D94-8A9E-B03ACF6849CD" name="Fine" typeRef="tFine"/>
<dmn:informationRequirement id="_800A3BBB-90A3-4D9D-BA5E-A311DED0134F">
<dmn:requiredInput href="#_1929CBD5-40E0-442D-B909-49CEDE0101DC"/>
</dmn:informationRequirement>
<dmn:decisionTable id="_C8F7F579-E06C-4A2F-8485-65FAFAC3FE6A" hitPolicy="UNIQUE" preferredOrientation="Rule-as-Row">
<dmn:input id="_B53A6F0D-F72C-41EF-96B3-F31269AC0FED">
<dmn:inputExpression id="_974C8D01-728F-4CE5-8C69-BE884125B859" typeRef="string">
<dmn:text>Violation.Type</dmn:text>
</dmn:inputExpression>
</dmn:input>
<dmn:input id="_D5319F80-1C59-4736-AF2D-D29DE6B7E76D">
<dmn:inputExpression id="_3FEB4DE3-90C6-438E-99BF-9BB1BF5B078A" typeRef="number">
<dmn:text>Violation.Actual Speed - Violation.Speed Limit</dmn:text>
</dmn:inputExpression>
</dmn:input>
<dmn:output id="_9012031F-9C01-44E5-8CD2-E6704D594504" name="Amount" typeRef="number"/>
<dmn:output id="_7CAC8240-E1A5-4FEB-A0D4-B8613F0DE54B" name="Points" typeRef="number"/>
<dmn:rule id="_424A80AE-916F-4451-9B6B-71557F7EC65A">
<dmn:inputEntry id="_EDA4F336-AA28-4F5F-ADFC-401E6DCC8D35">
<dmn:text>"speed"</dmn:text>
</dmn:inputEntry>
<dmn:inputEntry id="_246AAB08-A945-4599-9220-7C24B6716FDD">
<dmn:text>[10..30)</dmn:text>
</dmn:inputEntry>
<dmn:outputEntry id="_E49345EE-51D3-47C7-B658-3607E723FF37">
<dmn:text>500</dmn:text>
</dmn:outputEntry>
<dmn:outputEntry id="_1D56F3CB-6BAE-4415-940F-00F37121813D">
<dmn:text>3</dmn:text>
</dmn:outputEntry>
</dmn:rule>
<dmn:rule id="_B1ECE6A9-6B82-4A85-A7CA-5F96CDB0DCB6">
<dmn:inputEntry id="_2390F686-65CF-40FF-BF9A-72DFBAEBACAC">
<dmn:text>"speed"</dmn:text>
</dmn:inputEntry>
<dmn:inputEntry id="_8CEBE4D5-DBEF-46EF-BD95-7B96148B6D8A">
<dmn:text>&gt;= 30</dmn:text>
</dmn:inputEntry>
<dmn:outputEntry id="_5FCC56B7-6BAA-4B09-AC61-7EB9D4CD58C3">
<dmn:text>1000</dmn:text>
</dmn:outputEntry>
<dmn:outputEntry id="_79FF8FDD-3299-4DFD-AA14-D2022504BDAD">
<dmn:text>7</dmn:text>
</dmn:outputEntry>
</dmn:rule>
<dmn:rule id="_8FC7068C-A3FD-44D9-AC2B-69C160A12E5D">
<dmn:inputEntry id="_02EEE8A9-1AD7-4708-8EC8-9B4177B05167">
<dmn:text>"parking"</dmn:text>
</dmn:inputEntry>
<dmn:inputEntry id="_A5141FF4-8D63-49DB-8979-3B64A3BD9A82">
<dmn:text>-</dmn:text>
</dmn:inputEntry>
<dmn:outputEntry id="_EFDA632D-113D-46C9-94B8-78E9F9770CA4">
<dmn:text>100</dmn:text>
</dmn:outputEntry>
<dmn:outputEntry id="_05F86973-52CE-4C9D-B785-47B6340D10FD">
<dmn:text>1</dmn:text>
</dmn:outputEntry>
</dmn:rule>
<dmn:rule id="_A742DF2B-DC91-4166-9773-6EF86A45A625">
<dmn:inputEntry id="_F5B5AE87-D9E6-4142-B01D-D79D4BA49EEE">
<dmn:text>"driving under the influence"</dmn:text>
</dmn:inputEntry>
<dmn:inputEntry id="_BD2A43F5-46D8-436A-B8A1-D98747C836B1">
<dmn:text>-</dmn:text>
</dmn:inputEntry>
<dmn:outputEntry id="_ECAF3378-46B6-4F40-B95A-E90DB700BF7D">
<dmn:text>1000</dmn:text>
</dmn:outputEntry>
<dmn:outputEntry id="_F0016A9C-D1D0-472A-9FB3-ABE77AD15F7D">
<dmn:text>5</dmn:text>
</dmn:outputEntry>
</dmn:rule>
</dmn:decisionTable>
</dmn:decision>
<dmn:inputData id="_1F9350D7-146D-46F1-85D8-15B5B68AF22A" name="Driver">
<dmn:variable id="_A80F16DF-0DB4-43A2-B041-32900B1A3F3D" name="Driver" typeRef="tDriver"/>
</dmn:inputData>
<dmn:decision id="_8A408366-D8E9-4626-ABF3-5F69AA01F880" name="Should the driver be suspended?">
<dmn:question>Should the driver be suspended due to points on his license?</dmn:question>
<dmn:allowedAnswers>"Yes", "No"</dmn:allowedAnswers>
<dmn:variable id="_40387B66-5D00-48C8-BB90-E83EE3332C72" name="Should the driver be suspended?" typeRef="string"/>
<dmn:informationRequirement id="_982211B1-5246-49CD-BE85-3211F71253CF">
<dmn:requiredInput href="#_1F9350D7-146D-46F1-85D8-15B5B68AF22A"/>
</dmn:informationRequirement>
<dmn:informationRequirement id="_AEC4AA5F-50C3-4FED-A0C2-261F90290731">
<dmn:requiredDecision href="#_4055D956-1C47-479C-B3F4-BAEB61F1C929"/>
</dmn:informationRequirement>
<dmn:context id="_F39732F1-0AA7-468F-86C4-DCC07E6F81CF">
<dmn:contextEntry>
<dmn:variable id="_09385E8D-68E0-4DFD-AAD8-141C15C96B71" name="Total Points" typeRef="number"/>
<dmn:literalExpression id="_F1BEBF16-033F-4A25-9523-CAC23ACC5DFC">
<dmn:text>Driver.Points + Fine.Points</dmn:text>
</dmn:literalExpression>
</dmn:contextEntry>
<dmn:contextEntry>
<dmn:literalExpression id="_1929D813-B1C9-43C5-9497-CE5D8B2B040C">
<dmn:text>if Total Points >= 20 then "Yes" else "No"</dmn:text>
</dmn:literalExpression>
</dmn:contextEntry>
</dmn:context>
</dmn:decision>
<dmndi:DMNDI>
<dmndi:DMNDiagram>
<di:extension>
<kie:ComponentsWidthsExtension>
<kie:ComponentWidths dmnElementRef="_C8F7F579-E06C-4A2F-8485-65FAFAC3FE6A">
<kie:width>50.0</kie:width>
<kie:width>254.0</kie:width>
<kie:width>329.0</kie:width>
<kie:width>119.0</kie:width>
<kie:width>100.0</kie:width>
<kie:width>186.0</kie:width>
</kie:ComponentWidths>
<kie:ComponentWidths dmnElementRef="_F39732F1-0AA7-468F-86C4-DCC07E6F81CF">
<kie:width>50.0</kie:width>
<kie:width>100.0</kie:width>
<kie:width>398.0</kie:width>
</kie:ComponentWidths>
<kie:ComponentWidths dmnElementRef="_F1BEBF16-033F-4A25-9523-CAC23ACC5DFC">
<kie:width>398.0</kie:width>
</kie:ComponentWidths>
<kie:ComponentWidths dmnElementRef="_1929D813-B1C9-43C5-9497-CE5D8B2B040C">
<kie:width>398.0</kie:width>
</kie:ComponentWidths>
</kie:ComponentsWidthsExtension>
</di:extension>
<dmndi:DMNShape id="dmnshape-_1929CBD5-40E0-442D-B909-49CEDE0101DC" dmnElementRef="_1929CBD5-40E0-442D-B909-49CEDE0101DC" isCollapsed="false">
<dmndi:DMNStyle>
<dmndi:FillColor red="255" green="255" blue="255"/>
<dmndi:StrokeColor red="0" green="0" blue="0"/>
<dmndi:FontColor red="0" green="0" blue="0"/>
</dmndi:DMNStyle>
<dc:Bounds x="708" y="350" width="100" height="50"/>
<dmndi:DMNLabel/>
</dmndi:DMNShape>
<dmndi:DMNShape id="dmnshape-_4055D956-1C47-479C-B3F4-BAEB61F1C929" dmnElementRef="_4055D956-1C47-479C-B3F4-BAEB61F1C929" isCollapsed="false">
<dmndi:DMNStyle>
<dmndi:FillColor red="255" green="255" blue="255"/>
<dmndi:StrokeColor red="0" green="0" blue="0"/>
<dmndi:FontColor red="0" green="0" blue="0"/>
</dmndi:DMNStyle>
<dc:Bounds x="709" y="210" width="100" height="50"/>
<dmndi:DMNLabel/>
</dmndi:DMNShape>
<dmndi:DMNShape id="dmnshape-_1F9350D7-146D-46F1-85D8-15B5B68AF22A" dmnElementRef="_1F9350D7-146D-46F1-85D8-15B5B68AF22A" isCollapsed="false">
<dmndi:DMNStyle>
<dmndi:FillColor red="255" green="255" blue="255"/>
<dmndi:StrokeColor red="0" green="0" blue="0"/>
<dmndi:FontColor red="0" green="0" blue="0"/>
</dmndi:DMNStyle>
<dc:Bounds x="369" y="344" width="100" height="50"/>
<dmndi:DMNLabel/>
</dmndi:DMNShape>
<dmndi:DMNShape id="dmnshape-_8A408366-D8E9-4626-ABF3-5F69AA01F880" dmnElementRef="_8A408366-D8E9-4626-ABF3-5F69AA01F880" isCollapsed="false">
<dmndi:DMNStyle>
<dmndi:FillColor red="255" green="255" blue="255"/>
<dmndi:StrokeColor red="0" green="0" blue="0"/>
<dmndi:FontColor red="0" green="0" blue="0"/>
</dmndi:DMNStyle>
<dc:Bounds x="534" y="83" width="133" height="63"/>
<dmndi:DMNLabel/>
</dmndi:DMNShape>
<dmndi:DMNEdge id="dmnedge-_800A3BBB-90A3-4D9D-BA5E-A311DED0134F" dmnElementRef="_800A3BBB-90A3-4D9D-BA5E-A311DED0134F">
<di:waypoint x="758" y="375"/>
<di:waypoint x="759" y="235"/>
</dmndi:DMNEdge>
<dmndi:DMNEdge id="dmnedge-_982211B1-5246-49CD-BE85-3211F71253CF" dmnElementRef="_982211B1-5246-49CD-BE85-3211F71253CF">
<di:waypoint x="419" y="369"/>
<di:waypoint x="600.5" y="114.5"/>
</dmndi:DMNEdge>
<dmndi:DMNEdge id="dmnedge-_AEC4AA5F-50C3-4FED-A0C2-261F90290731" dmnElementRef="_AEC4AA5F-50C3-4FED-A0C2-261F90290731">
<di:waypoint x="759" y="235"/>
<di:waypoint x="600.5" y="114.5"/>
</dmndi:DMNEdge>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</dmn:definitions>
Loading

0 comments on commit 7239709

Please sign in to comment.