blob: a6d0dc3f0976bf172ec1ff16ec4fd79b62850cbb [file] [log] [blame] [view]
# RuleUnit + Spring Boot example
## Description
A simple rule service to validate `LoanApplication` fact.
An injectable KieRuntimeBuilder is generated, so you can create Drools v7 KieBase and KieSession out of it.
## Installing and Running
### Prerequisites
You will need:
- Java 11+ installed
- Environment variable JAVA_HOME set accordingly
- Maven 3.8.6+ installed
### Compile and Run
```sh
mvn clean compile spring-boot:run
```
### Package and Run
```sh
mvn clean package
java -jar target/rules-legacy-springboot-example.jar
```
## OpenAPI (Swagger) documentation
[Specification at swagger.io](https://swagger.io/docs/specification/about/)
The [Swagger](http://localhost:8080/swagger-ui/index.html) page shows all the available endpoints, and it could be used to test them.
You can take a look at the [OpenAPI definition](http://localhost:8080/v3/api-docs) - automatically generated and included in this service - to determine all available operations exposed by this service. For easy readability you can visualize the OpenAPI definition file using a UI tool like for example available [Swagger Editor](https://editor.swagger.io).
In addition, various clients to interact with this service can be easily generated using this OpenAPI definition.
## Example Usage
Once the service is up and running, you can use the following examples to interact with the service.
### POST /find-approved
Returns approved loan applications from the given facts:
```sh
curl -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"maxAmount":5000,"loanApplications":[{"id":"ABC10001","amount":2000,"deposit":100,"applicant":{"age":45,"name":"John"}}, {"id":"ABC10002","amount":5000,"deposit":100,"applicant":{"age":25,"name":"Paul"}}, {"id":"ABC10015","amount":1000,"deposit":100,"applicant":{"age":12,"name":"George"}}]}' http://localhost:8080/find-approved
```
or on windows
```sh
curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" -d "{\"maxAmount\":5000,\"loanApplications\":[{\"id\":\"ABC10001\",\"amount\":2000,\"deposit\":100,\"applicant\":{\"age\":45,\"name\":\"John\"}}, {\"id\":\"ABC10002\",\"amount\":5000,\"deposit\":100,\"applicant\":{\"age\":25,\"name\":\"Paul\"}}, {\"id\":\"ABC10015\",\"amount\":1000,\"deposit\":100,\"applicant\":{\"age\":12,\"name\":\"George\"}}]}" http://localhost:8080/find-approved
```
As response an array of loan applications is returned.
Example response:
```json
[
{
"id":"ABC10001",
"applicant":{
"name":"John",
"age":45
},
"amount":2000,
"deposit":100,
"approved":true
}
]
```
### POST /find-not-approved-id-and-amount
Returns ids and amount values of rejected loan applications from the given facts:
```sh
curl -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"maxAmount":5000,"loanApplications":[{"id":"ABC10001","amount":2000,"deposit":100,"applicant":{"age":45,"name":"John"}}, {"id":"ABC10002","amount":5000,"deposit":100,"applicant":{"age":25,"name":"Paul"}}, {"id":"ABC10015","amount":1000,"deposit":100,"applicant":{"age":12,"name":"George"}}]}' http://localhost:8080/find-not-approved-id-and-amount
```
As response an array of loan application ids and amount values is returned.
Example response:
```json
[
{
"$amount":5000,
"$id":"ABC10002"
},
{
"$amount":1000,
"$id":"ABC10015"
}
]
```