Re: [PR] [incubator-kie-issues#2163] Implement springboot example to verify loading properties from YaML [incubator-kie-kogito-examples]

2026-04-16 Thread via GitHub


gitgabrio merged PR #2203:
URL: https://github.com/apache/incubator-kie-kogito-examples/pull/2203


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


-
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



Re: [PR] [incubator-kie-issues#2163] Implement springboot example to verify loading properties from YaML [incubator-kie-kogito-examples]

2026-04-16 Thread via GitHub


Copilot commented on code in PR #2203:
URL: 
https://github.com/apache/incubator-kie-kogito-examples/pull/2203#discussion_r3091836252


##
kogito-springboot-examples/process-decisions-rules-springboot-yaml/README.md:
##
@@ -0,0 +1,316 @@
+# Process with Decisions Integration through Business Rule Task
+
+## Description
+
+This is an example project that shows the usage of decisions within processes. 
Decisions can be expressed in different domains or assets, such as DMN and DRL. 
+The focus here is to show how to integrate decisions in an embedded way using 
Business Rule Task where they must be deployed together with the process, in 
the same application. All assets(bpmn, dmn, drl) must be under the 
[resources](src/main/resources/).
+
+This example covers the following items:
+
+* DMN to define a decision service
+* DRL to define rules decision service
+* How to integrate the process with decisions using Business Rule Task
+
+### The Traffic Process example:
+
+It is based on the traffic violation evaluation process, where it is required 
to fetch Driver information, and based on this, it is first performed the 
license validation to check if the driver has a valid license (using a RuleUnit 
in a DRL) after the license validation it is then executed the violation 
evaluation defined as a DMN decision and following, it is checked in the 
process if the output contains information whether the driver was suspended or 
not, completing the process.
+
+ Process using Business Rule Task
+  
+![Traffic Process](docs/images/traffic-rules-dmn.png)
+
+This is a declarative approach, it does not require to have any extra 
implementation, the interaction with decisions is executed out-of-the-box by 
the engine. The information needed to execute the decision evaluation should be 
set in the Data Assignments in the Business Rule Task.
+
+The BPMN file where this process is declared is 
[traffic-rules-dmn.bpmn](src/main/resources/traffic-rules-dmn.bpmn).
+
+---
+
+*  Process Properties
+
+
+These are the properties defined for the process, the most important one in 
this section to pay attention is the ID because it is used in the REST endpoint 
generation referring to the path to interact with this process.
+
+*  Proces Variables
+
+The variables used in the process itself, but the focus in this example are 
the classes that are used to define the POJOs to interact the process with 
decisions, that are the 
[Violation](src/main/java/org/kie/kogito/traffic/Violation.java), 
[Driver](src/main/java/org/kie/kogito/traffic/Driver.java), 
[Fine](src/main/java/org/kie/kogito/traffic/Fine.java).
+
+
+
+**Mapping data from Process to/from DMN**
+
+It is important to mention DMN for instance can define the Data Type in its 
structure, but we can align all attributes names in a Java class that is used 
as process variables, in case the attribute names contain spaces or are not 
following java conventions we can use 
[Jackson](https://github.com/FasterXML/jackson) annotations to make the process 
variable POJOs aligned with DMN data types, for instance in the 
[Violation](src/main/java/org/kie/kogito/traffic/Violation.java) class, where 
it is mapped the `speedLimit` attribute as `Speed Limit` using `@JsonProperty` 
annotation, in this case, this attribute from the process variable with 
Violation can be seamlessly integrated Violation Data Type defined in DMN.
+
+**Violation Data Type in DMN**
+
+
+
+
+*  Get Driver Task
+
+Fetch for driver information, in this implementation it is just mocking a 
result, that simply fill with an expired license date in case the `driverId` is 
an odd number and with a valid date in case of an even number. In a real use 
case, it could be performing an external call to a service or a database to get 
this information.
+
+The service task implementation is done in the 
[DriverService](src/main/java/org/kie/kogito/traffic/DriverService.java) class.
+
+In the data assignment the input is the `driverId` and output is the `driver` 
variable, filled with all driver information.
+
+*  License Validation Task (DRL)
+
+Represents the task to do the call to the DRL service.
+
+
+
+The properties to be set are mainly the `Rule Language`that should be set as 
`DRL` and the `Rule Flow Group` with `unit:` + `[the FQCN of the Rule Unit Data 
class]`, in this case 
[org.kie.kogito.traffic.LicenseValidationService](src/main/java/org/kie/kogito/traffic/LicenseValidationService.java).
+
+
+
+The input and output mapping for this task is just the driver variable that is 
filled with license validation information.
+
+![License Validation 
Data](docs/images/license-validation-dmn-businessrule-data.png)
+
+
+*  Traffic Violation Task (DMN)
+Similar to the License Validation Task, but it represents the task to do the 
call to the DMN service.
+
+
+
+The properties to be set are mainly the `Rule Language`that should be set as 
`DMN` and the `Namespace` and `DMN Model Name` must b