forked from apache/incubator-kie-kogito-examples
-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Fix #3465]Adding Sonataflow DMN example (apache#1906)
* [Fix #3465]Adding Sonataflow DMN example * Update serverless-workflow-examples/serverless-workflow-dmn-quarkus/README.md Co-authored-by: Gonzalo Muñoz <[email protected]> --------- Co-authored-by: Gonzalo Muñoz <[email protected]>
- Loading branch information
1 parent
78c2579
commit 411d7cd
Showing
7 changed files
with
634 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
115 changes: 115 additions & 0 deletions
115
serverless-workflow-examples/serverless-workflow-dmn-quarkus/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
# Kogito Serverless Workflow - DMN Example | ||
|
||
## Description | ||
|
||
This example contains a simple workflow service that use DMN. | ||
The services are described using JSON format as defined in the | ||
[CNCF Serverless Workflow specification](https://github.com/serverlessworkflow/specification). | ||
|
||
The workflow expects as JSON input containing driver details and a traffic violation | ||
(see details in the [Submit a request](#Submit-a-request) section). | ||
|
||
The workflow uses that input to execute a decision file which evaluates if the driver should be suspended or not. | ||
|
||
## Installing and Running | ||
|
||
### Prerequisites | ||
|
||
You will need: | ||
- Java 17+ installed | ||
- Environment variable JAVA_HOME set accordingly | ||
- Maven 3.9.6+ installed | ||
|
||
When using native image compilation, you will also need: | ||
- [GraalVm](https://www.graalvm.org/downloads/) 19.3.1+ installed | ||
- Environment variable GRAALVM_HOME set accordingly | ||
- Note that GraalVM native image compilation typically requires other packages (glibc-devel, zlib-devel and gcc) to be installed too. You also need 'native-image' installed in GraalVM (using 'gu install native-image'). Please refer to [GraalVM installation documentation](https://www.graalvm.org/docs/reference-manual/aot-compilation/#prerequisites) for more details. | ||
|
||
### Compile and Run in Local Dev Mode | ||
|
||
```sh | ||
mvn clean package quarkus:dev | ||
``` | ||
|
||
### Compile and Run in JVM mode | ||
|
||
```sh | ||
mvn clean package | ||
java -jar target/quarkus-app/quarkus-run.jar | ||
``` | ||
|
||
or on windows | ||
|
||
```sh | ||
mvn clean package | ||
java -jar target\quarkus-app\quarkus-run.jar | ||
``` | ||
|
||
### Compile and Run using Local Native Image | ||
Note that this requires GRAALVM_HOME to point to a valid GraalVM installation | ||
|
||
```sh | ||
mvn clean package -Pnative | ||
``` | ||
|
||
To run the generated native executable, generated in `target/`, execute | ||
|
||
```sh | ||
./target/serverless-workflow-dmn-quarkus-{version}-runner | ||
``` | ||
|
||
## Example Usage | ||
|
||
Once the service is up and running, you can use the following example to interact with the service. | ||
|
||
### POST /Traffic Violation | ||
|
||
Returns penalty information from the given inputs -- driver and violation: | ||
|
||
Given inputs: | ||
|
||
```json | ||
{ | ||
"Driver":{"Points":2}, | ||
"Violation":{ | ||
"Type":"speed", | ||
"Actual Speed":120, | ||
"Speed Limit":100 | ||
} | ||
} | ||
``` | ||
|
||
Curl command (using the JSON object above): | ||
|
||
```sh | ||
curl -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"Driver":{"Points":2},"Violation":{"Type":"speed","Actual Speed":120,"Speed Limit":100}}' http://localhost:8080/traffic-violation | ||
``` | ||
or on Windows: | ||
|
||
```sh | ||
curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" -d "{\"Driver\":{\"Points\":2},\"Violation\":{\"Type\":\"speed\",\"Actual Speed\":120,\"Speed Limit\":100}}" http://localhost:8080/traffic-violation | ||
``` | ||
|
||
As response, penalty information is returned. | ||
|
||
Example response: | ||
|
||
```json | ||
{"workflowdata": | ||
{ | ||
"Violation":{ | ||
"Type":"speed", | ||
"Speed Limit":100, | ||
"Actual Speed":120 | ||
}, | ||
"Driver":{ | ||
"Points":2 | ||
}, | ||
"Fine":{ | ||
"Points":3, | ||
"Amount":500 | ||
}, | ||
"Should the driver be suspended?":"No" | ||
} | ||
} | ||
``` |
182 changes: 182 additions & 0 deletions
182
serverless-workflow-examples/serverless-workflow-dmn-quarkus/pom.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
Licensed to the Apache Software Foundation (ASF) under one | ||
or more contributor license agreements. See the NOTICE file | ||
distributed with this work for additional information | ||
regarding copyright ownership. The ASF licenses this file | ||
to you under the Apache License, Version 2.0 (the | ||
"License"); you may not use this file except in compliance | ||
with the License. You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, | ||
software distributed under the License is distributed on an | ||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, either express or implied. See the License for the | ||
specific language governing permissions and limitations | ||
under the License. | ||
--> | ||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<parent> | ||
<groupId>org.kie.kogito.examples</groupId> | ||
<artifactId>serverless-workflow-examples-parent</artifactId> | ||
<version>999-SNAPSHOT</version> | ||
<relativePath>../serverless-workflow-examples-parent/pom.xml</relativePath> | ||
</parent> | ||
|
||
<groupId>org.kie.kogito.examples</groupId> | ||
<artifactId>serverless-workflow-dmn-quarkus</artifactId> | ||
<version>1.0-SNAPSHOT</version> | ||
|
||
<name>Kogito Example :: Serverless Workflow :: DMN:: Quarkus</name> | ||
<description>Kogito Serverless Workflow DMN Example - Quarkus</description> | ||
<properties> | ||
<quarkus-plugin.version>3.2.10.Final</quarkus-plugin.version> | ||
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id> | ||
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id> | ||
<quarkus.platform.version>3.2.10.Final</quarkus.platform.version> | ||
<kogito.bom.group-id>org.kie.kogito</kogito.bom.group-id> | ||
<kogito.bom.artifact-id>kogito-bom</kogito.bom.artifact-id> | ||
<kogito.bom.version>999-SNAPSHOT</kogito.bom.version> | ||
<maven.compiler.release>17</maven.compiler.release> | ||
<version.compiler.plugin>3.8.1</version.compiler.plugin> | ||
<version.failsafe.plugin>3.0.0-M7</version.failsafe.plugin> | ||
</properties> | ||
|
||
<dependencyManagement> | ||
<dependencies> | ||
<dependency> | ||
<groupId>${quarkus.platform.group-id}</groupId> | ||
<artifactId>${quarkus.platform.artifact-id}</artifactId> | ||
<version>${quarkus.platform.version}</version> | ||
<type>pom</type> | ||
<scope>import</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>${kogito.bom.group-id}</groupId> | ||
<artifactId>${kogito.bom.artifact-id}</artifactId> | ||
<version>${kogito.bom.version}</version> | ||
<type>pom</type> | ||
<scope>import</scope> | ||
</dependency> | ||
</dependencies> | ||
</dependencyManagement> | ||
<dependencies> | ||
<dependency> | ||
<groupId>org.apache.kie.sonataflow</groupId> | ||
<artifactId>sonataflow-quarkus</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.quarkus</groupId> | ||
<artifactId>quarkus-resteasy</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.drools</groupId> | ||
<artifactId>drools-quarkus-decisions</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.kie.kogito</groupId> | ||
<artifactId>kogito-serverless-workflow-dmn-parser</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.quarkus</groupId> | ||
<artifactId>quarkus-resteasy-jackson</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.kie</groupId> | ||
<artifactId>kie-addons-quarkus-source-files</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.quarkus</groupId> | ||
<artifactId>quarkus-junit5</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.rest-assured</groupId> | ||
<artifactId>rest-assured</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>io.quarkus</groupId> | ||
<artifactId>quarkus-smallrye-health</artifactId> | ||
</dependency> | ||
</dependencies> | ||
<build> | ||
<finalName>${project.artifactId}</finalName> | ||
<plugins> | ||
<plugin> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>${version.compiler.plugin}</version> | ||
<configuration> | ||
<release>${maven.compiler.release}</release> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>${quarkus.platform.group-id}</groupId> | ||
<artifactId>quarkus-maven-plugin</artifactId> | ||
<version>${quarkus-plugin.version}</version> | ||
<executions> | ||
<execution> | ||
<goals> | ||
<goal>build</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<plugin> | ||
<artifactId>maven-failsafe-plugin</artifactId> | ||
<version>${version.failsafe.plugin}</version> | ||
<configuration> | ||
<systemPropertyVariables> | ||
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> | ||
<maven.home>${maven.home}</maven.home> | ||
</systemPropertyVariables> | ||
</configuration> | ||
<executions> | ||
<execution> | ||
<goals> | ||
<goal>integration-test</goal> | ||
<goal>verify</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
<profiles> | ||
<profile> | ||
<id>container</id> | ||
<activation> | ||
<property> | ||
<name>container</name> | ||
</property> | ||
</activation> | ||
<properties> | ||
<quarkus.profile>container</quarkus.profile> | ||
</properties> | ||
<dependencies> | ||
<dependency> | ||
<groupId>io.quarkus</groupId> | ||
<artifactId>quarkus-container-image-jib</artifactId> | ||
</dependency> | ||
</dependencies> | ||
</profile> | ||
<profile> | ||
<id>native</id> | ||
<activation> | ||
<property> | ||
<name>native</name> | ||
</property> | ||
</activation> | ||
<properties> | ||
<quarkus.package.type>native</quarkus.package.type> | ||
</properties> | ||
</profile> | ||
</profiles> | ||
</project> |
Oops, something went wrong.