This is an automated email from the ASF dual-hosted git repository. gitgabrio pushed a commit to branch incubator-kie-issues#1918 in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-examples.git
commit 15004692ea67231954aa3f63f257bae47fca9b95 Author: Gabriele-Cardosi <[email protected]> AuthorDate: Wed Jan 14 11:49:32 2026 +0100 [incubator-kie-issues#1918] Working gradle-springboot-examples --- gradle-examples/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43705 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + gradle-examples/gradlew | 251 ++++++++++ gradle-examples/gradlew.bat | 94 ++++ .../kogito-springboot-gradle-examples/pom.xml | 22 + .../README.md | 59 +++ .../build.gradle | 70 +++ .../pom.xml | 92 ++++ .../settings.gradle | 40 ++ .../java/org/kie/kogito/traffic/DriverService.java | 46 ++ .../src/main/java/org/kie/kogito/traffic/Fine.java | 47 ++ .../org/kie/kogito/traffic/KogitoApplication.java | 31 ++ .../java/org/kie/kogito/traffic/Violation.java | 93 ++++ .../licensevalidated/LicenseValidatedService.java | 50 ++ .../kogito/traffic/licensevalidated/Validated.java | 56 +++ .../kogito/traffic/licensevalidation/Driver.java | 131 +++++ .../LicenseValidationService.java | 50 ++ .../src/main/resources/LicenseValidatedService.drl | 32 ++ .../main/resources/LicenseValidationService.drl | 39 ++ .../src/main/resources/TrafficViolation.dmn | 307 ++++++++++++ .../src/main/resources/application.properties | 23 + .../src/main/resources/traffic-rules-dmn.bpmn | 534 +++++++++++++++++++++ .../org/kie/kogito/traffic/TrafficProcessIT.java | 82 ++++ .../kie/kogito/traffic/TrafficValidationIT.java | 83 ++++ .../org/kie/kogito/traffic/TrafficViolationIT.java | 68 +++ gradle-examples/pom.xml | 21 + .../process-decisions-rules-springboot/pom.xml | 1 - pom.xml | 1 + 28 files changed, 2329 insertions(+), 1 deletion(-) diff --git a/gradle-examples/gradle/wrapper/gradle-wrapper.jar b/gradle-examples/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 000000000..9bbc975c7 Binary files /dev/null and b/gradle-examples/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle-examples/gradle/wrapper/gradle-wrapper.properties b/gradle-examples/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..23449a2b5 --- /dev/null +++ b/gradle-examples/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradle-examples/gradlew b/gradle-examples/gradlew new file mode 100755 index 000000000..faf93008b --- /dev/null +++ b/gradle-examples/gradlew @@ -0,0 +1,251 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradle-examples/gradlew.bat b/gradle-examples/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/gradle-examples/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/gradle-examples/kogito-springboot-gradle-examples/pom.xml b/gradle-examples/kogito-springboot-gradle-examples/pom.xml new file mode 100644 index 000000000..5fc927275 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/pom.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.kie.kogito.examples</groupId> + <artifactId>gradle-examples</artifactId> + <version>999-SNAPSHOT</version> + </parent> + <packaging>pom</packaging> + + <artifactId>kogito-springboot-gradle-examples</artifactId> + + <name>Springboot Gradle Examples</name> + <description>Kogito Springboot Examples built with Gradle</description> + <modules> + <module>process-decisions-rules-springboot-gradle</module> + </modules> + + +</project> \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/README.md b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/README.md new file mode 100644 index 000000000..209f6f516 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/README.md @@ -0,0 +1,59 @@ +<!-- + 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. + --> + +# Kogito Gradle Plugin Test + +This module represent a kogito spring-boot application containing rules, decisions, and processes models, managed by gradle. + +To directly start it from command line, it is enough to issue +```bash +./gradlew clean bootRun +``` + +while the following command could be used to build it +```bash +./gradlew clean jar +``` + +## HOT-RELOAD +That module feature the "org.springframework.boot:spring-boot-devtools" plugin to enable hot reload on source change (additional dependency): + +```kts + developmentOnly 'org.springframework.boot:spring-boot-devtools' +``` + +To achieve that: +1. in one terminal, issue the command that will listen for code change and, eventually, rebuilt the application on-demand +```bash +./gradlew clean compileSecondaryJava --continuous --parallel --build-cache +``` +2. inside another terminal, issue the command that actually start the application +```bash +./gradlew bootRun +``` + +Whenever a source is modified, the code will be rebuilt and the application re-started with the modifications. + + +## CI Integration +This module also contains a pom.xml so that it may be built and verified inside CI pipelines. + +The maven compilation of java sources is "disabled" inside the pom.xml, whose only scope is to execute the "gradle clean test" tasks (featuring the "exec-maven-plugin") + + diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/build.gradle b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/build.gradle new file mode 100644 index 000000000..b5c815383 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/build.gradle @@ -0,0 +1,70 @@ +/* + * 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. + * + */ + +plugins { + id 'java' + id("org.kie.kogito.gradle") version "999-SNAPSHOT" + id 'org.springframework.boot' version '3.4.11' +} + +repositories { + mavenCentral() + mavenLocal() +} + +dependencies { + implementation platform("org.kie.kogito:kogito-spring-boot-bom:999-SNAPSHOT") + implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.jbpm:jbpm-spring-boot-starter") + implementation("org.drools:drools-decisions-spring-boot-starter") + testImplementation("org.junit.jupiter:junit-jupiter:5.12.1") + testImplementation("org.springframework.boot:spring-boot-starter-test") + testImplementation("io.rest-assured:rest-assured") + developmentOnly 'org.springframework.boot:spring-boot-devtools' +} + + +generateModelConfig { + jsonSchemaVersion = "DRAFT_2019_09" +} + +tasks.withType(JavaCompile).configureEach() { + options.encoding = "UTF-8" + +} + +tasks.named("bootRun") { + mainClass = 'org.kie.kogito.traffic.KogitoApplication' + dependsOn(tasks.named("compileSecondaryJava")) +} + +tasks.named("jar") { + dependsOn(tasks.named("compileSecondaryJava")) + from(tasks.named("compileSecondaryJava").get()) +} + +tasks.named("compileTestJava") { + dependsOn(tasks.named("compileSecondaryJava")) +} + +test { + dependsOn(tasks.named("jar")) + useJUnitPlatform() +} \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/pom.xml b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/pom.xml new file mode 100644 index 000000000..a05bf0aca --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/pom.xml @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.kie.kogito.examples</groupId> + <artifactId>kogito-springboot-gradle-examples</artifactId> + <version>999-SNAPSHOT</version> + </parent> + + <artifactId>process-decisions-rules-springboot-gradle</artifactId> + <name>Kogito Example :: Process :: Decisions :: Rules :: Spring Boot :: Gradle</name> + <description>Process with DRL, DMN and DRL integration - Spring Boot - Gradle</description> + + <properties> + <java.module.name>process.decisions.rules.springboot.gradle</java.module.name> + <maven.compiler.release>17</maven.compiler.release> + <gradle.executable>${project.parent.parent.basedir}/gradlew</gradle.executable> + </properties> + + <dependencies> + <dependency> + <groupId>org.kie.kogito</groupId> + <artifactId>kogito-gradle-plugin</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + + <build> + <plugins> + <!-- exclude maven compilation --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <excludes> + <exclude>**/*.java</exclude> + </excludes> + <testExcludes> + <exclude>**/*.java</exclude> + </testExcludes> + </configuration> + </plugin> + <!-- execute Gradle command --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <executions> + <execution> + <id>gradle</id> + <phase>test-compile</phase> + <configuration> + <executable>${gradle.executable}</executable> + <arguments> + <argument>clean</argument> + <argument>test</argument> + </arguments> + </configuration> + <goals> + <goal>exec</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-clean-plugin</artifactId> + <configuration> + <filesets> + <fileset> + <directory>${project.basedir}/build</directory> + </fileset> + </filesets> + </configuration> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>WINDOWS</id> + <activation> + <os> + <family>windows</family> + </os> + </activation> + <properties> + <gradle.executable>${project.parent.parent.basedir}/gradlew.bat</gradle.executable> + </properties> + </profile> + </profiles> +</project> \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/settings.gradle b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/settings.gradle new file mode 100644 index 000000000..fba3f17bc --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/settings.gradle @@ -0,0 +1,40 @@ +/* + * 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. + * + */ + +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + maven { + url = uri("target/dependencies") + } + maven { + url = uri("https://plugins.gradle.org/m2/") + } + } + resolutionStrategy { + eachPlugin { + if (requested.id.namespace == "org.kie.kogito") { + useModule("org.kie.kogito:kogito-gradle-plugin:${requested.version}") + } + } + } +} +rootProject.name = "kogito-gradle-plugin-test" \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/DriverService.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/DriverService.java new file mode 100644 index 000000000..ded5844df --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/DriverService.java @@ -0,0 +1,46 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic; + +import java.time.ZonedDateTime; +import java.util.Date; + +import org.kie.kogito.traffic.licensevalidation.Driver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +@Service +public class DriverService { + + private static Logger LOGGER = LoggerFactory.getLogger(DriverService.class); + + public Driver getDriver(String driverId) { + LOGGER.info("Get Driver Information for id = {}", driverId); + //Could call an external service, database, etc. + + //Mocking driver details + String[] parts = driverId.split("-"); + long days = Long.parseLong(parts[0]); + int points = Integer.parseInt(parts[1]); + Date licenseExpiration = new Date(ZonedDateTime.now().plusDays(days).toInstant().toEpochMilli()); + return new Driver(driverId, "Arthur", "SP", "Campinas", points, 30, licenseExpiration); + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/Fine.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/Fine.java new file mode 100644 index 000000000..830aa484c --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/Fine.java @@ -0,0 +1,47 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Fine { + + @JsonProperty("Amount") + private Double amount; + + @JsonProperty("Points") + private Integer points; + + public Double getAmount() { + return amount; + } + + public void setAmount(Double amount) { + this.amount = amount; + } + + public Integer getPoints() { + return points; + } + + public void setPoints(Integer points) { + this.points = points; + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/KogitoApplication.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/KogitoApplication.java new file mode 100644 index 000000000..deb467c93 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/KogitoApplication.java @@ -0,0 +1,31 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication(scanBasePackages = { "org.kie.kogito.**", "com.example.**", "http**" }) +public class KogitoApplication { + + public static void main(String[] args) { + SpringApplication.run(KogitoApplication.class, args); + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/Violation.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/Violation.java new file mode 100644 index 000000000..4cfb1aaab --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/Violation.java @@ -0,0 +1,93 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic; + +import java.math.BigDecimal; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Violation { + + @JsonProperty("Code") + private String code; + + @JsonProperty("Date") + private Date date; + + @JsonProperty("Type") + private String type; + + @JsonProperty("Speed Limit") + private BigDecimal speedLimit; + + @JsonProperty("Actual Speed") + private BigDecimal actualSpeed; + + public Violation() { + } + + public Violation(String type, BigDecimal speedLimit, BigDecimal actualSpeed) { + this.type = type; + this.speedLimit = speedLimit; + this.actualSpeed = actualSpeed; + this.date = new Date(); + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public BigDecimal getSpeedLimit() { + return speedLimit; + } + + public void setSpeedLimit(BigDecimal speedLimit) { + this.speedLimit = speedLimit; + } + + public BigDecimal getActualSpeed() { + return actualSpeed; + } + + public void setActualSpeed(BigDecimal actualSpeed) { + this.actualSpeed = actualSpeed; + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidated/LicenseValidatedService.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidated/LicenseValidatedService.java new file mode 100644 index 000000000..5555b1a02 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidated/LicenseValidatedService.java @@ -0,0 +1,50 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic.licensevalidated; + +import java.util.Date; + +import org.drools.ruleunits.api.DataSource; +import org.drools.ruleunits.api.RuleUnitData; +import org.drools.ruleunits.api.SingletonStore; + +public class LicenseValidatedService implements RuleUnitData { + private SingletonStore<Validated> validated; + + public LicenseValidatedService() { + this(DataSource.createSingleton()); + } + + public LicenseValidatedService(SingletonStore<Validated> validated) { + this.validated = validated; + } + + public void setValidated(SingletonStore<Validated> validated) { + this.validated = validated; + } + + public SingletonStore<Validated> getValidated() { + return validated; + } + + public Date getCurrentTime() { + return new Date(); + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidated/Validated.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidated/Validated.java new file mode 100644 index 000000000..e8fdf445e --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidated/Validated.java @@ -0,0 +1,56 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic.licensevalidated; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Validated { + + @JsonProperty("Suspended") + private String suspended; + + @JsonProperty("ValidLicense") + private Boolean validLicense = Boolean.FALSE; + + public Validated() { + } + + public Validated(String suspended) { + this.suspended = suspended; + } + + public String getSuspended() { + return suspended; + } + + public Boolean isValidLicense() { + return validLicense; + } + + public Boolean getValidLicense() { + return validLicense; + } + + public void setValidLicense(Boolean validLicense) { + this.validLicense = validLicense; + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidation/Driver.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidation/Driver.java new file mode 100644 index 000000000..cfe7d0793 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidation/Driver.java @@ -0,0 +1,131 @@ +/* + * 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. + */ +package org.kie.kogito.traffic.licensevalidation; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Driver { + + private String id; + + @JsonProperty("Name") + private String name; + + @JsonProperty("State") + private String state; + + @JsonProperty("City") + private String city; + + @JsonProperty("Points") + private Integer points; + + @JsonProperty("Age") + private Integer age; + + private Date licenseExpiration; + + @JsonProperty("ValidLicense") + private Boolean validLicense = Boolean.FALSE; + + public Driver() { + } + + public Driver(String id, String name, String state, String city, Integer points, Integer age, Date licenseExpiration) { + this.id = id; + this.name = name; + this.state = state; + this.city = city; + this.points = points; + this.age = age; + this.licenseExpiration = licenseExpiration; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public Integer getPoints() { + return points; + } + + public void setPoints(Integer points) { + this.points = points; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public Date getLicenseExpiration() { + return licenseExpiration; + } + + public void setLicenseExpiration(Date licenseExpiration) { + this.licenseExpiration = licenseExpiration; + } + + public Boolean isValidLicense() { + return validLicense; + } + + public Boolean getValidLicense() { + return validLicense; + } + + public void setValidLicense(Boolean validLicense) { + this.validLicense = validLicense; + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidation/LicenseValidationService.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidation/LicenseValidationService.java new file mode 100644 index 000000000..082455e68 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/java/org/kie/kogito/traffic/licensevalidation/LicenseValidationService.java @@ -0,0 +1,50 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic.licensevalidation; + +import java.util.Date; + +import org.drools.ruleunits.api.DataSource; +import org.drools.ruleunits.api.RuleUnitData; +import org.drools.ruleunits.api.SingletonStore; + +public class LicenseValidationService implements RuleUnitData { + private SingletonStore<Driver> driver; + + public LicenseValidationService() { + this(DataSource.createSingleton()); + } + + public LicenseValidationService(SingletonStore<Driver> driver) { + this.driver = driver; + } + + public void setDriver(SingletonStore<Driver> driver) { + this.driver = driver; + } + + public SingletonStore<Driver> getDriver() { + return driver; + } + + public Date getCurrentTime() { + return new Date(); + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/LicenseValidatedService.drl b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/LicenseValidatedService.drl new file mode 100644 index 000000000..f3b50665c --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/LicenseValidatedService.drl @@ -0,0 +1,32 @@ +/** + * 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. + */ +package org.kie.kogito.traffic.licensevalidated + +unit LicenseValidatedService + +rule "Is validated license validated" +when + $validated: /validated[suspended.equalsIgnoreCase("no")] +then + $validated.setValidLicense(true); +end + +query "validate" + $validated : /validated +end \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/LicenseValidationService.drl b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/LicenseValidationService.drl new file mode 100644 index 000000000..da7439087 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/LicenseValidationService.drl @@ -0,0 +1,39 @@ +/** + * 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. + */ +package org.kie.kogito.traffic.licensevalidation + +unit LicenseValidationService + +rule "Is driver license valid" +when + $driver: /driver[licenseExpiration.after(currentTime)] +then + $driver.setValidLicense(true); +end + +rule "Is driver license expired" +when + $driver: /driver[licenseExpiration.before(currentTime)] +then + $driver.setValidLicense(false); +end + +query "validation" + $driver : /driver +end \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/TrafficViolation.dmn b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/TrafficViolation.dmn new file mode 100644 index 000000000..f94043a89 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/TrafficViolation.dmn @@ -0,0 +1,307 @@ +<?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. + ~ + --> +<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 [...] + <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:itemDefinition id="_E08BBD2C-2308-4E20-9C47-58B092771753" name="tValidated" isCollection="false"> + <dmn:itemComponent id="_C7B66E05-6586-4C08-8D85-8EB61C929361" name="Suspended" isCollection="false"> + <dmn:typeRef>string</dmn:typeRef> + </dmn:itemComponent> + <dmn:itemComponent id="_AFEA2C02-9260-45AB-BEB9-FB9F5A6D85B4" name="ValidLicense" isCollection="false"> + <dmn:typeRef>boolean</dmn:typeRef> + </dmn:itemComponent> + </dmn:itemDefinition> + <dmn:inputData id="_1929CBD5-40E0-442D-B909-49CEDE0101DC" name="Violation"> + <dmn:extensionElements/> + <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:extensionElements/> + <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:annotation name=""/> + <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:annotationEntry> + <dmn:text/> + </dmn:annotationEntry> + </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>>= 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:annotationEntry> + <dmn:text/> + </dmn:annotationEntry> + </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:annotationEntry> + <dmn:text/> + </dmn:annotationEntry> + </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:annotationEntry> + <dmn:text/> + </dmn:annotationEntry> + </dmn:rule> + </dmn:decisionTable> + </dmn:decision> + <dmn:inputData id="_1F9350D7-146D-46F1-85D8-15B5B68AF22A" name="Driver"> + <dmn:extensionElements/> + <dmn:variable id="_A80F16DF-0DB4-43A2-B041-32900B1A3F3D" name="Driver" typeRef="tDriver"/> + </dmn:inputData> + <dmn:decision id="_4780A053-F62F-4245-9297-31A788132083" name="Validated"> + <dmn:extensionElements/> + <dmn:variable id="_5269D123-38DF-47C2-9F9A-334192A0EC48" name="Validated" typeRef="tValidated"/> + <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:decisionTable id="_DADF0E8B-DD97-4B1A-BECC-B767E54AC382" hitPolicy="UNIQUE" preferredOrientation="Rule-as-Row"> + <dmn:input id="_D09ABFAD-70D9-4DA9-AD41-428D79F6743B"> + <dmn:inputExpression id="_61619DF0-0F95-405E-B478-5D98B8F7F7B8" typeRef="number"> + <dmn:text>Driver.Points</dmn:text> + </dmn:inputExpression> + </dmn:input> + <dmn:output id="_EC5E832D-6BDB-4688-8ADA-C53E29855BBD" name="Suspended" typeRef="string"/> + <dmn:output id="_5FCF6CCE-D2FB-48AB-A3CA-460A32E1F53F" name="ValidLicense" typeRef="boolean"/> + <dmn:annotation name=""/> + <dmn:rule id="_ED7227BE-9943-4EE5-B8E1-50291952F6A4"> + <dmn:inputEntry id="_328516FE-62FA-4774-8546-68ED4D7B3730"> + <dmn:text>< 20</dmn:text> + </dmn:inputEntry> + <dmn:outputEntry id="_6CA9E17C-D596-4A4F-99DF-2C6410B47431"> + <dmn:text>"yes"</dmn:text> + </dmn:outputEntry> + <dmn:outputEntry id="_3A293217-F17E-43B1-89DF-B9CCD64C43B5"> + <dmn:text>false</dmn:text> + </dmn:outputEntry> + <dmn:annotationEntry> + <dmn:text/> + </dmn:annotationEntry> + </dmn:rule> + <dmn:rule id="_B5424E50-62D3-4535-A55E-B55D7C41235F"> + <dmn:inputEntry id="_CF5CDBFC-A15B-41F6-B96D-DC9CE7BCAC26"> + <dmn:text>= 20</dmn:text> + </dmn:inputEntry> + <dmn:outputEntry id="_2A45948F-008C-4C24-9BDD-C3020CA2D0F1"> + <dmn:text>"no"</dmn:text> + </dmn:outputEntry> + <dmn:outputEntry id="_886E5F7E-913C-4F57-B1EA-3595C8060EE0"> + <dmn:text>true</dmn:text> + </dmn:outputEntry> + <dmn:annotationEntry> + <dmn:text/> + </dmn:annotationEntry> + </dmn:rule> + <dmn:rule id="_1A61415B-FB65-4423-BCEC-365609D4567D"> + <dmn:inputEntry id="_A075DB28-4E22-4681-814A-62EF273095FA"> + <dmn:text>> 20</dmn:text> + </dmn:inputEntry> + <dmn:outputEntry id="_70D6A183-AB5B-4FBD-8FE5-9E05491F9FEB"> + <dmn:text>"no"</dmn:text> + </dmn:outputEntry> + <dmn:outputEntry id="_B5DC1F55-0F53-4B85-9A18-BB21B8C9C1DB"> + <dmn:text>true</dmn:text> + </dmn:outputEntry> + <dmn:annotationEntry> + <dmn:text/> + </dmn:annotationEntry> + </dmn:rule> + </dmn:decisionTable> + </dmn:decision> + <dmndi:DMNDI> + <dmndi:DMNDiagram id="_3FEB9053-0E6B-4880-A6AE-85FAB5072161" name="DRG"> + <di:extension> + <kie:ComponentsWidthsExtension> + <kie:ComponentWidths dmnElementRef="_C8F7F579-E06C-4A2F-8485-65FAFAC3FE6A"> + <kie:width>50</kie:width> + <kie:width>254</kie:width> + <kie:width>329</kie:width> + <kie:width>119</kie:width> + <kie:width>100</kie:width> + <kie:width>186</kie:width> + </kie:ComponentWidths> + <kie:ComponentWidths dmnElementRef="_DADF0E8B-DD97-4B1A-BECC-B767E54AC382"> + <kie:width>50</kie:width> + <kie:width>329</kie:width> + <kie:width>100</kie:width> + <kie:width>119</kie:width> + <kie:width>186</kie:width> + </kie:ComponentWidths> + </kie:ComponentsWidthsExtension> + </di:extension> + <dmndi:DMNShape id="dmnshape-drg-_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-drg-_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-drg-_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-drg-_4780A053-F62F-4245-9297-31A788132083" dmnElementRef="_4780A053-F62F-4245-9297-31A788132083" 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="540" y="76" width="100" height="50"/> + <dmndi:DMNLabel/> + </dmndi:DMNShape> + <dmndi:DMNEdge id="dmnedge-drg-_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-drg-_982211B1-5246-49CD-BE85-3211F71253CF-AUTO-TARGET" dmnElementRef="_982211B1-5246-49CD-BE85-3211F71253CF"> + <di:waypoint x="419" y="369"/> + <di:waypoint x="590" y="126"/> + </dmndi:DMNEdge> + <dmndi:DMNEdge id="dmnedge-drg-_AEC4AA5F-50C3-4FED-A0C2-261F90290731" dmnElementRef="_AEC4AA5F-50C3-4FED-A0C2-261F90290731"> + <di:waypoint x="759" y="235"/> + <di:waypoint x="590" y="126"/> + </dmndi:DMNEdge> + </dmndi:DMNDiagram> + </dmndi:DMNDI> +</dmn:definitions> \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/application.properties b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/application.properties new file mode 100644 index 000000000..c8d01d3a5 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/application.properties @@ -0,0 +1,23 @@ +# +# 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. +# +# + +server.address=0.0.0.0 +kogito.generate.rest.decisions=true +kogito.generate.rest.processes=true \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/traffic-rules-dmn.bpmn b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/traffic-rules-dmn.bpmn new file mode 100644 index 000000000..1ddb14979 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/main/resources/traffic-rules-dmn.bpmn @@ -0,0 +1,534 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:bpsim="http://www.bpsim.org/schemas/1.0" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:drools="http://www.jboss.org/drools" id="_FcMNgJTYEDuJVMby5BR7SQ" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd http://www. [...] + <bpmn2:itemDefinition id="_driverIdItem" structureRef="String"/> + <bpmn2:itemDefinition id="_violationItem" structureRef="org.kie.kogito.traffic.Violation"/> + <bpmn2:itemDefinition id="_driverItem" structureRef="org.kie.kogito.traffic.licensevalidation.Driver"/> + <bpmn2:itemDefinition id="_fineItem" structureRef="org.kie.kogito.traffic.Fine"/> + <bpmn2:itemDefinition id="_validatedItem" structureRef="org.kie.kogito.traffic.licensevalidated.Validated"/> + <bpmn2:itemDefinition id="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_namespaceInputXItem" structureRef="java.lang.String"/> + <bpmn2:itemDefinition id="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_modelInputXItem" structureRef="java.lang.String"/> + <bpmn2:itemDefinition id="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ViolationInputXItem" structureRef="org.kie.kogito.traffic.Violation"/> + <bpmn2:itemDefinition id="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_DriverInputXItem" structureRef="org.kie.kogito.traffic.licensevalidation.Driver"/> + <bpmn2:itemDefinition id="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ValidatedOutputXItem" structureRef="org.kie.kogito.traffic.licensevalidated.Validated"/> + <bpmn2:itemDefinition id="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_FineOutputXItem" structureRef="org.kie.kogito.traffic.Fine"/> + <bpmn2:itemDefinition id="__93FFD317-476E-4624-84EF-994617572560_driverIdInputXItem" structureRef="String"/> + <bpmn2:itemDefinition id="__93FFD317-476E-4624-84EF-994617572560_responseOutputXItem" structureRef="org.kie.kogito.traffic.licensevalidation.Driver"/> + <bpmn2:itemDefinition id="__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_namespaceInputXItem" structureRef="java.lang.String"/> + <bpmn2:itemDefinition id="__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_modelInputXItem" structureRef="java.lang.String"/> + <bpmn2:itemDefinition id="__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverInputXItem" structureRef="org.kie.kogito.traffic.licensevalidation.Driver"/> + <bpmn2:itemDefinition id="__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverOutputXItem" structureRef="org.kie.kogito.traffic.licensevalidation.Driver"/> + <bpmn2:itemDefinition id="__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_namespaceInputXItem" structureRef="java.lang.String"/> + <bpmn2:itemDefinition id="__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_modelInputXItem" structureRef="java.lang.String"/> + <bpmn2:itemDefinition id="__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedInputXItem" structureRef="org.kie.kogito.traffic.licensevalidated.Validated"/> + <bpmn2:itemDefinition id="__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedOutputXItem" structureRef="org.kie.kogito.traffic.licensevalidated.Validated"/> + <bpmn2:interface id="_93FFD317-476E-4624-84EF-994617572560_ServiceInterface" name="org.kie.kogito.traffic.DriverService" implementationRef="org.kie.kogito.traffic.DriverService"> + <bpmn2:operation id="_93FFD317-476E-4624-84EF-994617572560_ServiceOperation" name="getDriver" implementationRef="getDriver"/> + </bpmn2:interface> + <bpmn2:collaboration id="_835BF56B-F802-4ABD-8F1A-F6110E669D6C" name="Default Collaboration"> + <bpmn2:participant id="_12DAED3F-4A2C-40B1-9716-A16BA1A05F2D" name="Pool Participant" processRef="traffic"/> + </bpmn2:collaboration> + <bpmn2:process id="traffic" drools:packageName="com.example" drools:version="1.0" drools:adHoc="false" name="traffic" isExecutable="true" processType="Public"> + <bpmn2:property id="driverId" itemSubjectRef="_driverIdItem" name="driverId"/> + <bpmn2:property id="violation" itemSubjectRef="_violationItem" name="violation"/> + <bpmn2:property id="driver" itemSubjectRef="_driverItem" name="driver"/> + <bpmn2:property id="fine" itemSubjectRef="_fineItem" name="fine"/> + <bpmn2:property id="validated" itemSubjectRef="_validatedItem" name="validated"/> + <bpmn2:sequenceFlow id="_044AA388-325A-45DE-B783-4F48421B788B" name="license is expired" sourceRef="_7229480F-BC4D-4406-B27C-8FF46C5C9042" targetRef="_E2A8304B-68A0-4CCC-8D47-1FA9352D4853"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[license is expired]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="http://www.java.com/java"><![CDATA[return !driver.isValidLicense();]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="_D3E2F4B7-7739-452F-8D55-0C4F169D4A44" sourceRef="_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5" targetRef="_7229480F-BC4D-4406-B27C-8FF46C5C9042"> + <bpmn2:extensionElements> + <drools:metaData name="isAutoConnection.target"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="_A19108FE-08A2-4E80-B7A8-0254C49209A6" sourceRef="_93FFD317-476E-4624-84EF-994617572560" targetRef="_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5"/> + <bpmn2:sequenceFlow id="_1287C97D-3568-458A-A907-0123A64A93BE" sourceRef="_298312AB-7A3D-478B-BD9B-B260CE847645" targetRef="_67972C63-8A06-42C5-A3FF-A843EFB4D07B"> + <bpmn2:extensionElements> + <drools:metaData name="isAutoConnection.source"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + <drools:metaData name="isAutoConnection.target"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="_249EB7E9-5847-47C9-8B4D-8BEFED257600" name="yes" sourceRef="_8A66FABC-E538-4F50-9DAC-BC9069D19942" targetRef="_298312AB-7A3D-478B-BD9B-B260CE847645"> + <bpmn2:extensionElements> + <drools:metaData name="isAutoConnection.target"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[yes]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="http://www.java.com/java"><![CDATA[return validated.isValidLicense();]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="_E7EF578E-3735-42D9-BF0C-8CCBF398D41C" sourceRef="_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C" targetRef="_8A66FABC-E538-4F50-9DAC-BC9069D19942"> + <bpmn2:extensionElements> + <drools:metaData name="isAutoConnection.target"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="_521A00FC-6A79-44ED-8485-45DB97A621F2" sourceRef="_DDD02AFB-D927-47BC-9C0C-523B602B5CD2" targetRef="_418CD980-670D-4FC5-B492-A271A61B1477"> + <bpmn2:extensionElements> + <drools:metaData name="isAutoConnection.source"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + <drools:metaData name="isAutoConnection.target"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="_19CC68B6-D2DC-4E39-99E5-CE5B30C5FEE6" name="no" sourceRef="_8A66FABC-E538-4F50-9DAC-BC9069D19942" targetRef="_DDD02AFB-D927-47BC-9C0C-523B602B5CD2"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[no]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="http://www.java.com/java"><![CDATA[return !validated.isValidLicense();]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="_BB963FF4-CF17-4CA0-A727-9AFC2BE17C29" sourceRef="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941" targetRef="_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C"/> + <bpmn2:sequenceFlow id="_D2252EFF-5EC4-4D61-B797-653F71652627" sourceRef="_7229480F-BC4D-4406-B27C-8FF46C5C9042" targetRef="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941"> + <bpmn2:extensionElements> + <drools:metaData name="isAutoConnection.target"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="http://www.java.com/java"><![CDATA[return driver.isValidLicense();]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="_2C2FFD79-4241-4F9E-A486-2482F817595E" sourceRef="_905F0834-19CC-423B-B90E-B38C6D80329F" targetRef="_93FFD317-476E-4624-84EF-994617572560"> + <bpmn2:extensionElements> + <drools:metaData name="isAutoConnection.target"> + <drools:metaValue><![CDATA[true]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + </bpmn2:sequenceFlow> + <bpmn2:businessRuleTask id="_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C" drools:ruleFlowGroup="unit:org.kie.kogito.traffic.licensevalidated.LicenseValidatedService" name="LicenseValidated DRL" implementation="http://www.jboss.org/drools/rule"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[LicenseValidated +DRL]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:incoming>_BB963FF4-CF17-4CA0-A727-9AFC2BE17C29</bpmn2:incoming> + <bpmn2:outgoing>_E7EF578E-3735-42D9-BF0C-8CCBF398D41C</bpmn2:outgoing> + <bpmn2:ioSpecification> + <bpmn2:dataInput id="_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedInputX" drools:dtype="org.kie.kogito.traffic.licensevalidated.Validated" itemSubjectRef="__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedInputXItem" name="validated"/> + <bpmn2:dataOutput id="_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedOutputX" drools:dtype="org.kie.kogito.traffic.licensevalidated.Validated" itemSubjectRef="__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedOutputXItem" name="validated"/> + <bpmn2:inputSet> + <bpmn2:dataInputRefs>_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedInputX</bpmn2:dataInputRefs> + </bpmn2:inputSet> + <bpmn2:outputSet> + <bpmn2:dataOutputRefs>_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedOutputX</bpmn2:dataOutputRefs> + </bpmn2:outputSet> + </bpmn2:ioSpecification> + <bpmn2:dataInputAssociation> + <bpmn2:sourceRef>validated</bpmn2:sourceRef> + <bpmn2:targetRef>_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedInputX</bpmn2:targetRef> + </bpmn2:dataInputAssociation> + <bpmn2:dataOutputAssociation> + <bpmn2:sourceRef>_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_validatedOutputX</bpmn2:sourceRef> + <bpmn2:targetRef>validated</bpmn2:targetRef> + </bpmn2:dataOutputAssociation> + </bpmn2:businessRuleTask> + <bpmn2:endEvent id="_E2A8304B-68A0-4CCC-8D47-1FA9352D4853"> + <bpmn2:incoming>_044AA388-325A-45DE-B783-4F48421B788B</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="_7229480F-BC4D-4406-B27C-8FF46C5C9042" name="Exclusive Gateway 1" gatewayDirection="Diverging"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[Exclusive Gateway 1]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:incoming>_D3E2F4B7-7739-452F-8D55-0C4F169D4A44</bpmn2:incoming> + <bpmn2:outgoing>_D2252EFF-5EC4-4D61-B797-653F71652627</bpmn2:outgoing> + <bpmn2:outgoing>_044AA388-325A-45DE-B783-4F48421B788B</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:businessRuleTask id="_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5" drools:ruleFlowGroup="unit:org.kie.kogito.traffic.licensevalidation.LicenseValidationService" name="LicenseValidation DRL" implementation="http://www.jboss.org/drools/rule"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[LicenseValidation +DRL]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:incoming>_A19108FE-08A2-4E80-B7A8-0254C49209A6</bpmn2:incoming> + <bpmn2:outgoing>_D3E2F4B7-7739-452F-8D55-0C4F169D4A44</bpmn2:outgoing> + <bpmn2:ioSpecification> + <bpmn2:dataInput id="_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverInputX" drools:dtype="org.kie.kogito.traffic.licensevalidation.Driver" itemSubjectRef="__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverInputXItem" name="driver"/> + <bpmn2:dataOutput id="_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverOutputX" drools:dtype="org.kie.kogito.traffic.licensevalidation.Driver" itemSubjectRef="__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverOutputXItem" name="driver"/> + <bpmn2:inputSet> + <bpmn2:dataInputRefs>_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverInputX</bpmn2:dataInputRefs> + </bpmn2:inputSet> + <bpmn2:outputSet> + <bpmn2:dataOutputRefs>_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverOutputX</bpmn2:dataOutputRefs> + </bpmn2:outputSet> + </bpmn2:ioSpecification> + <bpmn2:dataInputAssociation> + <bpmn2:sourceRef>driver</bpmn2:sourceRef> + <bpmn2:targetRef>_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverInputX</bpmn2:targetRef> + </bpmn2:dataInputAssociation> + <bpmn2:dataOutputAssociation> + <bpmn2:sourceRef>_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_driverOutputX</bpmn2:sourceRef> + <bpmn2:targetRef>driver</bpmn2:targetRef> + </bpmn2:dataOutputAssociation> + </bpmn2:businessRuleTask> + <bpmn2:serviceTask id="_93FFD317-476E-4624-84EF-994617572560" drools:serviceimplementation="Java" drools:serviceinterface="org.kie.kogito.traffic.DriverService" drools:serviceoperation="getDriver" name="Get Driver Details" implementation="Java" operationRef="_93FFD317-476E-4624-84EF-994617572560_ServiceOperation"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[Get Driver Details]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:incoming>_2C2FFD79-4241-4F9E-A486-2482F817595E</bpmn2:incoming> + <bpmn2:outgoing>_A19108FE-08A2-4E80-B7A8-0254C49209A6</bpmn2:outgoing> + <bpmn2:ioSpecification> + <bpmn2:dataInput id="_93FFD317-476E-4624-84EF-994617572560_driverIdInputX" drools:dtype="String" itemSubjectRef="__93FFD317-476E-4624-84EF-994617572560_driverIdInputXItem" name="driverId"/> + <bpmn2:dataOutput id="_93FFD317-476E-4624-84EF-994617572560_responseOutputX" drools:dtype="org.kie.kogito.traffic.licensevalidation.Driver" itemSubjectRef="__93FFD317-476E-4624-84EF-994617572560_responseOutputXItem" name="response"/> + <bpmn2:inputSet> + <bpmn2:dataInputRefs>_93FFD317-476E-4624-84EF-994617572560_driverIdInputX</bpmn2:dataInputRefs> + </bpmn2:inputSet> + <bpmn2:outputSet> + <bpmn2:dataOutputRefs>_93FFD317-476E-4624-84EF-994617572560_responseOutputX</bpmn2:dataOutputRefs> + </bpmn2:outputSet> + </bpmn2:ioSpecification> + <bpmn2:dataInputAssociation> + <bpmn2:sourceRef>driverId</bpmn2:sourceRef> + <bpmn2:targetRef>_93FFD317-476E-4624-84EF-994617572560_driverIdInputX</bpmn2:targetRef> + </bpmn2:dataInputAssociation> + <bpmn2:dataOutputAssociation> + <bpmn2:sourceRef>_93FFD317-476E-4624-84EF-994617572560_responseOutputX</bpmn2:sourceRef> + <bpmn2:targetRef>driver</bpmn2:targetRef> + </bpmn2:dataOutputAssociation> + </bpmn2:serviceTask> + <bpmn2:endEvent id="_67972C63-8A06-42C5-A3FF-A843EFB4D07B"> + <bpmn2:incoming>_1287C97D-3568-458A-A907-0123A64A93BE</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="_298312AB-7A3D-478B-BD9B-B260CE847645" name="Suspended Task" scriptFormat="http://www.java.com/java"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[Suspended +Task]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:incoming>_249EB7E9-5847-47C9-8B4D-8BEFED257600</bpmn2:incoming> + <bpmn2:outgoing>_1287C97D-3568-458A-A907-0123A64A93BE</bpmn2:outgoing> + <bpmn2:script>System.out.println("Driver is suspended!");</bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="_8A66FABC-E538-4F50-9DAC-BC9069D19942" name="Exclusive Gateway 2" gatewayDirection="Diverging"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[Exclusive Gateway 2]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:incoming>_E7EF578E-3735-42D9-BF0C-8CCBF398D41C</bpmn2:incoming> + <bpmn2:outgoing>_19CC68B6-D2DC-4E39-99E5-CE5B30C5FEE6</bpmn2:outgoing> + <bpmn2:outgoing>_249EB7E9-5847-47C9-8B4D-8BEFED257600</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:endEvent id="_418CD980-670D-4FC5-B492-A271A61B1477"> + <bpmn2:incoming>_521A00FC-6A79-44ED-8485-45DB97A621F2</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="_DDD02AFB-D927-47BC-9C0C-523B602B5CD2" name="Not Suspended Task" scriptFormat="http://www.java.com/java"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[Not Suspended + Task]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:incoming>_19CC68B6-D2DC-4E39-99E5-CE5B30C5FEE6</bpmn2:incoming> + <bpmn2:outgoing>_521A00FC-6A79-44ED-8485-45DB97A621F2</bpmn2:outgoing> + <bpmn2:script>System.out.println("Driver is NOT suspended!");</bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:businessRuleTask id="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941" name="TrafficViolation DMN" implementation="http://www.jboss.org/drools/dmn"> + <bpmn2:extensionElements> + <drools:metaData name="elementname"> + <drools:metaValue><![CDATA[TrafficViolation +DMN]]></drools:metaValue> + </drools:metaData> + </bpmn2:extensionElements> + <bpmn2:incoming>_D2252EFF-5EC4-4D61-B797-653F71652627</bpmn2:incoming> + <bpmn2:outgoing>_BB963FF4-CF17-4CA0-A727-9AFC2BE17C29</bpmn2:outgoing> + <bpmn2:ioSpecification> + <bpmn2:dataInput id="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_namespaceInputX" drools:dtype="java.lang.String" itemSubjectRef="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_namespaceInputXItem" name="namespace"/> + <bpmn2:dataInput id="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_modelInputX" drools:dtype="java.lang.String" itemSubjectRef="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_modelInputXItem" name="model"/> + <bpmn2:dataInput id="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ViolationInputX" drools:dtype="org.kie.kogito.traffic.Violation" itemSubjectRef="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ViolationInputXItem" name="Violation"/> + <bpmn2:dataInput id="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_DriverInputX" drools:dtype="org.kie.kogito.traffic.licensevalidation.Driver" itemSubjectRef="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_DriverInputXItem" name="Driver"/> + <bpmn2:dataOutput id="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ValidatedOutputX" drools:dtype="org.kie.kogito.traffic.licensevalidated.Validated" itemSubjectRef="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ValidatedOutputXItem" name="Validated"/> + <bpmn2:dataOutput id="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_FineOutputX" drools:dtype="org.kie.kogito.traffic.Fine" itemSubjectRef="__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_FineOutputXItem" name="Fine"/> + <bpmn2:inputSet> + <bpmn2:dataInputRefs>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_namespaceInputX</bpmn2:dataInputRefs> + <bpmn2:dataInputRefs>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_modelInputX</bpmn2:dataInputRefs> + <bpmn2:dataInputRefs>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ViolationInputX</bpmn2:dataInputRefs> + <bpmn2:dataInputRefs>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_DriverInputX</bpmn2:dataInputRefs> + </bpmn2:inputSet> + <bpmn2:outputSet> + <bpmn2:dataOutputRefs>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ValidatedOutputX</bpmn2:dataOutputRefs> + <bpmn2:dataOutputRefs>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_FineOutputX</bpmn2:dataOutputRefs> + </bpmn2:outputSet> + </bpmn2:ioSpecification> + <bpmn2:dataInputAssociation> + <bpmn2:targetRef>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_namespaceInputX</bpmn2:targetRef> + <bpmn2:assignment> + <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[https://github.com/kiegroup/drools/kie-dmn/_A4BCA8B8-CF08-433F-93B2-A2598F19ECFF]]></bpmn2:from> + <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_namespaceInputX]]></bpmn2:to> + </bpmn2:assignment> + </bpmn2:dataInputAssociation> + <bpmn2:dataInputAssociation> + <bpmn2:targetRef>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_modelInputX</bpmn2:targetRef> + <bpmn2:assignment> + <bpmn2:from xsi:type="bpmn2:tFormalExpression"><![CDATA[Traffic Violation]]></bpmn2:from> + <bpmn2:to xsi:type="bpmn2:tFormalExpression"><![CDATA[_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_modelInputX]]></bpmn2:to> + </bpmn2:assignment> + </bpmn2:dataInputAssociation> + <bpmn2:dataInputAssociation> + <bpmn2:sourceRef>violation</bpmn2:sourceRef> + <bpmn2:targetRef>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ViolationInputX</bpmn2:targetRef> + </bpmn2:dataInputAssociation> + <bpmn2:dataInputAssociation> + <bpmn2:sourceRef>driver</bpmn2:sourceRef> + <bpmn2:targetRef>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_DriverInputX</bpmn2:targetRef> + </bpmn2:dataInputAssociation> + <bpmn2:dataOutputAssociation> + <bpmn2:sourceRef>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_ValidatedOutputX</bpmn2:sourceRef> + <bpmn2:targetRef>validated</bpmn2:targetRef> + </bpmn2:dataOutputAssociation> + <bpmn2:dataOutputAssociation> + <bpmn2:sourceRef>_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_FineOutputX</bpmn2:sourceRef> + <bpmn2:targetRef>fine</bpmn2:targetRef> + </bpmn2:dataOutputAssociation> + </bpmn2:businessRuleTask> + <bpmn2:startEvent id="_905F0834-19CC-423B-B90E-B38C6D80329F"> + <bpmn2:outgoing>_2C2FFD79-4241-4F9E-A486-2482F817595E</bpmn2:outgoing> + </bpmn2:startEvent> + </bpmn2:process> + <bpmndi:BPMNDiagram> + <bpmndi:BPMNPlane bpmnElement="traffic"> + <bpmndi:BPMNShape id="shape__905F0834-19CC-423B-B90E-B38C6D80329F" bpmnElement="_905F0834-19CC-423B-B90E-B38C6D80329F"> + <dc:Bounds height="56" width="56" x="79" y="227"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941" bpmnElement="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941"> + <dc:Bounds height="98" width="216" x="782" y="205"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__DDD02AFB-D927-47BC-9C0C-523B602B5CD2" bpmnElement="_DDD02AFB-D927-47BC-9C0C-523B602B5CD2"> + <dc:Bounds height="100" width="181" x="1429.5" y="354"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__418CD980-670D-4FC5-B492-A271A61B1477" bpmnElement="_418CD980-670D-4FC5-B492-A271A61B1477"> + <dc:Bounds height="56" width="56" x="1719" y="377"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__8A66FABC-E538-4F50-9DAC-BC9069D19942" bpmnElement="_8A66FABC-E538-4F50-9DAC-BC9069D19942"> + <dc:Bounds height="56" width="56" x="1351" y="228"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__298312AB-7A3D-478B-BD9B-B260CE847645" bpmnElement="_298312AB-7A3D-478B-BD9B-B260CE847645"> + <dc:Bounds height="102" width="178" x="1445" y="77"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__67972C63-8A06-42C5-A3FF-A843EFB4D07B" bpmnElement="_67972C63-8A06-42C5-A3FF-A843EFB4D07B"> + <dc:Bounds height="56" width="56" x="1719" y="100"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__93FFD317-476E-4624-84EF-994617572560" bpmnElement="_93FFD317-476E-4624-84EF-994617572560"> + <dc:Bounds height="102" width="154" x="195" y="205"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5" bpmnElement="_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5"> + <dc:Bounds height="101.09090909090912" width="177.63636363636363" x="409" y="205.45454545454544"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__7229480F-BC4D-4406-B27C-8FF46C5C9042" bpmnElement="_7229480F-BC4D-4406-B27C-8FF46C5C9042"> + <dc:Bounds height="56" width="56" x="637" y="227"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__E2A8304B-68A0-4CCC-8D47-1FA9352D4853" bpmnElement="_E2A8304B-68A0-4CCC-8D47-1FA9352D4853"> + <dc:Bounds height="56" width="56" x="637" y="416"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="shape__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C" bpmnElement="_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C"> + <dc:Bounds height="103" width="227" x="1032" y="204.11691542288554"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="edge_shape__905F0834-19CC-423B-B90E-B38C6D80329F_to_shape__93FFD317-476E-4624-84EF-994617572560" bpmnElement="_2C2FFD79-4241-4F9E-A486-2482F817595E"> + <di:waypoint x="107" y="255"/> + <di:waypoint x="272" y="205"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__7229480F-BC4D-4406-B27C-8FF46C5C9042_to_shape__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941" bpmnElement="_D2252EFF-5EC4-4D61-B797-653F71652627"> + <di:waypoint x="665" y="255"/> + <di:waypoint x="782" y="254"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__B076DF7E-91A5-47C7-B3FC-2C2EC06E5941_to_shape__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C" bpmnElement="_BB963FF4-CF17-4CA0-A727-9AFC2BE17C29"> + <di:waypoint x="890" y="254"/> + <di:waypoint x="1032" y="255.61691542288554"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__8A66FABC-E538-4F50-9DAC-BC9069D19942_to_shape__DDD02AFB-D927-47BC-9C0C-523B602B5CD2" bpmnElement="_19CC68B6-D2DC-4E39-99E5-CE5B30C5FEE6"> + <di:waypoint x="1379" y="256"/> + <di:waypoint x="1378.951928980325" y="406.2250892494252"/> + <di:waypoint x="1520" y="404"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__DDD02AFB-D927-47BC-9C0C-523B602B5CD2_to_shape__418CD980-670D-4FC5-B492-A271A61B1477" bpmnElement="_521A00FC-6A79-44ED-8485-45DB97A621F2"> + <di:waypoint x="1520" y="354"/> + <di:waypoint x="1747" y="433"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C_to_shape__8A66FABC-E538-4F50-9DAC-BC9069D19942" bpmnElement="_E7EF578E-3735-42D9-BF0C-8CCBF398D41C"> + <di:waypoint x="1259" y="255.61691542288554"/> + <di:waypoint x="1351" y="256"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__8A66FABC-E538-4F50-9DAC-BC9069D19942_to_shape__298312AB-7A3D-478B-BD9B-B260CE847645" bpmnElement="_249EB7E9-5847-47C9-8B4D-8BEFED257600"> + <di:waypoint x="1379" y="256"/> + <di:waypoint x="1378.9581298828125" y="128"/> + <di:waypoint x="1534" y="179"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__298312AB-7A3D-478B-BD9B-B260CE847645_to_shape__67972C63-8A06-42C5-A3FF-A843EFB4D07B" bpmnElement="_1287C97D-3568-458A-A907-0123A64A93BE"> + <di:waypoint x="1623" y="128"/> + <di:waypoint x="1719" y="128"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__93FFD317-476E-4624-84EF-994617572560_to_shape__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5" bpmnElement="_A19108FE-08A2-4E80-B7A8-0254C49209A6"> + <di:waypoint x="272" y="256"/> + <di:waypoint x="409" y="256"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__95EFED1F-73F8-47E7-9604-A81EFE5DE8F5_to_shape__7229480F-BC4D-4406-B27C-8FF46C5C9042" bpmnElement="_D3E2F4B7-7739-452F-8D55-0C4F169D4A44"> + <di:waypoint x="497.8181818181818" y="256"/> + <di:waypoint x="637" y="255"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="edge_shape__7229480F-BC4D-4406-B27C-8FF46C5C9042_to_shape__E2A8304B-68A0-4CCC-8D47-1FA9352D4853" bpmnElement="_044AA388-325A-45DE-B783-4F48421B788B"> + <di:waypoint x="665" y="255"/> + <di:waypoint x="665" y="444"/> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> + <bpmn2:relationship type="BPSimData"> + <bpmn2:extensionElements> + <bpsim:BPSimData> + <bpsim:Scenario id="default" name="Simulationscenario"> + <bpsim:ScenarioParameters/> + <bpsim:ElementParameters elementRef="_905F0834-19CC-423B-B90E-B38C6D80329F"> + <bpsim:TimeParameters> + <bpsim:ProcessingTime> + <bpsim:NormalDistribution mean="0" standardDeviation="0"/> + </bpsim:ProcessingTime> + </bpsim:TimeParameters> + </bpsim:ElementParameters> + <bpsim:ElementParameters elementRef="_B076DF7E-91A5-47C7-B3FC-2C2EC06E5941"> + <bpsim:TimeParameters> + <bpsim:ProcessingTime> + <bpsim:NormalDistribution mean="0" standardDeviation="0"/> + </bpsim:ProcessingTime> + </bpsim:TimeParameters> + <bpsim:ResourceParameters> + <bpsim:Availability> + <bpsim:FloatingParameter value="0"/> + </bpsim:Availability> + <bpsim:Quantity> + <bpsim:FloatingParameter value="0"/> + </bpsim:Quantity> + </bpsim:ResourceParameters> + <bpsim:CostParameters> + <bpsim:UnitCost> + <bpsim:FloatingParameter value="0"/> + </bpsim:UnitCost> + </bpsim:CostParameters> + </bpsim:ElementParameters> + <bpsim:ElementParameters elementRef="_DDD02AFB-D927-47BC-9C0C-523B602B5CD2"> + <bpsim:TimeParameters> + <bpsim:ProcessingTime> + <bpsim:NormalDistribution mean="0" standardDeviation="0"/> + </bpsim:ProcessingTime> + </bpsim:TimeParameters> + <bpsim:ResourceParameters> + <bpsim:Availability> + <bpsim:FloatingParameter value="0"/> + </bpsim:Availability> + <bpsim:Quantity> + <bpsim:FloatingParameter value="0"/> + </bpsim:Quantity> + </bpsim:ResourceParameters> + <bpsim:CostParameters> + <bpsim:UnitCost> + <bpsim:FloatingParameter value="0"/> + </bpsim:UnitCost> + </bpsim:CostParameters> + </bpsim:ElementParameters> + <bpsim:ElementParameters elementRef="_298312AB-7A3D-478B-BD9B-B260CE847645"> + <bpsim:TimeParameters> + <bpsim:ProcessingTime> + <bpsim:NormalDistribution mean="0" standardDeviation="0"/> + </bpsim:ProcessingTime> + </bpsim:TimeParameters> + <bpsim:ResourceParameters> + <bpsim:Availability> + <bpsim:FloatingParameter value="0"/> + </bpsim:Availability> + <bpsim:Quantity> + <bpsim:FloatingParameter value="0"/> + </bpsim:Quantity> + </bpsim:ResourceParameters> + <bpsim:CostParameters> + <bpsim:UnitCost> + <bpsim:FloatingParameter value="0"/> + </bpsim:UnitCost> + </bpsim:CostParameters> + </bpsim:ElementParameters> + <bpsim:ElementParameters elementRef="_93FFD317-476E-4624-84EF-994617572560"> + <bpsim:TimeParameters> + <bpsim:ProcessingTime> + <bpsim:NormalDistribution mean="0" standardDeviation="0"/> + </bpsim:ProcessingTime> + </bpsim:TimeParameters> + <bpsim:ResourceParameters> + <bpsim:Availability> + <bpsim:FloatingParameter value="0"/> + </bpsim:Availability> + <bpsim:Quantity> + <bpsim:FloatingParameter value="0"/> + </bpsim:Quantity> + </bpsim:ResourceParameters> + <bpsim:CostParameters> + <bpsim:UnitCost> + <bpsim:FloatingParameter value="0"/> + </bpsim:UnitCost> + </bpsim:CostParameters> + </bpsim:ElementParameters> + <bpsim:ElementParameters elementRef="_95EFED1F-73F8-47E7-9604-A81EFE5DE8F5"> + <bpsim:TimeParameters> + <bpsim:ProcessingTime> + <bpsim:NormalDistribution mean="0" standardDeviation="0"/> + </bpsim:ProcessingTime> + </bpsim:TimeParameters> + <bpsim:ResourceParameters> + <bpsim:Availability> + <bpsim:FloatingParameter value="0"/> + </bpsim:Availability> + <bpsim:Quantity> + <bpsim:FloatingParameter value="0"/> + </bpsim:Quantity> + </bpsim:ResourceParameters> + <bpsim:CostParameters> + <bpsim:UnitCost> + <bpsim:FloatingParameter value="0"/> + </bpsim:UnitCost> + </bpsim:CostParameters> + </bpsim:ElementParameters> + <bpsim:ElementParameters elementRef="_3F719C8E-DA3F-46F8-B8F2-5F04DB132E9C"> + <bpsim:TimeParameters> + <bpsim:ProcessingTime> + <bpsim:NormalDistribution mean="0" standardDeviation="0"/> + </bpsim:ProcessingTime> + </bpsim:TimeParameters> + <bpsim:ResourceParameters> + <bpsim:Availability> + <bpsim:FloatingParameter value="0"/> + </bpsim:Availability> + <bpsim:Quantity> + <bpsim:FloatingParameter value="0"/> + </bpsim:Quantity> + </bpsim:ResourceParameters> + <bpsim:CostParameters> + <bpsim:UnitCost> + <bpsim:FloatingParameter value="0"/> + </bpsim:UnitCost> + </bpsim:CostParameters> + </bpsim:ElementParameters> + </bpsim:Scenario> + </bpsim:BPSimData> + </bpmn2:extensionElements> + <bpmn2:source>_FcMNgJTYEDuJVMby5BR7SQ</bpmn2:source> + <bpmn2:target>_FcMNgJTYEDuJVMby5BR7SQ</bpmn2:target> + </bpmn2:relationship> +</bpmn2:definitions> \ No newline at end of file diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficProcessIT.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficProcessIT.java new file mode 100644 index 000000000..3deb40925 --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficProcessIT.java @@ -0,0 +1,82 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; + +import io.restassured.RestAssured; +import io.restassured.http.ContentType; +import io.restassured.response.ValidatableResponse; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = KogitoApplication.class) +public class TrafficProcessIT { + + public static final BigDecimal SPEED_LIMIT = new BigDecimal(100); + + static { + RestAssured.enableLoggingOfRequestAndResponseIfValidationFails(); + } + + @LocalServerPort + int randomServerPort; + + @BeforeEach + void setup() { + RestAssured.port = randomServerPort; + } + + @Test + void testTrafficViolationEmbeddedDecisionOnSpringBoot() { + testTrafficProcess("traffic", "12-345", 120d, "no", true, true); + testTrafficProcess("traffic", "12-15", 140d, "yes", true, false); + testTrafficProcess("traffic", "0-150", 140d, null, false, false); + } + + private void testTrafficProcess(String processId, String driverId, Double speed, String suspended, boolean validLicense, boolean validatedLicense) { + Map<String, Object> request = new HashMap<>(); + request.put("driverId", driverId); + request.put("violation", new Violation("speed", SPEED_LIMIT, new BigDecimal(speed))); + ValidatableResponse body = given() + .body(request) + .contentType(ContentType.JSON) + .when() + .post("/" + processId) + .then() + .statusCode(201) + .body("driver.ValidLicense", is(validLicense)); + if (suspended != null) { + body.body("validated.ValidLicense", is(validatedLicense)) + .body("validated.Suspended", is(suspended)); + } else { + body.body("validated", nullValue()); + } + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficValidationIT.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficValidationIT.java new file mode 100644 index 000000000..65d2c79fd --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficValidationIT.java @@ -0,0 +1,83 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.kie.kogito.traffic.licensevalidated.Validated; +import org.kie.kogito.traffic.licensevalidation.Driver; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; + +import io.restassured.RestAssured; +import io.restassured.http.ContentType; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.is; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = KogitoApplication.class) +class TrafficValidationIT { + + static { + RestAssured.enableLoggingOfRequestAndResponseIfValidationFails(); + } + + @LocalServerPort + int randomServerPort; + + @BeforeEach + void setup() { + RestAssured.port = randomServerPort; + } + + @Test + void testTrafficValidationOnSpringBoot() { + Map<String, Object> request = new HashMap<>(); + request.put("driver", new Driver("12-345", "Arthur", "SP", "Campinas", 2, 30, new Date())); + request.put("currentTime", new Date()); + given() + .body(request) + .contentType(ContentType.JSON) + .when() + .post("/validation") + .then() + .statusCode(200) + .body("ValidLicense[0]", is(false)); + } + + @Test + void testTrafficValidateOnSpringBoot() { + Map<String, Object> request = new HashMap<>(); + request.put("validated", new Validated("no")); + request.put("currentTime", new Date()); + given() + .body(request) + .contentType(ContentType.JSON) + .when() + .post("/validate") + .then() + .statusCode(200) + .body("ValidLicense[0]", is(true)); + } +} diff --git a/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficViolationIT.java b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficViolationIT.java new file mode 100644 index 000000000..bab22036c --- /dev/null +++ b/gradle-examples/kogito-springboot-gradle-examples/process-decisions-rules-springboot-gradle/src/test/java/org/kie/kogito/traffic/TrafficViolationIT.java @@ -0,0 +1,68 @@ +/* + * 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. + * + */ +package org.kie.kogito.traffic; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; + +import io.restassured.RestAssured; +import io.restassured.http.ContentType; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.is; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = KogitoApplication.class) +class TrafficViolationIT { + + static { + RestAssured.enableLoggingOfRequestAndResponseIfValidationFails(); + } + + @LocalServerPort + int randomServerPort; + + @BeforeEach + void setup() { + RestAssured.port = randomServerPort; + } + + @Test + void testTrafficViolationEmbeddedDecisionOnSpringBoot() { + given() + .body("{\n" + + " \"Driver\": {\n" + + " \"Points\": 2\n" + + " },\n" + + " \"Violation\": {\n" + + " \"Type\": \"speed\",\n" + + " \"Actual Speed\": 120,\n" + + " \"Speed Limit\": 100\n" + + " }\n" + + "}") + .contentType(ContentType.JSON) + .when() + .post("/Traffic Violation") + .then() + .statusCode(200) + .body("Validated.Suspended", is("yes")); + } +} diff --git a/gradle-examples/pom.xml b/gradle-examples/pom.xml new file mode 100644 index 000000000..eeae23404 --- /dev/null +++ b/gradle-examples/pom.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.kie.kogito.examples</groupId> + <artifactId>kogito-examples</artifactId> + <version>999-SNAPSHOT</version> + </parent> + <artifactId>gradle-examples</artifactId> + <packaging>pom</packaging> + + <name>Gradle Examples</name> + <description>Kogito Examples built with Gradle</description> + <modules> + <module>kogito-springboot-gradle-examples</module> + <module>kogito-quarkus-gradle-examples</module> + </modules> + +</project> \ No newline at end of file diff --git a/kogito-springboot-examples/process-decisions-rules-springboot/pom.xml b/kogito-springboot-examples/process-decisions-rules-springboot/pom.xml index 5bfd126f4..67dcc0a2f 100644 --- a/kogito-springboot-examples/process-decisions-rules-springboot/pom.xml +++ b/kogito-springboot-examples/process-decisions-rules-springboot/pom.xml @@ -98,7 +98,6 @@ <version>${version.org.kie.kogito}</version> <executions> <execution> - <phase>compile</phase> <goals> <goal>generateModel</goal> </goals> diff --git a/pom.xml b/pom.xml index fba27c9a9..e253acb93 100755 --- a/pom.xml +++ b/pom.xml @@ -141,6 +141,7 @@ <module>kogito-quarkus-examples</module> <module>kogito-springboot-examples</module> <module>serverless-workflow-examples</module> + <module>gradle-examples</module> </modules> </profile> </profiles> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
