diff --git a/.ci/jenkins/Jenkinsfile.daily-dev-publish b/.ci/jenkins/Jenkinsfile.daily-dev-publish
index ff19d2c9a9d..51d2def7daa 100644
--- a/.ci/jenkins/Jenkinsfile.daily-dev-publish
+++ b/.ci/jenkins/Jenkinsfile.daily-dev-publish
@@ -41,17 +41,17 @@ pipeline {
DEV_DEPLOYMENT_BASE_IMAGE__registry = 'docker.io'
DEV_DEPLOYMENT_BASE_IMAGE__account = 'apache'
DEV_DEPLOYMENT_BASE_IMAGE__name = 'incubator-kie-sandbox-dev-deployment-base'
- DEV_DEPLOYMENT_BASE_IMAGE__buildTags = 'daily-dev'
+ DEV_DEPLOYMENT_BASE_IMAGE__buildTag = 'daily-dev'
DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__registry = 'docker.io'
DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__account = 'apache'
DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__name = 'incubator-dev-deployment-kogito-quarkus-blank-app'
- DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTags = 'daily-dev'
+ DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTag = 'daily-dev'
DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__registry = 'docker.io'
DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__account = 'apache'
DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__name = 'incubator-dev-deployment-dmn-form-webapp'
- DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTags = 'daily-dev'
+ DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTag = 'daily-dev'
ONLINE_EDITOR__devDeploymentBaseImageRegistry = 'docker.io'
ONLINE_EDITOR__devDeploymentBaseImageAccount = 'apache'
@@ -119,12 +119,12 @@ pipeline {
KOGITO_TASK_CONSOLE__registry = 'docker.io'
KOGITO_TASK_CONSOLE__account = 'apache'
KOGITO_TASK_CONSOLE__name = 'incubator-kie-kogito-task-console'
- KOGITO_TASK_CONSOLE__buildTags = 'daily-dev'
+ KOGITO_TASK_CONSOLE__buildTag = 'daily-dev'
KOGITO_MANAGEMENT_CONSOLE__registry = 'docker.io'
KOGITO_MANAGEMENT_CONSOLE__account = 'apache'
KOGITO_MANAGEMENT_CONSOLE__name = 'incubator-kie-kogito-management-console'
- KOGITO_MANAGEMENT_CONSOLE__buildTags = 'daily-dev'
+ KOGITO_MANAGEMENT_CONSOLE__buildTag = 'daily-dev'
SONATAFLOW_BUILDER_IMAGE__registry = 'docker.io'
SONATAFLOW_BUILDER_IMAGE__account = 'apache'
@@ -279,7 +279,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.DEV_DEPLOYMENT_BASE_IMAGE__registry}/${env.DEV_DEPLOYMENT_BASE_IMAGE__account}",
"${env.DEV_DEPLOYMENT_BASE_IMAGE__name}",
- "${env.DEV_DEPLOYMENT_BASE_IMAGE__buildTags}",
+ "${env.DEV_DEPLOYMENT_BASE_IMAGE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
@@ -292,7 +292,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__registry}/${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__account}",
"${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__name}",
- "${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTags}",
+ "${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
@@ -305,7 +305,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__registry}/${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__account}",
"${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__name}",
- "${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTags}",
+ "${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
@@ -471,7 +471,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.KOGITO_TASK_CONSOLE__registry}/${env.KOGITO_TASK_CONSOLE__account}",
"${env.KOGITO_TASK_CONSOLE__name}",
- "${env.KOGITO_TASK_CONSOLE__buildTags}",
+ "${env.KOGITO_TASK_CONSOLE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
@@ -484,7 +484,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.KOGITO_MANAGEMENT_CONSOLE__registry}/${env.KOGITO_MANAGEMENT_CONSOLE__account}",
"${env.KOGITO_MANAGEMENT_CONSOLE__name}",
- "${env.KOGITO_MANAGEMENT_CONSOLE__buildTags}",
+ "${env.KOGITO_MANAGEMENT_CONSOLE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-base-image b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-base-image
index a191c9e357b..a36c9ca89c8 100644
--- a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-base-image
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-base-image
@@ -43,7 +43,7 @@ pipeline {
DEV_DEPLOYMENT_BASE_IMAGE__registry = 'docker.io'
DEV_DEPLOYMENT_BASE_IMAGE__account = 'apache'
DEV_DEPLOYMENT_BASE_IMAGE__name = 'incubator-kie-sandbox-dev-deployment-base'
- DEV_DEPLOYMENT_BASE_IMAGE__buildTags = "latest ${params.RELEASE_VERSION}"
+ DEV_DEPLOYMENT_BASE_IMAGE__buildTag = "latest ${params.RELEASE_VERSION}"
RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
@@ -142,7 +142,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.DEV_DEPLOYMENT_BASE_IMAGE__registry}/${env.DEV_DEPLOYMENT_BASE_IMAGE__account}",
"${env.DEV_DEPLOYMENT_BASE_IMAGE__name}",
- "${env.DEV_DEPLOYMENT_BASE_IMAGE__buildTags}",
+ "${env.DEV_DEPLOYMENT_BASE_IMAGE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-dmn-form-webapp-image b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-dmn-form-webapp-image
index 1312a5729e9..5582e6877e1 100644
--- a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-dmn-form-webapp-image
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-dmn-form-webapp-image
@@ -43,7 +43,7 @@ pipeline {
DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__registry = 'docker.io'
DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__account = 'apache'
DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__name = 'incubator-dev-deployment-dmn-form-webapp'
- DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTags = "latest ${params.RELEASE_VERSION}"
+ DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTag = "latest ${params.RELEASE_VERSION}"
RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
@@ -142,7 +142,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__registry}/${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__account}",
"${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__name}",
- "${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTags}",
+ "${env.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-kogito-quarkus-blank-app-image b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-kogito-quarkus-blank-app-image
index e3c2d4af661..6092b896751 100644
--- a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-kogito-quarkus-blank-app-image
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-kogito-quarkus-blank-app-image
@@ -43,7 +43,7 @@ pipeline {
DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__registry = 'docker.io'
DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__account = 'apache'
DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__name = 'incubator-dev-deployment-kogito-quarkus-blank-app'
- DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTags = "latest ${params.RELEASE_VERSION}"
+ DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTag = "latest ${params.RELEASE_VERSION}"
RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
@@ -142,7 +142,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__registry}/${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__account}",
"${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__name}",
- "${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTags}",
+ "${env.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-management-console b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-management-console
index 52871fa5f95..3d59128056b 100644
--- a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-management-console
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-management-console
@@ -43,7 +43,7 @@ pipeline {
KOGITO_MANAGEMENT_CONSOLE__registry = 'docker.io'
KOGITO_MANAGEMENT_CONSOLE__account = 'apache'
KOGITO_MANAGEMENT_CONSOLE__name = 'incubator-kie-kogito-management-console'
- KOGITO_MANAGEMENT_CONSOLE__buildTags = "latest ${params.RELEASE_VERSION}"
+ KOGITO_MANAGEMENT_CONSOLE__buildTag = "latest ${params.RELEASE_VERSION}"
RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
@@ -142,7 +142,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.KOGITO_MANAGEMENT_CONSOLE__registry}/${env.KOGITO_MANAGEMENT_CONSOLE__account}",
"${env.KOGITO_MANAGEMENT_CONSOLE__name}",
- "${env.KOGITO_MANAGEMENT_CONSOLE__buildTags}",
+ "${env.KOGITO_MANAGEMENT_CONSOLE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-task-console b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-task-console
index d65b0bdcbb3..b2a8d48c22f 100644
--- a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-task-console
+++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-task-console
@@ -43,7 +43,7 @@ pipeline {
KOGITO_TASK_CONSOLE__registry = 'docker.io'
KOGITO_TASK_CONSOLE__account = 'apache'
KOGITO_TASK_CONSOLE__name = 'incubator-kie-kogito-task-console'
- KOGITO_TASK_CONSOLE__buildTags = "latest ${params.RELEASE_VERSION}"
+ KOGITO_TASK_CONSOLE__buildTag = "latest ${params.RELEASE_VERSION}"
RELEASE_ARTIFACTS_DIR = "${WORKSPACE}/release-artifacts"
@@ -142,7 +142,7 @@ pipeline {
dockerUtils.pushImageToRegistry(
"${env.KOGITO_TASK_CONSOLE__registry}/${env.KOGITO_TASK_CONSOLE__account}",
"${env.KOGITO_TASK_CONSOLE__name}",
- "${env.KOGITO_TASK_CONSOLE__buildTags}",
+ "${env.KOGITO_TASK_CONSOLE__buildTag}",
"${pipelineVars.dockerHubApacheKiePushCredentialsId}"
)
}
diff --git a/examples/drools-process-usertasks-quarkus-example/pom.xml b/examples/drools-process-usertasks-quarkus-example/pom.xml
index 116ac070637..3ab00e2fc76 100644
--- a/examples/drools-process-usertasks-quarkus-example/pom.xml
+++ b/examples/drools-process-usertasks-quarkus-example/pom.xml
@@ -32,6 +32,19 @@
drools-process-usertasks-quarkus-example
Kie-Tools Example :: Process with Usertasks Quarkus
Kogito user tasks orchestration - Quarkus
+
+
+
+
+ org.jbpm
+ jbpm-quarkus-devui-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
io.quarkus
@@ -48,7 +61,6 @@
org.jbpm
jbpm-quarkus-devui
- ${project.version}
io.quarkus
diff --git a/examples/jbpm-compact-architecture-example/README.md b/examples/jbpm-compact-architecture-example/README.md
new file mode 100644
index 00000000000..c754d55ceb6
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/README.md
@@ -0,0 +1,555 @@
+# jBPM Compact Architecture Quarkus Example
+
+## Description
+
+This example showcases a basic implementation of the **Hiring** process that drives a _Candidate_ through different
+interviews until he gets hired.
+
+This quickstart project shows a simple example user task orchestration including the use of DMN decisions to
+generate the candidate offer and tÂșimers to skip User Tasks.
+
+This example also demonstrates how to configure the whole _Kogito_ environment using the new _Compact Architecture_ that
+enable simplifying the communication among _Kogito_ services removing the need of events (Kafka/HTTP) between them. This can
+be achieved using the following _Quarkus_ addons:
+
+- `kogito-addons-quarkus-data-index-persistence-postgresql`: enables the _Kogito Runtime_ persisting directly into the
+ _Data-Index_ database.
+- `kogito-addons-quarkus-jobs`: enables collocating the _Jobs Service_ inside the _Kogito Runtime_.
+
+## The Java models
+
+The **Hiring** process uses two POJOs to handle the process data, both of them can be found in the _org.kie.kogito.hr_ package.
+
+The `CandidateData` POJO is the input of the process. It represents the person that wants to get the job.
+
+```java
+public class CandidateData {
+
+ private String name; // Name of the candidate
+ private String lastName; // Last name of the candidate
+ private String email; // Email of the candidate
+ private Integer experience; // Years of experience
+ private List skills; // List of technical skills
+
+ // Constructors, setters, getters...
+}
+```
+
+The `Offer` POJO is the output of the process and represents the job offer that will be sent to the candidate.
+It will be automatically calculated during the process execution depending on the candidate years of experience & skills.
+
+```java
+public class Offer {
+
+ private String category; // Job category based on the candidate experience
+ private Integer salary; // Salary based on the candidate experience and skills
+
+ // Constructors, setters, getters...
+}
+```
+
+## The _New Hiring Offer_ DMN
+
+This example makes use of the _New Hiring Offer_ DMN to generate a base offer for the `Candidate`. The DMN looks like this:
+
+In this simple DMN we have an `Offer` _Decision_, that will generate the candidate offer, which
+has a requirement of a `CandidateData` _Input Data_.
+
+
+
+
+ New Hiring Offer DMN diagram
+
+
+
+The DMN defines the following data types (`tCandidateData` & `tOffer` ) matching the POJOs defined in the project
+(`CandidateData.java` & `Offer.java`):
+
+
+
+
+ New Hiring Offer DMN types
+
+
+
+As expected, `CandidateData` _Input Data_ & `Offer` _Decision_ have a `tCandidateData` data
+
+The `Offer` decision uses the following _Boxed Expression_ to generate the `tOffer`:
+
+
+
+
+ New Hiring Offer DMN decision
+
+
+
+## The Hiring Process
+
+### Process variables
+
+The process handles the following _Variables_:
+
+| Variable | Type | Tags | Description |
+| ----------------- | --------------------------------- | ------------ | ------------------------------------------------- |
+| **candidateData** | `org.kie.kogito.hr.CandidateData` | **input** | The candidate data |
+| **offer** | `org.kie.kogito.hr.Offer` | **output** | The generated candidate offer |
+| **hr_approval** | `Boolean` | **internal** | Determines that HR department approves the hiring |
+| **it_approval** | `Boolean` | **internal** | Determines that IT department approves the hiring |
+
+### The BPMN Process
+
+
+
+
+ Hiring Process Diagram
+
+
+
+The process starts receiving the `CandidateData` as an input and storing it into the `candidateData` variable, and if the
+candidate meets two minimal requirements, the process will continue and reach the **Generate base offer**, otherwise the
+candidate application will be denied and the process will complete without sending the `offer` to the candidate.
+
+The **Generate base offer** is a _Business Rule Task_ that will use the _New Hiring Offer_ decision defined in the
+`NewHiringOffer.dmn` to generate the an `Offer` based on the candidate experience and skills. The task takes the `candidateData`
+as an input and will produce an instance of `org.kie.kogito.hr.Offer` that will be stored in the `offer` variable.
+
+
+
+
+ Generate base Offer data assignments
+
+
+
+After the `offer` has been generated, the process will jump into the **HR Interview** _User Task_, where the candidate we'll
+be interviewed by the _HR_ department. The task takes the `candidateData` and `offer` as inputs and as an output will produce
+the `hr_approve` boolean and an updated `offer`.
+
+
+
+
+ HR Interviewr task data assignments
+
+
+
+The **HR Interview** _User Task_ also has a _Boundary Timer Event_ that will prevent the task to delay and will cancel the
+task after certain time (for example purpose just 3 minutes). This _Boundary Timer Event_ will schedule a Job in the Jobs Service
+that when trigger will notify the _Kogito Runtime_ to cancel the task and deny the application.
+
+If **HR Interview** successfully completed, the process will jump into the **IT Interview** _User Task_. Again the candidate
+we'll have a second interview with the _IT_ department. Again, this task will take the `candidateData` and `offer` as inputs
+but as an output will produce the `it_approve` boolean.
+
+
+
+
+ IT Interviewr task data assignments
+
+
+
+Once both tasks are completed, if the candidate got the approvals from _HR_ & _IT_ (both `hr_interview` & `hr_interview` being true)
+the process will jump into the **Send Offer to Candidate** _Script Task_ that will notify the candidate about the offer
+and the process will end.
+
+> **NOTE:** for simplicity, all the _User Tasks_ in this example are assigned to the _jdoe_ user present in the keycloak configuration
+
+## Running the example
+
+### Prerequisites
+
+- Java 17+ installed
+- Environment variable JAVA_HOME set accordingly
+- Maven 3.9.3+ installed
+- Docker and Docker Compose to run the required example infrastructure.
+
+And when using native image compilation, you will also need:
+
+- GraalVM 20.3+ installed
+- Environment variable GRAALVM_HOME set accordingly
+- GraalVM native image needs as well native-image extension: https://www.graalvm.org/reference-manual/native-image/
+- Note that GraalVM native image compilation typically requires other packages (glibc-devel, zlib-devel and gcc) to be installed too, please refer to GraalVM installation documentation for more details.
+
+### Infrastructure Services
+
+This quickstart provides a docker compose template that starts all the required services. This setup ensures that all services are connected with a default configuration.
+
+- PostgreSQL: 5432
+- Management Console: 8280
+- Task Console: 8380
+- Keycloak: 8480
+- PgAdmin: 8055
+- Kogito Example Service: 8080
+
+To help bootstraping the Infrastructure Services, the example provides the `startServices.sh` script inside the _docker-compose_
+folder.
+
+> **_NOTE_**: the docker compose template requires using _extra_hosts_ to allow the services use the host network, this may
+> carry some issues if you are using a **podman** version older than **4.7**.
+
+### Building & Running the example
+
+To build the example, on a Terminal, run the following command:
+
+```shell
+mvn clean package -Pcontainer
+```
+
+This will build the example quarkus application and create a Docker image that will be started in the `docker-compose` template.
+
+To execute the full example (including consoles), open a Terminal and run the following command inside the `docker-compose` folder:
+
+```shell
+sh startServices.sh
+```
+
+> **_IMPORTANT:_** if you are running this example on MacOs and you are not using **Docker Desktop**, please append
+> the following entry in your `/etc/hosts` file to enable a good communication between al components.
+>
+> ```
+> 127.0.0.1 kubernetes.docker.internal
+> ```
+
+Additionally, if you want to start only the example and the minimal Infrastructure Services (PostgreSQL, Data-Index and Jobs Service),
+you can run the same `startServices.sh` script but passing the `example` argument
+
+```shell
+sh startServices.sh example
+```
+
+> **_NOTE:_** starting the Infrastructure Services, please consider running a `mvn clean package -Pcontainer`
+> command on the project root before running the `startServices.sh` script for the first time or any time you modify the project.
+
+### Running the example in Development mode
+
+To run the example in Development mode, just run the following command in a Terminal:
+
+```shell
+mvn clean package quarkus:dev -Pdevelopment
+```
+
+The Development Mode will embed all the needed Infrastructure Services (PostgreSQL, Data-Index & Jobs Service) and won't
+require any extra step.
+
+The `development` profile includes the **Runtime Tools Quarkus Extension** that exposes a new section in the **Quarkus Dev-UI**
+unifying the **Management Console** & **Task Console** functionalities. **Quarkus Dev-UI** is available at http://localhost:8080/q/dev
+
+> **_NOTE:_** For more information about how to work with Kogito Runtime Tools Quarkus Extension, please refer to the [Kogito Documentation](https://docs.kogito.kie.org/latest/html_single/#con-runtime-tools-dev-ui_kogito-developing-process-services) page.
+
+### Starting an instance of the Hiring Process
+
+Once the service is up and running you can make use of the **Hiring** application by a sending request to `http://localhost:8080/hiring`.
+
+Sending the following valid `CandidateData` will start a process instance that will land into the _HR Interview_ task:
+
+```json
+{
+ "candidateData": {
+ "name": "Jon",
+ "lastName": "Snow",
+ "email": "jon@snow.org",
+ "experience": 5,
+ "skills": ["Java", "Kogito", "Fencing"]
+ }
+}
+```
+
+In a Terminal you can execute this curl command to start a **Hiring** process:
+
+```bash
+curl -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:8080/hiring -d '{"candidateData": { "name": "Jon", "lastName": "Snow", "email": "jon@snow.org", "experience": 5, "skills": ["Java", "Kogito", "Fencing"]}}'
+```
+
+If everything went well you may get a response like:
+
+```json
+{
+ "id": "628e679f-4deb-4abc-9f28-668914c64ef9",
+ "offer": {
+ "category": "Senior Software Engineer",
+ "salary": 40450
+ }
+}
+```
+
+In the server log You may find a trace like:
+
+```
+New Hiring has been created for candidate: Jon Snow
+###################################
+Generated offer for candidate: Jon Snow
+Job Category: Senior Software Engineer
+Base salary: 40450
+###################################
+```
+
+Use the following `CandidateData` that don't match the minimal candidate requirements, to start a process that will automatically end:
+
+```json
+{
+ "candidateData": {
+ "name": "Jon",
+ "lastName": "Snow",
+ "email": "jon@snow.org",
+ "experience": 0,
+ "skills": []
+ }
+}
+```
+
+In a Terminal you can execute this curl command to start a **Hiring** process:
+
+```bash
+curl -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:8080/hiring -d '{"candidateData": { "name": "Jon", "lastName": "Snow", "email": "jon@snow.org", "experience": 0, "skills": []}}'
+```
+
+If everything went well you may get a response like:
+
+```json
+{
+ "id": "3659601a-bb59-458d-859e-7892621ad5b7",
+ "offer": null
+}
+```
+
+In the server log You may find a trace like:
+
+```
+New Hiring has been created for candidate: Jon Snow
+###################################
+Candidate Jon Snow don't meet the requirements for the position but we'll keep it on records for the future!
+###################################
+```
+
+### Using Keycloak as Authentication Server
+
+In this Quickstart we'll be using [Keycloak](https://www.keycloak.org/) as _Authentication Server_. It will be started as a part of the project _Infrastructure Services_, you can check the configuration on the project [docker-compose.yml](docker-compose/docker-compose.yml) in [docker-compose](docker-compose) folder.
+
+It will install the _Kogito Realm_ that comes with a predefined set of users:
+
+| Login | Password | Roles |
+| ----- | -------- | ------------------- |
+| admin | admin | _admin_, _managers_ |
+| alice | alice | _user_ |
+| jdoe | jdoe | _managers_ |
+
+Once Keycloak is started, you should be able to access your _Keycloak Server_ at [localhost:8480/auth](http://localhost:8480/auth) with _admin_ user.
+
+> **_NOTE:_** This example uses keycloak authentication to enable security only in the consoles not in runtime.
+
+### Using the Kogito Runtime Consoles to interact with the Hiring Process
+
+The following _step-by-step_ guides will show how to take advantage of both _Kogito Management Console_ and _Kogito Task Console_
+to operate with the instances of _Hiring_ process.
+
+To be able to follow the guides, please make sure that the example has been built using the `container` and all the _Infractructure Services_
+are started as explained in the [Building & Running the example](#building--running-the-example) section.
+
+> **_NOTE_**: For more information about how to operate with the _Kogito Runtime Consoles_, please refer to the
+> [Management Console](https://docs.kogito.kie.org/latest/html_single/#con-management-console_kogito-developing-process-services) & [Task Console](https://docs.kogito.kie.org/latest/html_single/#con-task-console_kogito-developing-process-services) documentation.
+
+#### Show active Hiring process instance at Kogito Management Console
+
+_Kogito Management Console_ is the tool that enables the user to view and administrate process instances in our _Kogito application_.
+
+In this guide we'll see how to use the _Kogito Management Console_ to view the state of the Hiring process instances.
+
+1. With the example built and all the _Infrastructure Services_ running, let's start an instance of the _Hiring_ process. To do so, in a Terminal just run:
+
+ ```bash
+ curl -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:8080/hiring -d '{"candidateData": { "name": "Jon", "lastName": "Snow", "email": "jon@snow.org", "experience": 5, "skills": ["Java", "Kogito", "Fencing"]}}'
+ ```
+
+ If everything went well, you should get a response like:
+
+ ```json
+ {
+ "id": "064a6372-b5bb-4eff-a059-d7b24d4ac64a",
+ "offer": { "category": "Senior Software Engineer", "salary": 40450 }
+ }
+ ```
+
+ Which indicates that a new process instance with id **064a6372-b5bb-4eff-a059-d7b24d4ac64a** has been started.
+
+2. Now let's check the process instance state with the _Kogito Management Console_. To do so, in your browser navigate
+ to http://localhost:8280 and log in using any of the users specified in the [Using Keycloak as Authentication Server](#using-keycloak-as-authentication-server).
+
+ Once you are logged in, you should be redirected to the **Process Instances** page where you should be able to see
+ the started process instance in active state.
+
+
+
+
+ Process List in Kogito Management Console
+
+
+
+3. Click on the instance **id** to navigate into the _Process Details_ page. In there you'll be able to see different panels displaying relevant information about the instance state, such as the _Diagram_, _Timeline_, _Details_, _Variables_, _Jobs_...
+
+
+
+
+ Process Instance Details page
+
+
+
+ Now check the **Diagram** panel, in there you'll se the instance execution path. Notice that it's stopped _HR Interview_ _User Task_ waiting for some input from the user.
+ The task has _Timer_ that will skip the task if it's not completed in a given time (3 minutes in this example). You should be able to see the
+ associated _Job_ in the **Jobs** panel. Now, let's wait 3 minutes to see the timer in action.
+
+4. After 3 minutes, the scheduled _Job_ should have been executed, making the process instance skip the _HR Interview_ task.
+ In the **Process Details** page, click the _Refresh_ button to see the process instance state.
+
+
+
+
+ Process Instance completed after the timer execution.
+
+
+
+ Again, check the _Diagram_ panel to see the process instance execution path and the _HR Interview_ task
+ should have been skipped and the process instance continued its execution by following the _Application denied_ path
+ reaching the _Completed_ state.
+
+ Notice in the _Jobs_ panel that the associated _Job_ has the **Executed** status.
+
+#### Complete Hiring process instances using Kogito Task Console
+
+When a _Kogito_ process reaches a _User Task_, the process execution stops waiting for the user input
+that will enable the _User Task_ to finish and allowing the process execution to continue.
+
+_Kogito Task Console_ is the tool that enables the user interacting with the process _User Tasks_ and provide the necesary data
+for the process to continue (usually wiht forms).
+
+In this guide, we'll see how to complete the process _User Tasks_ using the _Kogito Task Console_ to interact with the process _User Tasks_
+using the engine autogenerated forms.
+
+> **_NOTE_**: For simplicity, all the _User Tasks_ are assigned to the user _jdoe_. Please make sure you use the _jdoe_/_jdoe_ credentials
+> when logging in the _Task Console_
+
+1. With the example built and all the _Infrastructure Services_ running, let's start an instance of the _Hiring_ process. To do so, in a Terminal just run:
+
+ ```bash
+ curl -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:8080/hiring -d '{"candidateData": { "name": "Jon", "lastName": "Snow", "email": "jon@snow.org", "experience": 5, "skills": ["Java", "Kogito", "Fencing"]}}'
+ ```
+
+ If everything went well, you should get a response like:
+
+ ```json
+ {
+ "id": "3cf0d58f-a824-4046-ba6c-c2e79edc1df7",
+ "offer": { "category": "Senior Software Engineer", "salary": 40450 }
+ }
+ ```
+
+ Which indicates that a new process instance with id **3cf0d58f-a824-4046-ba6c-c2e79edc1df7** has been started.
+
+2. Let's check the process instance state. Again browse to http://localhost:8280 to access the _Kogito Management Console_,
+ and in the **Process List** click the **Id** column to open the **Process Details** page.
+
+
+
+
+ Process List in Kogito Management Console
+
+
+
+
+
+
+ Process instance Details page.
+
+
+
+ As expected, the process instance is stopped in the _HR Interview_ task waiting for some input from the user. Let's try to
+ complete the task.
+
+3. Now open the _Kogito Task Console_ by browsing to http://localhost:8380 and login using the **jdoe/jdoe** credentials.
+ After logging in, you'll be redirected to the **Task Inbox** page, which contains the list of _Active_ tasks assigned to the
+ logged user. In this case you should be able to see only the new _HR Interview_ task.
+
+
+
+
+ Task Inbox in Kogito Task Console
+
+
+
+ Click on the **HR Interview** task to open the form and complete it!
+
+4. The **Task Form** is the main component to interact with User Tasks, it allows the user to provide the data required by
+ the task and transition it to the next phase, allowing the Process to continue. The **Task Form** is autogenerated based
+ on the _User Task_ data assignments.
+
+
+
+
+ HR Interview Task Form
+
+
+
+ _HR Interview_ Form allows you to edit the actual **Offer** that will be sent to the _Candidate_ and also approve or deny
+ the job application with the **Approve** checkbox.
+
+ Now, check the **Approve** checkbox click the **Complete** button in order to submit the form and complete the task. If the
+ task could be successfully completed, a notification should appear in the screen and the form will stay in Read-Only mode.
+
+
+
+
+ HR Interview Success notification!
+
+
+
+ With the _HR Interview_ task successfully completed the process has moved forward and reached the _IT Interview_ task.
+
+ Optionally, you can check the process instance state in the **Kogito Management Console** and verify the current
+ execution path.
+
+
+
+
+ Process Instance details stopped in IT Interview
+
+
+
+5. Now is time to complete the **IT Interview** task and complete this Hiring process instance. In **Task Console**, go
+ back to **Task Inbox** and as expected, there you'll see that **HR Interview** is no longer available and a new
+ **IT Interview** has appeared.
+
+
+
+
+ IT Interview in Task Inbox
+
+
+
+ As done in Step #3, click in the **IT Interview** task to open the task form. _IT Interview_ task only needs the
+ candidate **Approval** to be submitted. Please, check the **Approval** field and click the **Complete** button to
+ submit the form.
+
+
+
+
+ IT Interview Task Form
+
+
+
+6. After the form is submitted the _IT Task_ should be completed and the process should continue, notifying the _Candidate_
+ that he has succesfully finished the Hiring process. Please go back to **Task Inbox** to verify there are no other active tasks
+ waiting for you.
+
+
+
+
+ Empty **Task Inbox** after completing the *IT Interview* Task
+
+
+
+ You can also open use _Kogito Management Console_ to check the state of the process instance and verify that the
+ instance has been successfully completed.
+
+
+
+
+ Hiring Process sucessfully completed
+
+
diff --git a/examples/jbpm-compact-architecture-example/docker-compose/.gitignore b/examples/jbpm-compact-architecture-example/docker-compose/.gitignore
new file mode 100644
index 00000000000..b6632dbda58
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/docker-compose/.gitignore
@@ -0,0 +1,3 @@
+.env
+svg/
+persistence/
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/docker-compose/README.md b/examples/jbpm-compact-architecture-example/docker-compose/README.md
new file mode 100644
index 00000000000..26834f79196
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/docker-compose/README.md
@@ -0,0 +1,61 @@
+# Kogito and Infrastructure services
+
+To allow a quick setup of all services required to run this demo, we provide a docker compose template that starts the following services:
+
+- Postgresql
+- PgAdmin
+- Kogito Example Service (Only available if the example has been compiled using the `container` mvn profile eg: `mvn cleanp package -Dcontainer`)
+- Kogito Management Console
+- Kogito Task Console
+- Keycloak
+
+The docker compose template provides three profiles to enable starting only the set of services you want to use. The profiles are:
+
+- **infra**: Starts only the minimal infrastructure to run the example (Postgresql, pgadmin, Kogito Data Index)
+- **example**: Starts the services in _infra_ profile and the Kogito Example Service. Requires the example to be compiled using the `container` mvn profile eg: `mvn cleanp package -Dcontainer`.
+- **full** (default): includes all the above and also starts the **Management Console**, **Task Console** and a **Keycloak** to handle the consoles authentication. Requires the example to be compiled using the `container` mvn profile eg: `mvn cleanp package -Dcontainer`.
+
+> NOTE: In order to use it, please ensure you have Docker Compose installed on your machine, otherwise follow the instructions available
+> in [here](https://docs.docker.com/compose/install/).
+
+## Starting the services
+
+Use the `startServices.sh` passing the docker profile you want to use as an argument. If no profile is provided the script will default to **full**.
+
+Eg:
+
+```shell
+sh startServices.sh example
+```
+
+Once the services are started (depending on the profile), the following ports will be assigned on your local machine:
+
+- Postgresql: 5432
+- PgAdmin: 8055
+- Kogito Example Service: 8080
+- Kogito Management Console: 8280
+- Kogito Task Console: 8380
+- Keycloak: 8480
+
+## Stopping and removing volume data
+
+To stop all services, simply run:
+
+```shell
+docker compose stop
+```
+
+or
+
+```shell
+docker compose down
+```
+
+to stop the services and remove the containers
+docker-compose -f docker-compose-postgresql.yml stop
+
+For more details please check the Docker Compose documentation.
+
+```shell
+docker compose --help
+```
diff --git a/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml b/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml
new file mode 100644
index 00000000000..e65463296c5
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml
@@ -0,0 +1,127 @@
+version: "3"
+
+services:
+ postgres:
+ container_name: postgres
+ image: postgres:16.1-alpine3.19
+ profiles: ["infra", "example", "full"]
+ ports:
+ - "5432:5432"
+ volumes:
+ - ./sql:/docker-entrypoint-initdb.d:Z
+ healthcheck:
+ test: ["CMD", "pg_isready", "-q", "-d", "kogito", "-U", "kogito-user"]
+ timeout: 45s
+ interval: 10s
+ retries: 50
+ environment:
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+
+ pgadmin:
+ container_name: pgadmin
+ image: dpage/pgadmin4:8.2
+ profiles: ["infra", "example", "full"]
+ ports:
+ - 8055:80
+ depends_on:
+ - postgres
+ volumes:
+ - ./pgadmin/servers.json:/pgadmin4/servers.json
+ - ./pgadmin/pgpass:/pgadmin4/pgpass
+ entrypoint: >
+ /bin/sh -c "
+ cp -f /pgadmin4/pgpass /var/lib/pgadmin/;
+ chmod 600 /var/lib/pgadmin/pgpass;
+ /entrypoint.sh
+ "
+ environment:
+ PGADMIN_DEFAULT_EMAIL: user@kogito.org
+ PGADMIN_DEFAULT_PASSWORD: pass
+ PGADMIN_CONFIG_SERVER_MODE: "False"
+ PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: "False"
+ GUNICORN_ACCESS_LOGFILE: "/dev/null"
+
+ jbpm-compact-architecture-example-service:
+ container_name: jbpm-compact-architecture-example-service
+ image: dev.local/${USER}/jppm-compact-architecture-example-service:${PROJECT_VERSION}
+ profiles: ["example", "full"]
+ ports:
+ - "8080:8080"
+ environment:
+ QUARKUS_HTTP_CORS_ORIGINS: "/.*/"
+ QUARKUS_DATASOURCE_JDBC_URL: "jdbc:postgresql://postgres:5432/kogito"
+ QUARKUS_DATASOURCE_REACTIVE_URL: "postgresql://postgres:5432/kogito"
+ QUARKUS_DATASOURCE_USERNAME: kogito-user
+ QUARKUS_DATASOURCE_PASSWORD: kogito-pass
+ QUARKUS_DATASOURCE_DB_KIND: postgresql
+ KOGITO_JOBS_SERVICE_URL: http://${DOCKER_GATEWAY_HOST}:8080
+ KOGITO_SERVICE_URL: http://${DOCKER_GATEWAY_HOST}:8080
+ KOGITO_DATAINDEX_HTTP_URL: http://${DOCKER_GATEWAY_HOST}:8080
+ extra_hosts:
+ - "${DOCKER_GATEWAY_HOST}:host-gateway"
+
+ keycloak:
+ container_name: keycloak
+ image: quay.io/keycloak/keycloak:legacy
+ profiles: ["full"]
+ ports:
+ - "8480:8080"
+ depends_on:
+ postgres:
+ condition: service_healthy
+ volumes:
+ - ./keycloak/kogito-realm.json:/tmp/kogito-realm.json
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:8080/auth/realms/kogito"]
+ interval: 2s
+ timeout: 1s
+ retries: 50
+ environment:
+ DB_VENDOR: POSTGRES
+ DB_ADDR: postgres
+ DB_DATABASE: keycloak
+ DB_USER: kogito-user
+ DB_SCHEMA: public
+ DB_PASSWORD: kogito-pass
+ KEYCLOAK_USER: admin
+ KEYCLOAK_PASSWORD: admin
+ KEYCLOAK_IMPORT: /tmp/kogito-realm.json
+
+ management-console:
+ container_name: management-console
+ image: ${KOGITO_MANAGEMENT_CONSOLE_IMAGE}
+ profiles: ["full"]
+ ports:
+ - 8280:8080
+ depends_on:
+ jbpm-compact-architecture-example-service:
+ condition: service_started
+ keycloak:
+ condition: service_healthy
+ volumes:
+ - ./svg/:/home/kogito/data/svg/
+ environment:
+ RUNTIME_TOOLS_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT: http://${DOCKER_GATEWAY_HOST:-host.docker.internal}:8080/graphql
+ KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL: http://localhost:8480/auth/realms/kogito/.well-known/openid-configuration
+ KOGITO_CONSOLES_KEYCLOAK_URL: http://localhost:8480/auth
+ KOGITO_CONSOLES_KEYCLOAK_REALM: kogito
+ KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID: kogito-console-quarkus
+
+ task-console:
+ container_name: task-console
+ image: ${KOGITO_TASK_CONSOLE_IMAGE}
+ profiles: ["full"]
+ ports:
+ - 8380:8080
+ depends_on:
+ jbpm-compact-architecture-example-service:
+ condition: service_started
+ keycloak:
+ condition: service_healthy
+ environment:
+ RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT: http://${DOCKER_GATEWAY_HOST:-host.docker.internal}:8080/graphql
+ KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL: http://localhost:8480/auth/realms/kogito/.well-known/openid-configuration
+ KOGITO_CONSOLES_KEYCLOAK_URL: http://localhost:8480/auth
+ KOGITO_CONSOLES_KEYCLOAK_REALM: kogito
+ KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID: kogito-console-quarkus
diff --git a/examples/jbpm-compact-architecture-example/docker-compose/keycloak/kogito-realm.json b/examples/jbpm-compact-architecture-example/docker-compose/keycloak/kogito-realm.json
new file mode 100644
index 00000000000..711887e17a2
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/docker-compose/keycloak/kogito-realm.json
@@ -0,0 +1,2010 @@
+{
+ "realm": "kogito",
+ "notBefore": 0,
+ "revokeRefreshToken": false,
+ "refreshTokenMaxReuse": 0,
+ "accessTokenLifespan": 300,
+ "accessTokenLifespanForImplicitFlow": 900,
+ "ssoSessionIdleTimeout": 1800,
+ "ssoSessionMaxLifespan": 36000,
+ "ssoSessionIdleTimeoutRememberMe": 0,
+ "ssoSessionMaxLifespanRememberMe": 0,
+ "offlineSessionIdleTimeout": 2592000,
+ "offlineSessionMaxLifespanEnabled": false,
+ "offlineSessionMaxLifespan": 5184000,
+ "accessCodeLifespan": 60,
+ "accessCodeLifespanUserAction": 300,
+ "accessCodeLifespanLogin": 1800,
+ "actionTokenGeneratedByAdminLifespan": 43200,
+ "actionTokenGeneratedByUserLifespan": 300,
+ "enabled": true,
+ "sslRequired": "external",
+ "registrationAllowed": false,
+ "registrationEmailAsUsername": false,
+ "rememberMe": false,
+ "verifyEmail": false,
+ "loginWithEmailAllowed": true,
+ "duplicateEmailsAllowed": false,
+ "resetPasswordAllowed": false,
+ "editUsernameAllowed": false,
+ "bruteForceProtected": false,
+ "permanentLockout": false,
+ "maxFailureWaitSeconds": 900,
+ "minimumQuickLoginWaitSeconds": 60,
+ "waitIncrementSeconds": 60,
+ "quickLoginCheckMilliSeconds": 1000,
+ "maxDeltaTimeSeconds": 43200,
+ "failureFactor": 30,
+ "roles": {
+ "realm": [
+ {
+ "name": "managers",
+ "composite": false,
+ "clientRole": false,
+ "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b",
+ "attributes": {}
+ },
+ {
+ "name": "uma_authorization",
+ "description": "${role_uma_authorization}",
+ "composite": false,
+ "clientRole": false,
+ "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b",
+ "attributes": {}
+ },
+ {
+ "name": "admin",
+ "composite": false,
+ "clientRole": false,
+ "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b",
+ "attributes": {}
+ },
+ {
+ "name": "user",
+ "composite": false,
+ "clientRole": false,
+ "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b",
+ "attributes": {}
+ },
+ {
+ "name": "HR",
+ "composite": false,
+ "clientRole": false,
+ "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b",
+ "attributes": {}
+ },
+ {
+ "name": "IT",
+ "composite": false,
+ "clientRole": false,
+ "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b",
+ "attributes": {}
+ },
+ {
+ "name": "offline_access",
+ "description": "${role_offline-access}",
+ "composite": false,
+ "clientRole": false,
+ "containerId": "11d78bf6-6d10-4484-baba-a1388379d68b",
+ "attributes": {}
+ }
+ ],
+ "client": {
+ "realm-management": [
+ {
+ "name": "manage-identity-providers",
+ "description": "${role_manage-identity-providers}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "impersonation",
+ "description": "${role_impersonation}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "view-identity-providers",
+ "description": "${role_view-identity-providers}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "view-realm",
+ "description": "${role_view-realm}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "query-users",
+ "description": "${role_query-users}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "manage-clients",
+ "description": "${role_manage-clients}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "manage-events",
+ "description": "${role_manage-events}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "realm-admin",
+ "description": "${role_realm-admin}",
+ "composite": true,
+ "composites": {
+ "client": {
+ "realm-management": [
+ "impersonation",
+ "manage-identity-providers",
+ "view-identity-providers",
+ "view-realm",
+ "query-users",
+ "manage-clients",
+ "manage-events",
+ "manage-realm",
+ "view-authorization",
+ "manage-authorization",
+ "view-users",
+ "create-client",
+ "query-clients",
+ "query-groups",
+ "manage-users",
+ "view-clients",
+ "view-events",
+ "query-realms"
+ ]
+ }
+ },
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "manage-realm",
+ "description": "${role_manage-realm}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "view-authorization",
+ "description": "${role_view-authorization}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "manage-authorization",
+ "description": "${role_manage-authorization}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "create-client",
+ "description": "${role_create-client}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "view-users",
+ "description": "${role_view-users}",
+ "composite": true,
+ "composites": {
+ "client": {
+ "realm-management": ["query-groups", "query-users"]
+ }
+ },
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "query-clients",
+ "description": "${role_query-clients}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "query-groups",
+ "description": "${role_query-groups}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "manage-users",
+ "description": "${role_manage-users}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "view-clients",
+ "description": "${role_view-clients}",
+ "composite": true,
+ "composites": {
+ "client": {
+ "realm-management": ["query-clients"]
+ }
+ },
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "view-events",
+ "description": "${role_view-events}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ },
+ {
+ "name": "query-realms",
+ "description": "${role_query-realms}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "376bd940-e50a-4495-80fc-9c6c07312748",
+ "attributes": {}
+ }
+ ],
+ "security-admin-console": [],
+ "admin-cli": [],
+ "kogito-service": [
+ {
+ "name": "uma_protection",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "0ac5df91-e044-4051-bd03-106a3a5fb9cc",
+ "attributes": {}
+ }
+ ],
+ "broker": [
+ {
+ "name": "read-token",
+ "description": "${role_read-token}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "53d4fe53-a039-471e-886a-28eddc950e95",
+ "attributes": {}
+ }
+ ],
+ "account": [
+ {
+ "name": "view-profile",
+ "description": "${role_view-profile}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "e55e1234-38fa-432d-8d90-39f5e024688d",
+ "attributes": {}
+ },
+ {
+ "name": "manage-account",
+ "description": "${role_manage-account}",
+ "composite": true,
+ "composites": {
+ "client": {
+ "account": ["manage-account-links"]
+ }
+ },
+ "clientRole": true,
+ "containerId": "e55e1234-38fa-432d-8d90-39f5e024688d",
+ "attributes": {}
+ },
+ {
+ "name": "manage-account-links",
+ "description": "${role_manage-account-links}",
+ "composite": false,
+ "clientRole": true,
+ "containerId": "e55e1234-38fa-432d-8d90-39f5e024688d",
+ "attributes": {}
+ }
+ ]
+ }
+ },
+ "groups": [],
+ "defaultRoles": ["uma_authorization", "offline_access"],
+ "requiredCredentials": ["password"],
+ "otpPolicyType": "totp",
+ "otpPolicyAlgorithm": "HmacSHA1",
+ "otpPolicyInitialCounter": 0,
+ "otpPolicyDigits": 6,
+ "otpPolicyLookAheadWindow": 1,
+ "otpPolicyPeriod": 30,
+ "otpSupportedApplications": ["FreeOTP", "Google Authenticator"],
+ "scopeMappings": [
+ {
+ "clientScope": "offline_access",
+ "roles": ["offline_access"]
+ }
+ ],
+ "clients": [
+ {
+ "clientId": "account",
+ "name": "${client_account}",
+ "baseUrl": "/auth/realms/kogito/account",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "0136c3ef-0dfd-4b13-a6d0-2c8b6358edec",
+ "defaultRoles": ["view-profile", "manage-account"],
+ "redirectUris": ["/auth/realms/kogito/account/*"],
+ "webOrigins": [],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": false,
+ "serviceAccountsEnabled": false,
+ "publicClient": false,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {},
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": false,
+ "nodeReRegistrationTimeout": 0,
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"]
+ },
+ {
+ "clientId": "admin-cli",
+ "name": "${client_admin-cli}",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "a951803a-79c7-46a6-8197-e32835286971",
+ "redirectUris": [],
+ "webOrigins": [],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": false,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": true,
+ "serviceAccountsEnabled": false,
+ "publicClient": true,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {},
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": false,
+ "nodeReRegistrationTimeout": 0,
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"]
+ },
+ {
+ "clientId": "broker",
+ "name": "${client_broker}",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "e1f7edd7-e15c-43b4-8736-ff8204d16836",
+ "redirectUris": [],
+ "webOrigins": [],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": false,
+ "serviceAccountsEnabled": false,
+ "publicClient": false,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {},
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": false,
+ "nodeReRegistrationTimeout": 0,
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"]
+ },
+ {
+ "clientId": "kogito-frontend",
+ "rootUrl": "http://localhost:8082",
+ "adminUrl": "http://localhost:8082",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "secret",
+ "redirectUris": ["http://localhost:8082/*"],
+ "webOrigins": ["http://localhost:8082"],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": true,
+ "serviceAccountsEnabled": false,
+ "publicClient": false,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {
+ "saml.assertion.signature": "false",
+ "saml.force.post.binding": "false",
+ "saml.multivalued.roles": "false",
+ "saml.encrypt": "false",
+ "saml.server.signature": "false",
+ "saml.server.signature.keyinfo.ext": "false",
+ "exclude.session.state.from.auth.response": "false",
+ "saml_force_name_id_format": "false",
+ "saml.client.signature": "false",
+ "tls.client.certificate.bound.access.tokens": "false",
+ "saml.authnstatement": "false",
+ "display.on.consent.screen": "false",
+ "saml.onetimeuse.condition": "false"
+ },
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": true,
+ "nodeReRegistrationTimeout": -1,
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"],
+ "access": {
+ "view": true,
+ "configure": true,
+ "manage": true
+ }
+ },
+ {
+ "clientId": "kogito-app",
+ "rootUrl": "http://localhost:8080",
+ "adminUrl": "http://localhost:8080",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "secret",
+ "redirectUris": ["http://localhost:8080/*"],
+ "webOrigins": ["*"],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": true,
+ "serviceAccountsEnabled": false,
+ "publicClient": false,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {
+ "saml.assertion.signature": "false",
+ "saml.force.post.binding": "false",
+ "saml.multivalued.roles": "false",
+ "saml.encrypt": "false",
+ "saml.server.signature": "false",
+ "saml.server.signature.keyinfo.ext": "false",
+ "exclude.session.state.from.auth.response": "false",
+ "saml_force_name_id_format": "false",
+ "saml.client.signature": "false",
+ "tls.client.certificate.bound.access.tokens": "false",
+ "saml.authnstatement": "false",
+ "display.on.consent.screen": "false",
+ "saml.onetimeuse.condition": "false"
+ },
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": true,
+ "nodeReRegistrationTimeout": -1,
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"],
+ "access": {
+ "view": true,
+ "configure": true,
+ "manage": true
+ }
+ },
+ {
+ "clientId": "kogito-service",
+ "rootUrl": "",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "secret",
+ "redirectUris": ["*"],
+ "webOrigins": ["*"],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": true,
+ "serviceAccountsEnabled": true,
+ "authorizationServicesEnabled": true,
+ "publicClient": false,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {},
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": true,
+ "nodeReRegistrationTimeout": -1,
+ "protocolMappers": [
+ {
+ "name": "Client ID",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usersessionmodel-note-mapper",
+ "consentRequired": false,
+ "config": {
+ "user.session.note": "clientId",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "clientId",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "Client IP Address",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usersessionmodel-note-mapper",
+ "consentRequired": false,
+ "config": {
+ "user.session.note": "clientAddress",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "clientAddress",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "Client Host",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usersessionmodel-note-mapper",
+ "consentRequired": false,
+ "config": {
+ "user.session.note": "clientHost",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "clientHost",
+ "jsonType.label": "String"
+ }
+ }
+ ],
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"],
+ "authorizationSettings": {
+ "allowRemoteResourceManagement": true,
+ "policyEnforcementMode": "ENFORCING",
+ "resources": [
+ {
+ "name": "User Resource",
+ "ownerManagedAccess": false,
+ "attributes": {},
+ "_id": "df1b74a9-3f10-499d-a581-368de48e512b",
+ "uris": ["/api/users/*"]
+ },
+ {
+ "name": "Administration Resource",
+ "ownerManagedAccess": false,
+ "attributes": {},
+ "_id": "7124e2f1-e6dc-44b4-87ab-24b010090b97",
+ "uris": ["/api/admin/*"]
+ }
+ ],
+ "policies": [
+ {
+ "name": "Any User Policy",
+ "description": "Any user granted with the user role can access something",
+ "type": "role",
+ "logic": "POSITIVE",
+ "decisionStrategy": "UNANIMOUS",
+ "config": {
+ "roles": "[{\"id\":\"user\",\"required\":false}]"
+ }
+ },
+ {
+ "name": "Only Administrators",
+ "description": "Only administrators can access",
+ "type": "role",
+ "logic": "POSITIVE",
+ "decisionStrategy": "UNANIMOUS",
+ "config": {
+ "roles": "[{\"id\":\"admin\",\"required\":false}]"
+ }
+ },
+ {
+ "name": "User Resource Permission",
+ "type": "resource",
+ "logic": "POSITIVE",
+ "decisionStrategy": "UNANIMOUS",
+ "config": {
+ "resources": "[\"User Resource\"]",
+ "applyPolicies": "[\"Any User Policy\"]"
+ }
+ },
+ {
+ "name": "Administration Resource Permission",
+ "type": "resource",
+ "logic": "POSITIVE",
+ "decisionStrategy": "UNANIMOUS",
+ "config": {
+ "resources": "[\"Administration Resource\"]",
+ "applyPolicies": "[\"Only Administrators\"]"
+ }
+ }
+ ],
+ "scopes": [],
+ "decisionStrategy": "UNANIMOUS"
+ }
+ },
+ {
+ "clientId": "kogito-console-react",
+ "rootUrl": "http://localhost:9000",
+ "adminUrl": "http://localhost:9000/",
+ "baseUrl": "http://localhost:9000/",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "**********",
+ "redirectUris": ["http://localhost:9000/*"],
+ "webOrigins": ["*"],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": false,
+ "serviceAccountsEnabled": false,
+ "publicClient": true,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {
+ "saml.assertion.signature": "false",
+ "saml.force.post.binding": "false",
+ "saml.multivalued.roles": "false",
+ "saml.encrypt": "false",
+ "saml.server.signature": "false",
+ "saml.server.signature.keyinfo.ext": "false",
+ "exclude.session.state.from.auth.response": "false",
+ "saml_force_name_id_format": "false",
+ "saml.client.signature": "false",
+ "tls.client.certificate.bound.access.tokens": "false",
+ "saml.authnstatement": "false",
+ "display.on.consent.screen": "false",
+ "saml.onetimeuse.condition": "false"
+ },
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": true,
+ "nodeReRegistrationTimeout": -1,
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"]
+ },
+ {
+ "clientId": "kogito-console-quarkus",
+ "rootUrl": "http://localhost:8380",
+ "adminUrl": "http://localhost:8380/",
+ "baseUrl": "http://localhost:8380/",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "**********",
+ "redirectUris": ["http://localhost:8380/*", "http://localhost:8280/*"],
+ "webOrigins": ["*"],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": false,
+ "serviceAccountsEnabled": false,
+ "publicClient": true,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {
+ "saml.assertion.signature": "false",
+ "saml.force.post.binding": "false",
+ "saml.multivalued.roles": "false",
+ "saml.encrypt": "false",
+ "saml.server.signature": "false",
+ "saml.server.signature.keyinfo.ext": "false",
+ "exclude.session.state.from.auth.response": "false",
+ "saml_force_name_id_format": "false",
+ "saml.client.signature": "false",
+ "tls.client.certificate.bound.access.tokens": "false",
+ "saml.authnstatement": "false",
+ "display.on.consent.screen": "false",
+ "saml.onetimeuse.condition": "false"
+ },
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": true,
+ "nodeReRegistrationTimeout": -1,
+ "protocolMappers": [
+ {
+ "name": "groups",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-realm-role-mapper",
+ "consentRequired": false,
+ "config": {
+ "multivalued": "true",
+ "user.attribute": "foo",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "groups",
+ "jsonType.label": "String"
+ }
+ }
+ ],
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"]
+ },
+ {
+ "clientId": "kogito-jobs-service",
+ "rootUrl": "http://localhost:8080",
+ "adminUrl": "http://localhost:8080",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "secret",
+ "redirectUris": ["http://localhost:8080/*"],
+ "webOrigins": ["http://localhost:8080"],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": true,
+ "serviceAccountsEnabled": false,
+ "publicClient": false,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {
+ "saml.assertion.signature": "false",
+ "saml.force.post.binding": "false",
+ "saml.multivalued.roles": "false",
+ "saml.encrypt": "false",
+ "saml.server.signature": "false",
+ "saml.server.signature.keyinfo.ext": "false",
+ "exclude.session.state.from.auth.response": "false",
+ "saml_force_name_id_format": "false",
+ "saml.client.signature": "false",
+ "tls.client.certificate.bound.access.tokens": "false",
+ "saml.authnstatement": "false",
+ "display.on.consent.screen": "false",
+ "saml.onetimeuse.condition": "false"
+ },
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": true,
+ "nodeReRegistrationTimeout": -1,
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"],
+ "access": {
+ "view": true,
+ "configure": true,
+ "manage": true
+ }
+ },
+ {
+ "clientId": "realm-management",
+ "name": "${client_realm-management}",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "c41b709a-a012-4c69-89d7-4f926dba0619",
+ "redirectUris": [],
+ "webOrigins": [],
+ "notBefore": 0,
+ "bearerOnly": true,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": false,
+ "serviceAccountsEnabled": false,
+ "publicClient": false,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {},
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": false,
+ "nodeReRegistrationTimeout": 0,
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"]
+ },
+ {
+ "clientId": "security-admin-console",
+ "name": "${client_security-admin-console}",
+ "baseUrl": "/auth/admin/kogito/console/index.html",
+ "surrogateAuthRequired": false,
+ "enabled": true,
+ "clientAuthenticatorType": "client-secret",
+ "secret": "e571b211-2550-475d-b87f-116ff54091ee",
+ "redirectUris": ["/auth/admin/kogito/console/*"],
+ "webOrigins": [],
+ "notBefore": 0,
+ "bearerOnly": false,
+ "consentRequired": false,
+ "standardFlowEnabled": true,
+ "implicitFlowEnabled": false,
+ "directAccessGrantsEnabled": false,
+ "serviceAccountsEnabled": false,
+ "publicClient": true,
+ "frontchannelLogout": false,
+ "protocol": "openid-connect",
+ "attributes": {},
+ "authenticationFlowBindingOverrides": {},
+ "fullScopeAllowed": false,
+ "nodeReRegistrationTimeout": 0,
+ "protocolMappers": [
+ {
+ "name": "locale",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "locale",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "locale",
+ "jsonType.label": "String"
+ }
+ }
+ ],
+ "defaultClientScopes": ["web-origins", "role_list", "profile", "roles", "email"],
+ "optionalClientScopes": ["address", "phone", "offline_access", "microprofile-jwt"]
+ }
+ ],
+ "clientScopes": [
+ {
+ "name": "address",
+ "description": "OpenID Connect built-in scope: address",
+ "protocol": "openid-connect",
+ "attributes": {
+ "include.in.token.scope": "true",
+ "display.on.consent.screen": "true",
+ "consent.screen.text": "${addressScopeConsentText}"
+ },
+ "protocolMappers": [
+ {
+ "name": "address",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-address-mapper",
+ "consentRequired": false,
+ "config": {
+ "user.attribute.formatted": "formatted",
+ "user.attribute.country": "country",
+ "user.attribute.postal_code": "postal_code",
+ "userinfo.token.claim": "true",
+ "user.attribute.street": "street",
+ "id.token.claim": "true",
+ "user.attribute.region": "region",
+ "access.token.claim": "true",
+ "user.attribute.locality": "locality"
+ }
+ }
+ ]
+ },
+ {
+ "name": "email",
+ "description": "OpenID Connect built-in scope: email",
+ "protocol": "openid-connect",
+ "attributes": {
+ "include.in.token.scope": "true",
+ "display.on.consent.screen": "true",
+ "consent.screen.text": "${emailScopeConsentText}"
+ },
+ "protocolMappers": [
+ {
+ "name": "email",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-property-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "email",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "email",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "email verified",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-property-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "emailVerified",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "email_verified",
+ "jsonType.label": "boolean"
+ }
+ }
+ ]
+ },
+ {
+ "name": "microprofile-jwt",
+ "description": "Microprofile - JWT built-in scope",
+ "protocol": "openid-connect",
+ "attributes": {
+ "include.in.token.scope": "true",
+ "display.on.consent.screen": "false"
+ },
+ "protocolMappers": [
+ {
+ "name": "upn",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-property-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "username",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "upn",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "groups",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-realm-role-mapper",
+ "consentRequired": false,
+ "config": {
+ "multivalued": "true",
+ "user.attribute": "foo",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "groups",
+ "jsonType.label": "String"
+ }
+ }
+ ]
+ },
+ {
+ "name": "offline_access",
+ "description": "OpenID Connect built-in scope: offline_access",
+ "protocol": "openid-connect",
+ "attributes": {
+ "consent.screen.text": "${offlineAccessScopeConsentText}",
+ "display.on.consent.screen": "true"
+ }
+ },
+ {
+ "name": "phone",
+ "description": "OpenID Connect built-in scope: phone",
+ "protocol": "openid-connect",
+ "attributes": {
+ "include.in.token.scope": "true",
+ "display.on.consent.screen": "true",
+ "consent.screen.text": "${phoneScopeConsentText}"
+ },
+ "protocolMappers": [
+ {
+ "name": "phone number verified",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "phoneNumberVerified",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "phone_number_verified",
+ "jsonType.label": "boolean"
+ }
+ },
+ {
+ "name": "phone number",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "phoneNumber",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "phone_number",
+ "jsonType.label": "String"
+ }
+ }
+ ]
+ },
+ {
+ "name": "profile",
+ "description": "OpenID Connect built-in scope: profile",
+ "protocol": "openid-connect",
+ "attributes": {
+ "include.in.token.scope": "true",
+ "display.on.consent.screen": "true",
+ "consent.screen.text": "${profileScopeConsentText}"
+ },
+ "protocolMappers": [
+ {
+ "name": "nickname",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "nickname",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "nickname",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "zoneinfo",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "zoneinfo",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "zoneinfo",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "updated at",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "updatedAt",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "updated_at",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "birthdate",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "birthdate",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "birthdate",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "given name",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-property-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "firstName",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "given_name",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "full name",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-full-name-mapper",
+ "consentRequired": false,
+ "config": {
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "userinfo.token.claim": "true"
+ }
+ },
+ {
+ "name": "middle name",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "middleName",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "middle_name",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "username",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-property-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "username",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "preferred_username",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "family name",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-property-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "lastName",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "family_name",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "gender",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "gender",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "gender",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "picture",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "picture",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "picture",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "locale",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "locale",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "locale",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "profile",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "profile",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "profile",
+ "jsonType.label": "String"
+ }
+ },
+ {
+ "name": "website",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-attribute-mapper",
+ "consentRequired": false,
+ "config": {
+ "userinfo.token.claim": "true",
+ "user.attribute": "website",
+ "id.token.claim": "true",
+ "access.token.claim": "true",
+ "claim.name": "website",
+ "jsonType.label": "String"
+ }
+ }
+ ]
+ },
+ {
+ "name": "role_list",
+ "description": "SAML role list",
+ "protocol": "saml",
+ "attributes": {
+ "consent.screen.text": "${samlRoleListScopeConsentText}",
+ "display.on.consent.screen": "true"
+ },
+ "protocolMappers": [
+ {
+ "name": "role list",
+ "protocol": "saml",
+ "protocolMapper": "saml-role-list-mapper",
+ "consentRequired": false,
+ "config": {
+ "single": "false",
+ "attribute.nameformat": "Basic",
+ "attribute.name": "Role"
+ }
+ }
+ ]
+ },
+ {
+ "name": "roles",
+ "description": "OpenID Connect scope for add user roles to the access token",
+ "protocol": "openid-connect",
+ "attributes": {
+ "include.in.token.scope": "false",
+ "display.on.consent.screen": "true",
+ "consent.screen.text": "${rolesScopeConsentText}"
+ },
+ "protocolMappers": [
+ {
+ "name": "realm roles",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-realm-role-mapper",
+ "consentRequired": false,
+ "config": {
+ "user.attribute": "foo",
+ "access.token.claim": "true",
+ "claim.name": "realm_access.roles",
+ "jsonType.label": "String",
+ "multivalued": "true"
+ }
+ },
+ {
+ "name": "audience resolve",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-audience-resolve-mapper",
+ "consentRequired": false,
+ "config": {}
+ },
+ {
+ "name": "client roles",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-usermodel-client-role-mapper",
+ "consentRequired": false,
+ "config": {
+ "user.attribute": "foo",
+ "access.token.claim": "true",
+ "claim.name": "resource_access.${client_id}.roles",
+ "jsonType.label": "String",
+ "multivalued": "true"
+ }
+ }
+ ]
+ },
+ {
+ "name": "web-origins",
+ "description": "OpenID Connect scope for add allowed web origins to the access token",
+ "protocol": "openid-connect",
+ "attributes": {
+ "include.in.token.scope": "false",
+ "display.on.consent.screen": "false",
+ "consent.screen.text": ""
+ },
+ "protocolMappers": [
+ {
+ "name": "allowed web origins",
+ "protocol": "openid-connect",
+ "protocolMapper": "oidc-allowed-origins-mapper",
+ "consentRequired": false,
+ "config": {}
+ }
+ ]
+ }
+ ],
+ "defaultDefaultClientScopes": ["role_list", "profile", "email", "roles", "web-origins"],
+ "defaultOptionalClientScopes": ["offline_access", "address", "phone", "microprofile-jwt"],
+ "browserSecurityHeaders": {
+ "contentSecurityPolicyReportOnly": "",
+ "xContentTypeOptions": "nosniff",
+ "xRobotsTag": "none",
+ "xFrameOptions": "SAMEORIGIN",
+ "xXSSProtection": "1; mode=block",
+ "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';",
+ "strictTransportSecurity": "max-age=31536000; includeSubDomains"
+ },
+ "smtpServer": {},
+ "eventsEnabled": false,
+ "eventsListeners": ["jboss-logging"],
+ "enabledEventTypes": [],
+ "adminEventsEnabled": false,
+ "adminEventsDetailsEnabled": false,
+ "components": {
+ "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [
+ {
+ "name": "Allowed Protocol Mapper Types",
+ "providerId": "allowed-protocol-mappers",
+ "subType": "anonymous",
+ "subComponents": {},
+ "config": {
+ "allowed-protocol-mapper-types": [
+ "oidc-full-name-mapper",
+ "saml-user-attribute-mapper",
+ "saml-user-property-mapper",
+ "oidc-address-mapper",
+ "saml-role-list-mapper",
+ "oidc-sha256-pairwise-sub-mapper",
+ "oidc-usermodel-attribute-mapper",
+ "oidc-usermodel-property-mapper"
+ ]
+ }
+ },
+ {
+ "name": "Allowed Client Scopes",
+ "providerId": "allowed-client-templates",
+ "subType": "authenticated",
+ "subComponents": {},
+ "config": {
+ "allow-default-scopes": ["true"]
+ }
+ },
+ {
+ "name": "Allowed Client Scopes",
+ "providerId": "allowed-client-templates",
+ "subType": "anonymous",
+ "subComponents": {},
+ "config": {
+ "allow-default-scopes": ["true"]
+ }
+ },
+ {
+ "name": "Trusted Hosts",
+ "providerId": "trusted-hosts",
+ "subType": "anonymous",
+ "subComponents": {},
+ "config": {
+ "host-sending-registration-request-must-match": ["true"],
+ "client-uris-must-match": ["true"]
+ }
+ },
+ {
+ "name": "Full Scope Disabled",
+ "providerId": "scope",
+ "subType": "anonymous",
+ "subComponents": {},
+ "config": {}
+ },
+ {
+ "name": "Max Clients Limit",
+ "providerId": "max-clients",
+ "subType": "anonymous",
+ "subComponents": {},
+ "config": {
+ "max-clients": ["200"]
+ }
+ },
+ {
+ "name": "Consent Required",
+ "providerId": "consent-required",
+ "subType": "anonymous",
+ "subComponents": {},
+ "config": {}
+ },
+ {
+ "name": "Allowed Protocol Mapper Types",
+ "providerId": "allowed-protocol-mappers",
+ "subType": "authenticated",
+ "subComponents": {},
+ "config": {
+ "allowed-protocol-mapper-types": [
+ "saml-user-attribute-mapper",
+ "oidc-full-name-mapper",
+ "saml-role-list-mapper",
+ "saml-user-property-mapper",
+ "oidc-usermodel-attribute-mapper",
+ "oidc-address-mapper",
+ "oidc-usermodel-property-mapper",
+ "oidc-sha256-pairwise-sub-mapper"
+ ]
+ }
+ }
+ ],
+ "org.keycloak.keys.KeyProvider": [
+ {
+ "name": "rsa-generated",
+ "providerId": "rsa-generated",
+ "subComponents": {},
+ "config": {
+ "privateKey": [
+ "MIIEowIBAAKCAQEAn5T13suF8mlS+pJXp0U1bto41nW55wpcs+Rps8ZVCRyJKWqzwSCYnI7lm0rB2wBpAAO4OPoj1zlmVoFmBPsDU9Xf7rjsJb5LIzIQDCZY44aSDZt6RR+gakPiQvlzHyW/RozYpngDJF7TsTD7rdRF1xQ4RprfBF8fwK/xsU7pxbeom5xDHZhz3fiw8s+7UdbmnazDHfAjU58aUrLGgVRfUsuoHjtsptYlOIXEifaeMetXZE+HhqLYRHQPDap5fbBJl773Trosn7N9nmzN4x1xxGj9So21WC5UboQs9sAIVgizc4omjZ5Y4RN9HLH7G4YwJctNntzmnJhDui9zAO+zSQIDAQABAoIBADi+F7rTtVoft0Cfnok8o6Y58/HVxHdxiMryUd95iy0FN4RBi48FTx6D9QKFz25Ws/8sU2n3D51srIXf1u24b1N0/f39RQKaqk7mcyxOylaEuBQcj5pah4ihgKd92UBfBKdKV5LBo6RgD3e2yhbiHr8+UlBQqzH7vOef6Bm6zIbfmi3N88swAJhP0YizRZFklsbmLsK6nkwyro00CHJvPVKSBbM+ad+/zIBsLw56MvNngB5TuFguUgoljd6M1T2z4utmZGlTUqrfE1onAVLJZoGnRohyIr7dJEg6YxWR70PxsgmkDKyeRvet9P1trO0n+OSprusfrC3cHJStabap1V0CgYEA1A/CtsqTnjdYYsB19eumZgdpzUgNc/YEAzZ/OWb8yTLoB2ncci+63A1rXHUXAqJFY7vtjn5mxv7SuASNbUrzq+6KfZvC1x9XEtnczqT/ypunNfxmIZuj8Nuu6vtURguZ8kPPwdkI8toTizRFeRE5ZDBvoQryiEVYugfHaHT5vzsCgYEAwKWODwquI0Lv9BuwdNVrBXQpkKh3ZfYOA7i9xvhxlM7xUu8OMCwwCPn3r7vrW5APjTqX4h330mJ44SLEs+7gbCUs4BbJBLA6g0ChlHa9PTkxp6tk2nDF/B34fxiZSRkE85L+d+at0Dc3hnlzLCJCzJawGpoPniPU9e4w0p4dN0sCgYAsGnMGjS8SUrRhJWHjGXVr9tK8TOXvXhULjgP7rj2Yoqu7Dvs4DFEyft/7RKbad2EzEtyfLA64CDtO5jN7rYDsGxpWcVSeZPg5BXJ0z8AbJTArfCjJiJMZ/rZsTIUEZFlKF2xYBolj6JLz+pUQTtK+0YwF1D8ItFN1rTR9twZSDQKBgQC6sPXNX+VH6LuPTjIf1x8CxwLs3EXxOpV0R9kp9GRl+HJnk6GlT30xhcThufQo5KAdllXQXIhoiuNoEoCbevhj9Vbax1oBQCNERSMRNEzKAx46xd9TzYwgeo7x5E3QR/3DaoVOfu+cY5ZcrF/PulgP2kxJS1mtQD5GIpGP2oinpwKBgGqiqTFPqRcelx76vBvTU+Jp1zM62T4AotbMrSQR/oUvqHe5Ytj/SbZx+wbbHAiyGgV700Mosyviik83YEAbR3kdOPjgYvAJJW2Y3jEMdQ7MwriXz8XLh5BGmYfVjkSOJXed9ua9WlYLKOJeXXv191BbDvrx5NXuJyVVU4vJx3YZ"
+ ],
+ "certificate": [
+ "MIICnTCCAYUCBgFp4EYIrjANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdwcm90ZWFuMB4XDTE5MDQwMjIyNTYxOVoXDTI5MDQwMjIyNTc1OVowEjEQMA4GA1UEAwwHcHJvdGVhbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ+U9d7LhfJpUvqSV6dFNW7aONZ1uecKXLPkabPGVQkciSlqs8EgmJyO5ZtKwdsAaQADuDj6I9c5ZlaBZgT7A1PV3+647CW+SyMyEAwmWOOGkg2bekUfoGpD4kL5cx8lv0aM2KZ4AyRe07Ew+63URdcUOEaa3wRfH8Cv8bFO6cW3qJucQx2Yc934sPLPu1HW5p2swx3wI1OfGlKyxoFUX1LLqB47bKbWJTiFxIn2njHrV2RPh4ai2ER0Dw2qeX2wSZe+9066LJ+zfZ5szeMdccRo/UqNtVguVG6ELPbACFYIs3OKJo2eWOETfRyx+xuGMCXLTZ7c5pyYQ7ovcwDvs0kCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAVtmRKDb4OK5iSA46tagMBkp6L7WuPpCWuHGWwobEP+BecYsShW7zP3s12oA8SNSwbhvu0CRqgzxhuypgf3hKQFVU153Erv4hzkj+8S0s5LR/ZE7tDNY2lzJ3yQKXy3Md7EkuzzvOZ50MTrcSKAanWq/ZW1OTnrtGymj5zGJnTg7mMnJzEIGePxkvPu/QdchiPBLqxfZYm1jsFGY25djOC3N/KmVcRVmPRGuu6D8tBFHlKoPfZYPdbMvsvs24aupHKRcZ+ofTCpK+2Qo8c0pSSqeEYHGmuGqC6lC6ozxtxSABPO9Q1R1tZBU7Kg5HvXUwwmoVS3EGub46YbHqbmWMLg=="
+ ],
+ "priority": ["100"]
+ }
+ },
+ {
+ "name": "hmac-generated",
+ "providerId": "hmac-generated",
+ "subComponents": {},
+ "config": {
+ "kid": ["96afd00e-85cf-4d35-b18e-061d3813d8b2"],
+ "secret": ["qBFGKdUGf6xDgKphnRfoFzIzaFHJW4bYnZ9MinPFzN38X5_ctq-2u1q5RdZzeJukXvk2biHB8_s3DxWmmLZFsA"],
+ "priority": ["100"],
+ "algorithm": ["HS256"]
+ }
+ },
+ {
+ "name": "aes-generated",
+ "providerId": "aes-generated",
+ "subComponents": {},
+ "config": {
+ "kid": ["b04473d3-8395-4016-b455-19a9e951106b"],
+ "secret": ["x68mMOVdz3qKWzltzReV0g"],
+ "priority": ["100"]
+ }
+ }
+ ]
+ },
+ "internationalizationEnabled": false,
+ "supportedLocales": [],
+ "authenticationFlows": [
+ {
+ "alias": "Handle Existing Account",
+ "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider",
+ "providerId": "basic-flow",
+ "topLevel": false,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "idp-confirm-link",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "idp-email-verification",
+ "requirement": "ALTERNATIVE",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "requirement": "ALTERNATIVE",
+ "priority": 30,
+ "flowAlias": "Verify Existing Account by Re-authentication",
+ "userSetupAllowed": false,
+ "autheticatorFlow": true
+ }
+ ]
+ },
+ {
+ "alias": "Verify Existing Account by Re-authentication",
+ "description": "Reauthentication of existing account",
+ "providerId": "basic-flow",
+ "topLevel": false,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "idp-username-password-form",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "auth-otp-form",
+ "requirement": "OPTIONAL",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ },
+ {
+ "alias": "browser",
+ "description": "browser based authentication",
+ "providerId": "basic-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "auth-cookie",
+ "requirement": "ALTERNATIVE",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "auth-spnego",
+ "requirement": "DISABLED",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "identity-provider-redirector",
+ "requirement": "ALTERNATIVE",
+ "priority": 25,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "requirement": "ALTERNATIVE",
+ "priority": 30,
+ "flowAlias": "forms",
+ "userSetupAllowed": false,
+ "autheticatorFlow": true
+ }
+ ]
+ },
+ {
+ "alias": "clients",
+ "description": "Base authentication for clients",
+ "providerId": "client-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "client-secret",
+ "requirement": "ALTERNATIVE",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "client-jwt",
+ "requirement": "ALTERNATIVE",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "client-secret-jwt",
+ "requirement": "ALTERNATIVE",
+ "priority": 30,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "client-x509",
+ "requirement": "ALTERNATIVE",
+ "priority": 40,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ },
+ {
+ "alias": "direct grant",
+ "description": "OpenID Connect Resource Owner Grant",
+ "providerId": "basic-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "direct-grant-validate-username",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "direct-grant-validate-password",
+ "requirement": "REQUIRED",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "direct-grant-validate-otp",
+ "requirement": "OPTIONAL",
+ "priority": 30,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ },
+ {
+ "alias": "docker auth",
+ "description": "Used by Docker clients to authenticate against the IDP",
+ "providerId": "basic-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "docker-http-basic-authenticator",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ },
+ {
+ "alias": "first broker login",
+ "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account",
+ "providerId": "basic-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticatorConfig": "review profile config",
+ "authenticator": "idp-review-profile",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticatorConfig": "create unique user config",
+ "authenticator": "idp-create-user-if-unique",
+ "requirement": "ALTERNATIVE",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "requirement": "ALTERNATIVE",
+ "priority": 30,
+ "flowAlias": "Handle Existing Account",
+ "userSetupAllowed": false,
+ "autheticatorFlow": true
+ }
+ ]
+ },
+ {
+ "alias": "forms",
+ "description": "Username, password, otp and other auth forms.",
+ "providerId": "basic-flow",
+ "topLevel": false,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "auth-username-password-form",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "auth-otp-form",
+ "requirement": "OPTIONAL",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ },
+ {
+ "alias": "http challenge",
+ "description": "An authentication flow based on challenge-response HTTP Authentication Schemes",
+ "providerId": "basic-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "no-cookie-redirect",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "basic-auth",
+ "requirement": "REQUIRED",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "basic-auth-otp",
+ "requirement": "DISABLED",
+ "priority": 30,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "auth-spnego",
+ "requirement": "DISABLED",
+ "priority": 40,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ },
+ {
+ "alias": "registration",
+ "description": "registration flow",
+ "providerId": "basic-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "registration-page-form",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "flowAlias": "registration form",
+ "userSetupAllowed": false,
+ "autheticatorFlow": true
+ }
+ ]
+ },
+ {
+ "alias": "registration form",
+ "description": "registration form",
+ "providerId": "form-flow",
+ "topLevel": false,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "registration-user-creation",
+ "requirement": "REQUIRED",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "registration-profile-action",
+ "requirement": "REQUIRED",
+ "priority": 40,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "registration-password-action",
+ "requirement": "REQUIRED",
+ "priority": 50,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "registration-recaptcha-action",
+ "requirement": "DISABLED",
+ "priority": 60,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ },
+ {
+ "alias": "reset credentials",
+ "description": "Reset credentials for a user if they forgot their password or something",
+ "providerId": "basic-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "reset-credentials-choose-user",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "reset-credential-email",
+ "requirement": "REQUIRED",
+ "priority": 20,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "reset-password",
+ "requirement": "REQUIRED",
+ "priority": 30,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ },
+ {
+ "authenticator": "reset-otp",
+ "requirement": "OPTIONAL",
+ "priority": 40,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ },
+ {
+ "alias": "saml ecp",
+ "description": "SAML ECP Profile Authentication Flow",
+ "providerId": "basic-flow",
+ "topLevel": true,
+ "builtIn": true,
+ "authenticationExecutions": [
+ {
+ "authenticator": "http-basic-authenticator",
+ "requirement": "REQUIRED",
+ "priority": 10,
+ "userSetupAllowed": false,
+ "autheticatorFlow": false
+ }
+ ]
+ }
+ ],
+ "authenticatorConfig": [
+ {
+ "alias": "create unique user config",
+ "config": {
+ "require.password.update.after.registration": "false"
+ }
+ },
+ {
+ "alias": "review profile config",
+ "config": {
+ "update.profile.on.first.login": "missing"
+ }
+ }
+ ],
+ "requiredActions": [
+ {
+ "alias": "CONFIGURE_TOTP",
+ "name": "Configure OTP",
+ "providerId": "CONFIGURE_TOTP",
+ "enabled": true,
+ "defaultAction": false,
+ "priority": 10,
+ "config": {}
+ },
+ {
+ "alias": "terms_and_conditions",
+ "name": "Terms and Conditions",
+ "providerId": "terms_and_conditions",
+ "enabled": false,
+ "defaultAction": false,
+ "priority": 20,
+ "config": {}
+ },
+ {
+ "alias": "UPDATE_PASSWORD",
+ "name": "Update Password",
+ "providerId": "UPDATE_PASSWORD",
+ "enabled": true,
+ "defaultAction": false,
+ "priority": 30,
+ "config": {}
+ },
+ {
+ "alias": "UPDATE_PROFILE",
+ "name": "Update Profile",
+ "providerId": "UPDATE_PROFILE",
+ "enabled": true,
+ "defaultAction": false,
+ "priority": 40,
+ "config": {}
+ },
+ {
+ "alias": "VERIFY_EMAIL",
+ "name": "Verify Email",
+ "providerId": "VERIFY_EMAIL",
+ "enabled": true,
+ "defaultAction": false,
+ "priority": 50,
+ "config": {}
+ }
+ ],
+ "browserFlow": "browser",
+ "registrationFlow": "registration",
+ "directGrantFlow": "direct grant",
+ "resetCredentialsFlow": "reset credentials",
+ "clientAuthenticationFlow": "clients",
+ "dockerAuthenticationFlow": "docker auth",
+ "attributes": {
+ "_browser_header.xXSSProtection": "1; mode=block",
+ "_browser_header.xFrameOptions": "SAMEORIGIN",
+ "_browser_header.strictTransportSecurity": "max-age=31536000; includeSubDomains",
+ "permanentLockout": "false",
+ "quickLoginCheckMilliSeconds": "1000",
+ "_browser_header.xRobotsTag": "none",
+ "maxFailureWaitSeconds": "900",
+ "minimumQuickLoginWaitSeconds": "60",
+ "failureFactor": "30",
+ "actionTokenGeneratedByUserLifespan": "300",
+ "maxDeltaTimeSeconds": "43200",
+ "_browser_header.xContentTypeOptions": "nosniff",
+ "offlineSessionMaxLifespan": "5184000",
+ "actionTokenGeneratedByAdminLifespan": "43200",
+ "_browser_header.contentSecurityPolicyReportOnly": "",
+ "bruteForceProtected": "false",
+ "_browser_header.contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';",
+ "waitIncrementSeconds": "60",
+ "offlineSessionMaxLifespanEnabled": "false"
+ },
+ "users": [
+ {
+ "username": "admin",
+ "enabled": true,
+ "totp": false,
+ "emailVerified": false,
+ "credentials": [
+ {
+ "type": "password",
+ "hashedSaltedValue": "NICTtwsvSxJ5hL8hLAuleDUv9jwZcuXgxviMXvR++cciyPtiIEStEaJUyfA9DOir59awjPrHOumsclPVjNBplA==",
+ "salt": "T/2P5o5oxFJUEk68BRURRg==",
+ "hashIterations": 27500,
+ "counter": 0,
+ "algorithm": "pbkdf2-sha256",
+ "digits": 0,
+ "period": 0,
+ "createdDate": 1554245879354,
+ "config": {}
+ }
+ ],
+ "disableableCredentialTypes": ["password"],
+ "requiredActions": [],
+ "realmRoles": ["admin", "managers", "user", "IT", "HR"],
+ "notBefore": 0,
+ "groups": []
+ },
+ {
+ "username": "alice",
+ "enabled": true,
+ "totp": false,
+ "emailVerified": false,
+ "credentials": [
+ {
+ "type": "password",
+ "hashedSaltedValue": "A3okqV2T/ybXTVEgKfosoSjP8Yc9IZbFP/SY4cEd6hag7TABQrQ6nUSuwagGt96l8cw1DTijO75PqX6uiTXMzw==",
+ "salt": "sl4mXx6T9FypPH/s9TngfQ==",
+ "hashIterations": 27500,
+ "counter": 0,
+ "algorithm": "pbkdf2-sha256",
+ "digits": 0,
+ "period": 0,
+ "createdDate": 1554245879116,
+ "config": {}
+ }
+ ],
+ "disableableCredentialTypes": ["password"],
+ "requiredActions": [],
+ "realmRoles": ["user", "HR"],
+ "notBefore": 0,
+ "groups": []
+ },
+ {
+ "username": "jdoe",
+ "enabled": true,
+ "totp": false,
+ "emailVerified": false,
+ "credentials": [
+ {
+ "type": "password",
+ "hashedSaltedValue": "JV3DUNLjqOadjbBOtC4rvacQI553CGaDGAzBS8MR5ReCr7SwF3E6CsW3T7/XO8ITZAsch8+A/6loeuCoVLLJrg==",
+ "salt": "uCbOH7HZtyDtMd0E9DG/nw==",
+ "hashIterations": 27500,
+ "counter": 0,
+ "algorithm": "pbkdf2-sha256",
+ "digits": 0,
+ "period": 0,
+ "createdDate": 1554245879227,
+ "config": {}
+ }
+ ],
+ "disableableCredentialTypes": ["password"],
+ "requiredActions": [],
+ "realmRoles": ["managers", "user", "IT"],
+ "notBefore": 0,
+ "groups": []
+ }
+ ],
+ "keycloakVersion": "6.0.0",
+ "userManagedAccessAllowed": false
+}
diff --git a/examples/jbpm-compact-architecture-example/docker-compose/pgadmin/pgpass b/examples/jbpm-compact-architecture-example/docker-compose/pgadmin/pgpass
new file mode 100644
index 00000000000..11a6f7c6019
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/docker-compose/pgadmin/pgpass
@@ -0,0 +1,3 @@
+postgres:5432:kogito:kogito-user:kogito-pass
+postgres:5432:keycloak:kogito-user:kogito-pass
+postgres:5432:postgres:kogito-user:kogito-pass
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/docker-compose/pgadmin/servers.json b/examples/jbpm-compact-architecture-example/docker-compose/pgadmin/servers.json
new file mode 100644
index 00000000000..caafe268c0f
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/docker-compose/pgadmin/servers.json
@@ -0,0 +1,14 @@
+{
+ "Servers": {
+ "1": {
+ "Name": "kogito",
+ "Group": "Servers",
+ "Host": "postgres",
+ "Port": 5432,
+ "MaintenanceDB": "kogito",
+ "Username": "kogito-user",
+ "SSLMode": "disable",
+ "PassFile": "/var/lib/pgadmin/pgpass"
+ }
+ }
+}
diff --git a/examples/jbpm-compact-architecture-example/docker-compose/sql/init.sql b/examples/jbpm-compact-architecture-example/docker-compose/sql/init.sql
new file mode 100644
index 00000000000..92ea9b4e5c6
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/docker-compose/sql/init.sql
@@ -0,0 +1,33 @@
+CREATE ROLE "kogito-user" WITH
+ LOGIN
+ SUPERUSER
+ INHERIT
+ CREATEDB
+ CREATEROLE
+ NOREPLICATION
+ PASSWORD 'kogito-pass';
+
+CREATE DATABASE kogito
+ WITH
+ OWNER = "kogito-user"
+ ENCODING = 'UTF8'
+ LC_COLLATE = 'en_US.utf8'
+ LC_CTYPE = 'en_US.utf8'
+ TABLESPACE = pg_default
+ CONNECTION LIMIT = -1;
+
+CREATE DATABASE keycloak
+ WITH
+ OWNER = "kogito-user"
+ ENCODING = 'UTF8'
+ LC_COLLATE = 'en_US.utf8'
+ LC_CTYPE = 'en_US.utf8'
+ TABLESPACE = pg_default
+ CONNECTION LIMIT = -1;
+
+GRANT ALL PRIVILEGES ON DATABASE postgres TO "kogito-user";
+GRANT ALL PRIVILEGES ON DATABASE kogito TO "kogito-user";
+GRANT ALL PRIVILEGES ON DATABASE kogito TO postgres;
+
+GRANT ALL PRIVILEGES ON DATABASE keycloak TO "kogito-user";
+GRANT ALL PRIVILEGES ON DATABASE keycloak TO postgres;
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh b/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh
new file mode 100755
index 00000000000..e8a42f5b2ee
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+PROFILE="full"
+
+echo "Script requires your Kogito Example to be compiled"
+
+PROJECT_VERSION=$(cd ../ && mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
+KOGITO_MANAGEMENT_CONSOLE_IMAGE=$(cd ../ && mvn help:evaluate -Dexpression=kogito.management-console.image -q -DforceStdout)
+KOGITO_TASK_CONSOLE_IMAGE=$(cd ../ && mvn help:evaluate -Dexpression=kogito.task-console.image -q -DforceStdout)
+
+
+if [ -n "$1" ]; then
+ if [[ ("$1" == "full") || ("$1" == "infra") || ("$1" == "example")]];
+ then
+ PROFILE="$1"
+ else
+ echo "Unknown docker profile '$1'. The supported profiles are:"
+ echo "* 'infra': Use this profile to start only the minimum infrastructure to run the example (postgresql, data-index & jobs-service)."
+ echo "* 'example': Use this profile to start the example infrastructure and the kogito-example service. Requires the example to be compiled using the 'container' profile (-Pcontainer)"
+ echo "* 'full' (default): Starts full example setup, including infrastructure (database, data-index & jobs-service), the kogito-example-service container and the runtime consoles (management-console, task-console & keycloak). Requires the example to be compiled using the 'container' profile (-Pcontainer)"
+ exit 1;
+ fi
+fi
+
+echo "PROJECT_VERSION=${PROJECT_VERSION}" > ".env"
+echo "KOGITO_MANAGEMENT_CONSOLE_IMAGE=${KOGITO_MANAGEMENT_CONSOLE_IMAGE}" >> ".env"
+echo "KOGITO_TASK_CONSOLE_IMAGE=${KOGITO_TASK_CONSOLE_IMAGE}" >> ".env"
+echo "COMPOSE_PROFILES='${PROFILE}'" >> ".env"
+
+if [ "$(uname)" == "Darwin" ]; then
+ echo "DOCKER_GATEWAY_HOST=kubernetes.docker.internal" >> ".env"
+elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
+ echo "DOCKER_GATEWAY_HOST=172.17.0.1" >> ".env"
+fi
+
+if [ ! -d "./svg" ]
+then
+ echo "SVG folder does not exist. Have you compiled the project? mvn clean install -DskipTests"
+ exit 1
+fi
+
+docker compose up
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g1_1_mc_list.png b/examples/jbpm-compact-architecture-example/docs/images/g1_1_mc_list.png
new file mode 100644
index 00000000000..4e5aa6274df
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g1_1_mc_list.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g1_2_mc_details.png b/examples/jbpm-compact-architecture-example/docs/images/g1_2_mc_details.png
new file mode 100644
index 00000000000..f2b228f20d0
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g1_2_mc_details.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g1_3_mc_details_executed_job.png b/examples/jbpm-compact-architecture-example/docs/images/g1_3_mc_details_executed_job.png
new file mode 100644
index 00000000000..1ab358819c3
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g1_3_mc_details_executed_job.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_10_mc_details_completed.png b/examples/jbpm-compact-architecture-example/docs/images/g2_10_mc_details_completed.png
new file mode 100644
index 00000000000..610849f19ee
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_10_mc_details_completed.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_1_mc_list.png b/examples/jbpm-compact-architecture-example/docs/images/g2_1_mc_list.png
new file mode 100644
index 00000000000..6526e8e7f23
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_1_mc_list.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_2_mc_details.png b/examples/jbpm-compact-architecture-example/docs/images/g2_2_mc_details.png
new file mode 100644
index 00000000000..ec18201f08a
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_2_mc_details.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_3_tc_inbox.png b/examples/jbpm-compact-architecture-example/docs/images/g2_3_tc_inbox.png
new file mode 100644
index 00000000000..0d612f76c80
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_3_tc_inbox.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_4_tc_hr_form.png b/examples/jbpm-compact-architecture-example/docs/images/g2_4_tc_hr_form.png
new file mode 100644
index 00000000000..d89b41302da
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_4_tc_hr_form.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_5_tc_hr_form_notification.png b/examples/jbpm-compact-architecture-example/docs/images/g2_5_tc_hr_form_notification.png
new file mode 100644
index 00000000000..8dd81fc4a92
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_5_tc_hr_form_notification.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_6_mc_details.png b/examples/jbpm-compact-architecture-example/docs/images/g2_6_mc_details.png
new file mode 100644
index 00000000000..4970b8f8374
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_6_mc_details.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_7_tc_inbox.png b/examples/jbpm-compact-architecture-example/docs/images/g2_7_tc_inbox.png
new file mode 100644
index 00000000000..03f63ff7b45
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_7_tc_inbox.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_8_tc_it_form.png b/examples/jbpm-compact-architecture-example/docs/images/g2_8_tc_it_form.png
new file mode 100644
index 00000000000..5e6872a09c8
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_8_tc_it_form.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/g2_9_tc_inbox_empty.png b/examples/jbpm-compact-architecture-example/docs/images/g2_9_tc_inbox_empty.png
new file mode 100644
index 00000000000..696433e93d3
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/g2_9_tc_inbox_empty.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/generate_offer_assignments.png b/examples/jbpm-compact-architecture-example/docs/images/generate_offer_assignments.png
new file mode 100644
index 00000000000..2e3f93529f3
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/generate_offer_assignments.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/hiring_diagram.png b/examples/jbpm-compact-architecture-example/docs/images/hiring_diagram.png
new file mode 100644
index 00000000000..cb57a2dfb9d
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/hiring_diagram.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/hr_interview_assignments.png b/examples/jbpm-compact-architecture-example/docs/images/hr_interview_assignments.png
new file mode 100644
index 00000000000..63de050eb5e
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/hr_interview_assignments.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/it_interview_assignments.png b/examples/jbpm-compact-architecture-example/docs/images/it_interview_assignments.png
new file mode 100644
index 00000000000..077430569d6
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/it_interview_assignments.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/mc_details_1.png b/examples/jbpm-compact-architecture-example/docs/images/mc_details_1.png
new file mode 100644
index 00000000000..2c1c3b26abb
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/mc_details_1.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/mc_list.png b/examples/jbpm-compact-architecture-example/docs/images/mc_list.png
new file mode 100644
index 00000000000..4fc32b05cc3
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/mc_list.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn.png b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn.png
new file mode 100644
index 00000000000..451313a264d
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_decision.png b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_decision.png
new file mode 100644
index 00000000000..f58d869d36f
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_decision.png differ
diff --git a/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types.png b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types.png
new file mode 100644
index 00000000000..d028d331da9
Binary files /dev/null and b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types.png differ
diff --git a/examples/jbpm-compact-architecture-example/env/index.js b/examples/jbpm-compact-architecture-example/env/index.js
new file mode 100644
index 00000000000..4b9f86d2fa6
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/env/index.js
@@ -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.
+ */
+
+const { varsWithName, composeEnv, getOrDefault } = require("@kie-tools-scripts/build-env");
+
+const {
+ env: { kogitoManagementConsole: kogitoManagementConsoleEnv },
+} = require("@kie-tools/kogito-management-console/env");
+
+const {
+ env: { kogitoTaskConsole: kogitoTaskConsoleEnv },
+} = require("@kie-tools/kogito-task-console/env");
+
+module.exports = composeEnv([require("@kie-tools/root-env/env")], {
+ vars: varsWithName({
+ JBPM_COMPACT_ARCHITECTURE_EXAMPLE__managementConsoleImage: {
+ default: `${kogitoManagementConsoleEnv.registry}/${kogitoManagementConsoleEnv.account}/${kogitoManagementConsoleEnv.name}:${kogitoManagementConsoleEnv.buildTag}`,
+ description: "The image for the Kogito Management Console Image.",
+ },
+ JBPM_COMPACT_ARCHITECTURE_EXAMPLE__taskConsoleImage: {
+ default: `${kogitoTaskConsoleEnv.registry}/${kogitoTaskConsoleEnv.account}/${kogitoTaskConsoleEnv.name}:${kogitoTaskConsoleEnv.buildTag}`,
+ description: "The image for the Kogito Task Console Image.",
+ },
+ }),
+ get env() {
+ return {
+ jbpmCompactArchitectureExample: {
+ kogitoManagementConsoleImage: getOrDefault(this.vars.JBPM_COMPACT_ARCHITECTURE_EXAMPLE__managementConsoleImage),
+ kogitoTaskConsoleImage: getOrDefault(this.vars.JBPM_COMPACT_ARCHITECTURE_EXAMPLE__taskConsoleImage),
+ version: require("../package.json").version,
+ },
+ };
+ },
+});
diff --git a/examples/jbpm-compact-architecture-example/install.js b/examples/jbpm-compact-architecture-example/install.js
new file mode 100644
index 00000000000..47e591480b5
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/install.js
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+
+const buildEnv = require("./env");
+const { setup, setPomProperty } = require("@kie-tools/maven-config-setup-helper");
+
+setup(`
+ -Drevision=${buildEnv.env.jbpmCompactArchitectureExample.version}
+`);
+
+setPomProperty({
+ key: "kogito.management-console.image",
+ value: buildEnv.env.jbpmCompactArchitectureExample.kogitoManagementConsoleImage,
+});
+
+setPomProperty({
+ key: "kogito.task-console.image",
+ value: buildEnv.env.jbpmCompactArchitectureExample.kogitoTaskConsoleImage,
+});
diff --git a/examples/jbpm-compact-architecture-example/package.json b/examples/jbpm-compact-architecture-example/package.json
new file mode 100644
index 00000000000..2ce94a9f7b6
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/package.json
@@ -0,0 +1,55 @@
+{
+ "private": true,
+ "name": "@kie-tools-examples/jbpm-compact-architecture-example",
+ "version": "0.0.0",
+ "description": "",
+ "license": "Apache-2.0",
+ "homepage": "https://github.com/apache/incubator-kie-tools",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/apache/incubator-kie-tools.git"
+ },
+ "bugs": {
+ "url": "https://github.com/apache/incubator-kie-tools/issues"
+ },
+ "scripts": {
+ "build": "run-script-os",
+ "build:darwin:linux": "mvn clean install -P container",
+ "build:dev": "run-script-if --bool \"$(build-env examples.build)\" --then run-script-os",
+ "build:dev:darwin:linux": "mvn clean compile -DskipTests",
+ "build:dev:win32": "pnpm powershell \"mvn clean compile `-DskipTests \"",
+ "build:prod": "pnpm lint && run-script-if --bool \"$(build-env examples.build)\" --then run-script-os",
+ "build:prod:darwin:linux": "mvn clean compile -DskipTests=$(build-env tests.run --not) -Dmaven.test.failure.ignore=$(build-env tests.ignoreFailures) -Pcontainer",
+ "build:prod:win32": "pnpm powershell \"mvn clean compile `-DskipTests `-Dmaven.test.failure.ignore=$(build-env tests.ignoreFailures) `-Pcontainer \"",
+ "install": "node install.js",
+ "lint": "echo 'Linting'",
+ "powershell": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command",
+ "quarkus:dev": "run-script-os",
+ "quarkus:dev:darwin:linux": "mvn clean package quarkus:dev -DskipTests -Pdevelopment",
+ "quarkus:dev:win32": "mvn clean package quarkus:dev `-DskipTests `-Pdevelopment",
+ "run": "run-script-os",
+ "run:darwin:linux": "cd ./docker-compose && sh startServices.sh",
+ "start": "run-script-os",
+ "start:darwin:linux": "pnpm run build && pnpm run run",
+ "start:win32": "echo Running full example ot supported in windows",
+ "stop": "run-script-os",
+ "stop:darwin:linux": "cd ./docker-compose && docker compose down"
+ },
+ "dependencies": {
+ "@kie-tools/jbpm-quarkus-devui": "workspace:*",
+ "@kie-tools/maven-base": "workspace:*"
+ },
+ "devDependencies": {
+ "@kie-tools/kogito-management-console": "workspace:*",
+ "@kie-tools/kogito-task-console": "workspace:*",
+ "@kie-tools/maven-config-setup-helper": "workspace:*",
+ "@kie-tools/root-env": "workspace:*",
+ "run-script-os": "^1.1.6"
+ },
+ "kieTools": {
+ "requiredPreinstalledCliCommands": [
+ "java",
+ "mvn"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/pom.xml b/examples/jbpm-compact-architecture-example/pom.xml
new file mode 100644
index 00000000000..56b4cef9276
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/pom.xml
@@ -0,0 +1,202 @@
+
+
+
+ 4.0.0
+
+ org.kie
+ kie-tools-maven-base
+ ${revision}
+ ./node_modules/@kie-tools/maven-base/pom.xml
+
+
+ jbpm-compact-architecture-quarkus-example
+ Kie-Tools Example :: jBPM Compact Architecture Quarkus Example
+
+
+ docker.io/apache/incubator-kie-kogito-management-console:main
+ docker.io/apache/incubator-kie-kogito-task-console:main
+
+
+
+
+ io.quarkus
+ quarkus-resteasy
+
+
+ io.quarkus
+ quarkus-resteasy-jackson
+
+
+ io.quarkus
+ quarkus-smallrye-openapi
+
+
+ io.quarkus
+ quarkus-smallrye-health
+
+
+
+ org.jbpm
+ jbpm-with-drools-quarkus
+
+
+
+ org.kie
+ kie-addons-quarkus-process-management
+
+
+ org.kie
+ kogito-addons-quarkus-jobs-management
+
+
+ org.kie
+ kie-addons-quarkus-process-svg
+
+
+ org.kie
+ kie-addons-quarkus-source-files
+
+
+
+
+ io.quarkus
+ quarkus-jdbc-postgresql
+
+
+ io.quarkus
+ quarkus-agroal
+
+
+ org.kie
+ kie-addons-quarkus-persistence-jdbc
+
+
+
+
+ org.kie
+ kogito-addons-quarkus-data-index-postgresql
+
+
+
+
+ org.kie
+ kogito-addons-quarkus-data-index-persistence-postgresql
+
+
+
+
+ org.kie
+ kogito-addons-quarkus-jobs
+
+
+ org.kie.kogito
+ jobs-service-postgresql-common
+
+
+
+
+ org.kie
+ kogito-addons-quarkus-data-audit-jpa
+
+
+ org.kie
+ kogito-addons-quarkus-data-audit
+
+
+
+
+
+ container
+
+ container
+
+
+
+ io.quarkus
+ quarkus-container-image-jib
+
+
+
+
+ development
+
+ dev
+
+
+
+
+ org.jbpm
+ jbpm-quarkus-devui-bom
+ ${project.version}
+ pom
+ import
+
+
+
+
+
+ org.jbpm
+ jbpm-quarkus-devui
+
+
+
+
+
+
+ ${project.artifactId}
+
+
+ ${quarkus.platform.group-id}
+ quarkus-maven-plugin
+ ${quarkus-plugin.version}
+
+
+
+ build
+
+
+
+
+
+ maven-antrun-plugin
+
+
+ package
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/jbpm-compact-architecture-example/src/main/java/org/kie/kogito/hr/CandidateData.java b/examples/jbpm-compact-architecture-example/src/main/java/org/kie/kogito/hr/CandidateData.java
new file mode 100644
index 00000000000..eae14184da0
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/src/main/java/org/kie/kogito/hr/CandidateData.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.hr;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+public class CandidateData {
+
+ private String name;
+
+ private String lastName;
+
+ private String email;
+
+ private Integer experience;
+
+ private List skills;
+
+ public CandidateData() {
+ }
+
+ public CandidateData(String name, String lastName, String email, Integer experience, List skills) {
+ this.name = name;
+ this.lastName = lastName;
+ this.email = email;
+ this.experience = experience;
+ this.skills = skills;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public Integer getExperience() {
+ return experience;
+ }
+
+ public void setExperience(Integer experience) {
+ this.experience = experience;
+ }
+
+ public List getSkills() {
+ return skills;
+ }
+
+ public void setSkills(List skills) {
+ this.skills = skills;
+ }
+
+ @JsonIgnore
+ public String getFullName() {
+ return name + " " + lastName;
+ }
+}
diff --git a/examples/jbpm-compact-architecture-example/src/main/java/org/kie/kogito/hr/Offer.java b/examples/jbpm-compact-architecture-example/src/main/java/org/kie/kogito/hr/Offer.java
new file mode 100644
index 00000000000..a377b480aa0
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/src/main/java/org/kie/kogito/hr/Offer.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.hr;
+
+public class Offer {
+
+ private String category;
+
+ private Integer salary;
+
+ public Offer() {
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public Integer getSalary() {
+ return salary;
+ }
+
+ public void setSalary(Integer salary) {
+ this.salary = salary;
+ }
+}
diff --git a/examples/jbpm-compact-architecture-example/src/main/resources/META-INF/processSVG/hiring.svg b/examples/jbpm-compact-architecture-example/src/main/resources/META-INF/processSVG/hiring.svg
new file mode 100644
index 00000000000..fba0500706c
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/src/main/resources/META-INF/processSVG/hiring.svg
@@ -0,0 +1 @@
+HR Interview IT Interview New Hiring Send notification HR Interview avoided Application denied Generate base offer Log Offer Send Offer to Candidate
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/src/main/resources/NewHiringOffer.dmn b/examples/jbpm-compact-architecture-example/src/main/resources/NewHiringOffer.dmn
new file mode 100644
index 00000000000..67b0eded68d
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/src/main/resources/NewHiringOffer.dmn
@@ -0,0 +1,163 @@
+
+
+
+
+
+ string
+
+
+ string
+
+
+ string
+
+
+ number
+
+
+ string
+
+
+
+
+ number
+
+
+ string
+
+ "Software Engineer", "Senior Software Engineer", "Software Architect"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ count(CandidateData.skills) * 150
+
+
+
+
+
+
+
+ CandidateData.experience
+
+
+
+
+ "Software Engineer", "Senior Software Engineer", "Software Architect"
+
+
+
+
+
+
+ [0..5)
+
+
+ "Software Engineer"
+
+
+ 30000 + SalaryBonus
+
+
+
+
+
+
+
+ [5..10)
+
+
+ "Senior Software Engineer"
+
+
+ 40000 + SalaryBonus
+
+
+
+
+
+
+
+ >=10
+
+
+ "Software Architect"
+
+
+ 50000 + SalaryBonus
+
+
+
+
+
+
+
+
+
+ Offer
+
+
+
+
+
+
+
+
+
+ 50
+ 120
+ 926
+
+
+ 926
+
+
+ 50
+ 175
+ 104
+ 437
+ 140
+
+
+ 926
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/src/main/resources/application.properties b/examples/jbpm-compact-architecture-example/src/main/resources/application.properties
new file mode 100644
index 00000000000..b2a3bf6b7fe
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/src/main/resources/application.properties
@@ -0,0 +1,46 @@
+# Packaging
+#quarkus.package.type=fast-jar
+
+#https://quarkus.io/guides/openapi-swaggerui
+quarkus.http.cors=true
+quarkus.smallrye-openapi.path=/docs/openapi.json
+quarkus.swagger-ui.always-include=true
+quarkus.kogito.data-index.graphql.ui.always-include=true
+quarkus.http.test-port=0
+
+# Kogito-service
+kogito.service.url=http://localhost:8080
+
+#Job-service
+kogito.jobs-service.url=http://localhost:8080
+kogito.dataindex.http.url=http://localhost:8080
+
+# run create tables scripts
+quarkus.flyway.migrate-at-start=true
+quarkus.flyway.baseline-on-migrate=true
+quarkus.flyway.baseline-version=0.0
+quarkus.flyway.locations=classpath:/db/migration,classpath:/db/jobs-service,classpath:/db/data-audit/postgresql
+quarkus.flyway.table=FLYWAY_RUNTIME_SERVICE
+
+kogito.persistence.type=jdbc
+quarkus.datasource.db-kind=postgresql
+%prod.quarkus.datasource.username=kogito-user
+%prod.quarkus.datasource.password=kogito-pass
+%prod.quarkus.datasource.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:postgresql://localhost:5432/kogito}
+%prod.quarkus.datasource.reactive.url=${QUARKUS_DATASOURCE_REACTIVE_URL:postgresql://localhost:5432/kogito}
+
+quarkus.native.native-image-xmx=8g
+
+# profile to pack this example into a container, to use it execute activate the maven container profile, -Pcontainer
+%container.quarkus.container-image.build=true
+%container.quarkus.container-image.push=false
+%container.quarkus.container-image.group=${USER}
+%container.quarkus.container-image.registry=dev.local
+%container.quarkus.container-image.tag=${project.version}
+%container.quarkus.container-image.name=jppm-compact-architecture-example-service
+
+%dev.quarkus.kogito.devservices.enabled=false
+%dev.jbpm.devui.users.jdoe.groups=admin,HR,IT
+
+# Disabling OIDC
+quarkus.oidc.enabled=false
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/src/main/resources/hiring.bpmn b/examples/jbpm-compact-architecture-example/src/main/resources/hiring.bpmn
new file mode 100644
index 00000000000..3c043c24cfc
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/src/main/resources/hiring.bpmn
@@ -0,0 +1,691 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _B11455DE-F77A-4251-A85B-4C66636E3CD9
+ _7DDA574A-C220-4FEF-9784-22EF8052EDEC
+ System.out.println("###################################");
+System.out.println("To: " + candidateData.getEmail());
+System.out.println("Subject: Congratulations you made it!");
+System.out.println("Dear " + candidateData.getFullName() + ", we are happy to tell you that you've successfuly went trhough the hiring process. You'll find the fina Offer details in attached.");
+System.out.println("Job Category: " + offer.getCategory());
+System.out.println("Base salary: " + offer.getSalary());
+System.out.println("###################################");
+
+
+
+
+
+
+
+ _9C33F5EA-89C7-4ED1-B3C2-CF18DE439AF5
+ _ACEE7578-B7D2-4EDF-B104-9ECF3DD8A383
+ System.out.println("###################################");
+System.out.println("Generated offer for candidate: " + candidateData.getFullName());
+System.out.println("Job Category: " + offer.getCategory());
+System.out.println("Base salary: " + offer.getSalary());
+System.out.println("###################################");
+
+
+ _7DDA574A-C220-4FEF-9784-22EF8052EDEC
+
+
+
+
+
+
+
+ _59F9A0E6-7F9C-43A9-8920-5B40A91169E6
+ _9C33F5EA-89C7-4ED1-B3C2-CF18DE439AF5
+
+
+
+
+
+
+
+
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_fileNameInputX
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_namespaceInputX
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_decisionInputX
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_modelInputX
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_CandidateDataInputX
+
+
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_OfferOutputX
+
+
+
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_fileNameInputX
+
+
+
+
+
+
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_namespaceInputX
+
+
+
+
+
+
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_decisionInputX
+
+
+
+
+
+
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_modelInputX
+
+
+
+
+
+
+ candidateData
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_CandidateDataInputX
+
+
+ _F4D56F6C-4CFE-4D5C-BF5E-67261F68EF1A_OfferOutputX
+ offer
+
+
+
+ _527D3164-4989-4D2C-B80B-9BA9D4C8FB89
+
+
+
+
+
+
+
+ _94172225-E124-4F14-98DA-C3D62C11254A
+ _527D3164-4989-4D2C-B80B-9BA9D4C8FB89
+ System.out.println("###################################");
+System.out.println("Candidate " + candidateData.getFullName() + " don't meet the requirements for the position but we'll keep it on records for the future!");
+System.out.println("###################################");
+
+
+
+ _5334FFDC-1FCB-47E6-8085-36DC9A3D17B9
+ _B7FC63DD-C08F-4CB3-A51A-79C1B8B18E6E
+ _C6E61C53-FD35-4347-B69E-30AA93AE4404
+ _94172225-E124-4F14-98DA-C3D62C11254A
+
+
+ _5162ABF0-DD2E-4BDC-9A46-DDCFCB010287
+ _59F9A0E6-7F9C-43A9-8920-5B40A91169E6
+ _C6E61C53-FD35-4347-B69E-30AA93AE4404
+
+
+ _C62F7EFB-A009-450A-81C7-57D36F0DF766
+ _B11455DE-F77A-4251-A85B-4C66636E3CD9
+ _B7FC63DD-C08F-4CB3-A51A-79C1B8B18E6E
+
+
+
+
+
+
+
+ _7B41F971-C74D-4036-8A5E-EFF81C37986A
+ _5334FFDC-1FCB-47E6-8085-36DC9A3D17B9
+ System.out.println("###################################");
+System.out.println("HR Interview have been avoided after reasonable time");
+System.out.println("###################################");
+
+
+
+
+
+
+
+
+ _8863B46B-9B0F-40B9-AAB1-A7503CF9AA0A
+ _5162ABF0-DD2E-4BDC-9A46-DDCFCB010287
+ System.out.println("New Hiring has been created for candidate: " + candidateData.getFullName());
+
+kcontext.setVariable("hr_approval", false);
+kcontext.setVariable("it_approval", false);
+
+
+
+
+
+
+
+ _A76C6603-0406-423C-940B-3403948DCA1F
+ _C62F7EFB-A009-450A-81C7-57D36F0DF766
+
+
+
+
+
+
+
+
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_TaskNameInputX
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_candidateInputX
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_offerInputX
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_approveInputX
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_SkippableInputX
+
+
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_approveOutputX
+
+
+
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_TaskNameInputX
+
+
+
+
+
+
+ candidateData
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_candidateInputX
+
+
+ offer
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_offerInputX
+
+
+ it_approval
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_approveInputX
+
+
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_SkippableInputX
+
+
+
+
+
+
+ _8962C15F-55EC-46F7-B926-5D5A1FD8D35E_approveOutputX
+ it_approval
+
+
+
+ jdoe
+
+
+
+
+
+
+
+
+
+ _ACEE7578-B7D2-4EDF-B104-9ECF3DD8A383
+ _A76C6603-0406-423C-940B-3403948DCA1F
+
+
+
+
+
+
+
+
+
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_TaskNameInputX
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_candidateInputX
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_offerInputX
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_approveInputX
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_SkippableInputX
+
+
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_approveOutputX
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_offerOutputX
+
+
+
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_TaskNameInputX
+
+
+
+
+
+
+ candidateData
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_candidateInputX
+
+
+ offer
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_offerInputX
+
+
+ hr_approval
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_approveInputX
+
+
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_SkippableInputX
+
+
+
+
+
+
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_approveOutputX
+ hr_approval
+
+
+ _B8C4F63C-81AD-4291-9C1B-84967277EEF6_offerOutputX
+ offer
+
+
+
+ jdoe
+
+
+
+
+ _8863B46B-9B0F-40B9-AAB1-A7503CF9AA0A
+
+
+ _7B41F971-C74D-4036-8A5E-EFF81C37986A
+
+ PT180S
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ _0IqVEG0AEDySCYWhrcdpgA
+ _0IqVEG0AEDySCYWhrcdpgA
+
+
\ No newline at end of file
diff --git a/packages/dev-deployment-base-image/env/index.js b/packages/dev-deployment-base-image/env/index.js
index 6f8c8f01617..41b68d50034 100644
--- a/packages/dev-deployment-base-image/env/index.js
+++ b/packages/dev-deployment-base-image/env/index.js
@@ -47,7 +47,7 @@ module.exports = composeEnv([rootEnv], {
default: "incubator-kie-sandbox-dev-deployment-base",
description: "The image name.",
},
- DEV_DEPLOYMENT_BASE_IMAGE__buildTags: {
+ DEV_DEPLOYMENT_BASE_IMAGE__buildTag: {
default: rootEnv.env.root.streamName,
description: "The image tag.",
},
@@ -61,7 +61,7 @@ module.exports = composeEnv([rootEnv], {
registry: getOrDefault(this.vars.DEV_DEPLOYMENT_BASE_IMAGE__registry),
account: getOrDefault(this.vars.DEV_DEPLOYMENT_BASE_IMAGE__account),
name: getOrDefault(this.vars.DEV_DEPLOYMENT_BASE_IMAGE__name),
- tags: getOrDefault(this.vars.DEV_DEPLOYMENT_BASE_IMAGE__buildTags),
+ buildTag: getOrDefault(this.vars.DEV_DEPLOYMENT_BASE_IMAGE__buildTag),
version: require("../package.json").version,
},
};
diff --git a/packages/dev-deployment-base-image/package.json b/packages/dev-deployment-base-image/package.json
index d373d4cb48f..f71582cdb89 100644
--- a/packages/dev-deployment-base-image/package.json
+++ b/packages/dev-deployment-base-image/package.json
@@ -19,12 +19,12 @@
"copy-upload-service-assets": "run-script-os",
"copy-upload-service-assets:linux:darwin": "mkdir -p ./dist-dev && cp -R ./node_modules/@kie-tools/dev-deployment-upload-service/dist/dev-deployment-upload-service-linux-amd64 ./dist-dev/dev-deployment-upload-service",
"copy-upload-service-assets:win32": "pnpm powershell \"Copy-Item -R ./node_modules/@kie-tools/dev-deployment-upload-service/dist/dev-deployment-upload-service-linux-amd64 ./dist-dev/dev-deployment-upload-service\"",
- "create-test-image:build-only": "kie-tools--image-builder build -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\"",
- "create-test-image:kind": "kie-tools--image-builder kind -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\" --kind-cluster-name kie-sandbox-dev-cluster",
- "create-test-image:minikube": "kie-tools--image-builder minikube -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\"",
- "create-test-image:openshift": "kie-tools--image-builder openshift -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\"",
- "image:docker:build": "kie-tools--image-builder build -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\" --build-arg USER_ID_ARG=\"$(build-env devDeploymentBaseImage.userId)\" --build-arg HOME_PATH_ARG=\"$(build-env devDeploymentBaseImage.homePath)\"",
- "image:podman:build": "kie-tools--image-builder build -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\" --build-arg USER_ID_ARG=\"$(build-env devDeploymentBaseImage.userId)\" --build-arg HOME_PATH_ARG=\"$(build-env devDeploymentBaseImage.homePath)\" -e podman",
+ "create-test-image:build-only": "kie-tools--image-builder build -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\"",
+ "create-test-image:kind": "kie-tools--image-builder kind -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\" --kind-cluster-name kie-sandbox-dev-cluster",
+ "create-test-image:minikube": "kie-tools--image-builder minikube -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\"",
+ "create-test-image:openshift": "kie-tools--image-builder openshift -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\"",
+ "image:docker:build": "kie-tools--image-builder build -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\" --build-arg USER_ID_ARG=\"$(build-env devDeploymentBaseImage.userId)\" --build-arg HOME_PATH_ARG=\"$(build-env devDeploymentBaseImage.homePath)\"",
+ "image:podman:build": "kie-tools--image-builder build -r \"$(build-env devDeploymentBaseImage.registry)\" -a \"$(build-env devDeploymentBaseImage.account)\" -n \"$(build-env devDeploymentBaseImage.name)\" -t \"$(build-env devDeploymentBaseImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentBaseImage.builderImage)\" --build-arg USER_ID_ARG=\"$(build-env devDeploymentBaseImage.userId)\" --build-arg HOME_PATH_ARG=\"$(build-env devDeploymentBaseImage.homePath)\" -e podman",
"install": "node install.js && pnpm install:mvnw",
"install:mvnw": "run-script-os",
"install:mvnw:darwin:linux": "mvn -e org.apache.maven.plugins:maven-wrapper-plugin:3.3.0:wrapper",
diff --git a/packages/dev-deployment-dmn-form-webapp-image/env/index.js b/packages/dev-deployment-dmn-form-webapp-image/env/index.js
index ad783fca4ce..a10be8e74ae 100644
--- a/packages/dev-deployment-dmn-form-webapp-image/env/index.js
+++ b/packages/dev-deployment-dmn-form-webapp-image/env/index.js
@@ -35,7 +35,7 @@ module.exports = composeEnv([rootEnv], {
default: "incubator-kie-sandbox-dev-deployment-dmn-form-webapp",
description: "The image name.",
},
- DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTags: {
+ DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTag: {
default: rootEnv.env.root.streamName,
description: "The image tag.",
},
@@ -46,7 +46,7 @@ module.exports = composeEnv([rootEnv], {
registry: getOrDefault(this.vars.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__registry),
account: getOrDefault(this.vars.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__account),
name: getOrDefault(this.vars.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__name),
- tags: getOrDefault(this.vars.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTags),
+ buildTag: getOrDefault(this.vars.DEV_DEPLOYMENT_DMN_FORM_WEBAPP_IMAGE__buildTag),
version: require("../package.json").version,
},
};
diff --git a/packages/dev-deployment-dmn-form-webapp-image/package.json b/packages/dev-deployment-dmn-form-webapp-image/package.json
index 5bc50f56546..a065e628376 100644
--- a/packages/dev-deployment-dmn-form-webapp-image/package.json
+++ b/packages/dev-deployment-dmn-form-webapp-image/package.json
@@ -18,12 +18,12 @@
"copy-assets": "run-script-os",
"copy-assets:linux:darwin": "rimraf dist-dev && cp -R ./node_modules/@kie-tools/dev-deployment-dmn-form-webapp/dist/ dist-dev",
"copy-assets:win32": "rimraf dist-dev && pnpm powershell \"Copy-Item -R ./node_modules/@kie-tools/dev-deployment-dmn-form-webapp/dist/ dist-dev\"",
- "create-test-image:build-only": "kie-tools--image-builder build -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.tags)\"",
- "create-test-image:kind": "kie-tools--image-builder kind -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.tags)\" --kind-cluster-name kie-sandbox-dev-cluster",
- "create-test-image:minikube": "kie-tools--image-builder minikube -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.tags)\"",
- "create-test-image:openshift": "kie-tools--image-builder openshift -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.tags)\"",
- "image:docker:build": "kie-tools--image-builder build -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.tags)\"",
- "image:podman:build": "kie-tools--image-builder build -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.tags)\" -e podman",
+ "create-test-image:build-only": "kie-tools--image-builder build -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.buildTag)\"",
+ "create-test-image:kind": "kie-tools--image-builder kind -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.buildTag)\" --kind-cluster-name kie-sandbox-dev-cluster",
+ "create-test-image:minikube": "kie-tools--image-builder minikube -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.buildTag)\"",
+ "create-test-image:openshift": "kie-tools--image-builder openshift -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.buildTag)\"",
+ "image:docker:build": "kie-tools--image-builder build -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.buildTag)\"",
+ "image:podman:build": "kie-tools--image-builder build -r \"$(pnpm build-env devDeploymentDmnFormWebappImage.registry)\" -a \"$(pnpm build-env devDeploymentDmnFormWebappImage.account)\" -n \"$(pnpm build-env devDeploymentDmnFormWebappImage.name)\" -t \"$(pnpm build-env devDeploymentDmnFormWebappImage.buildTag)\" -e podman",
"powershell": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command"
},
"dependencies": {
diff --git a/packages/dev-deployment-kogito-quarkus-blank-app-image/env/index.js b/packages/dev-deployment-kogito-quarkus-blank-app-image/env/index.js
index 259c8ffa825..cd452584f9b 100644
--- a/packages/dev-deployment-kogito-quarkus-blank-app-image/env/index.js
+++ b/packages/dev-deployment-kogito-quarkus-blank-app-image/env/index.js
@@ -22,7 +22,7 @@ const { varsWithName, composeEnv, getOrDefault } = require("@kie-tools-scripts/b
const rootEnv = require("@kie-tools/root-env/env");
const {
- env: { devDeploymentBaseImage: devDedevDeploymentBaseImageEnv },
+ env: { devDeploymentBaseImage: devDeploymentBaseImageEnv },
} = require("@kie-tools/dev-deployment-base-image/env");
const {
@@ -32,9 +32,7 @@ const {
module.exports = composeEnv([rootEnv], {
vars: varsWithName({
DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__builderImage: {
- default: `${devDedevDeploymentBaseImageEnv.registry}/${devDedevDeploymentBaseImageEnv.account}/${
- devDedevDeploymentBaseImageEnv.name
- }:${devDedevDeploymentBaseImageEnv.tags.split(" ")[0]}`,
+ default: `${devDeploymentBaseImageEnv.registry}/${devDeploymentBaseImageEnv.account}/${devDeploymentBaseImageEnv.name}:${devDeploymentBaseImageEnv.buildTag}`,
description: "The image used in the FROM import.",
},
DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__registry: {
@@ -49,7 +47,7 @@ module.exports = composeEnv([rootEnv], {
default: "incubator-kie-sandbox-dev-deployment-kogito-quarkus-blank-app",
description: "The image name.",
},
- DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTags: {
+ DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTag: {
default: rootEnv.env.root.streamName,
description: "The image tag.",
},
@@ -65,7 +63,7 @@ module.exports = composeEnv([rootEnv], {
registry: getOrDefault(this.vars.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__registry),
account: getOrDefault(this.vars.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__account),
name: getOrDefault(this.vars.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__name),
- tags: getOrDefault(this.vars.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTags),
+ buildTag: getOrDefault(this.vars.DEV_DEPLOYMENT_KOGITO_QUARKUS_BLANK_APP_IMAGE__buildTag),
version: require("../package.json").version,
dev: {
mavenM2RepoViaHttpImage: getOrDefault(
diff --git a/packages/dev-deployment-kogito-quarkus-blank-app-image/package.json b/packages/dev-deployment-kogito-quarkus-blank-app-image/package.json
index 891a35e7da3..cd74bc44c5d 100644
--- a/packages/dev-deployment-kogito-quarkus-blank-app-image/package.json
+++ b/packages/dev-deployment-kogito-quarkus-blank-app-image/package.json
@@ -23,12 +23,12 @@
"copy:quarkus-app": "run-script-os",
"copy:quarkus-app:linux:darwin": " cp -R ./node_modules/@kie-tools/dev-deployment-kogito-quarkus-blank-app/ ./dist-dev/quarkus-app && rm -rf ./dist-dev/quarkus-app/node_modules ./dist-dev/quarkus-app/install.js ./dist-dev/quarkus-app/env ./dist-dev/quarkus-app/package.json",
"copy:quarkus-app:win32": "pnpm powershell \"New-Item -ItemType Directory -Force -Path ./dist-dev/quarkus-app; Copy-Item -R ./node_modules/@kie-tools/dev-deployment-kogito-quarkus-blank-app/* ./dist-dev/quarkus-app -Exclude @('node_modules')\"",
- "create-test-image:build-only": "kie-tools--image-builder build --allowHostNetworkAccess -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/",
- "create-test-image:kind": "kie-tools--image-builder kind -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/ --kind-cluster-name kie-sandbox-dev-cluster",
- "create-test-image:minikube": "kie-tools--image-builder minikube -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/",
- "create-test-image:openshift": "kie-tools--image-builder openshift -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/",
- "image:docker:build": "kie-tools--image-builder build --allowHostNetworkAccess -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/",
- "image:podman:build": "kie-tools--image-builder build --allowHostNetworkAccess -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.tags)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/ -e podman",
+ "create-test-image:build-only": "kie-tools--image-builder build --allowHostNetworkAccess -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/",
+ "create-test-image:kind": "kie-tools--image-builder kind -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/ --kind-cluster-name kie-sandbox-dev-cluster",
+ "create-test-image:minikube": "kie-tools--image-builder minikube -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/",
+ "create-test-image:openshift": "kie-tools--image-builder openshift -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/",
+ "image:docker:build": "kie-tools--image-builder build --allowHostNetworkAccess -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/",
+ "image:podman:build": "kie-tools--image-builder build --allowHostNetworkAccess -r \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.registry)\" -a \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.account)\" -n \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.name)\" -t \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.buildTag)\" --build-arg BUILDER_IMAGE_ARG=\"$(build-env devDeploymentKogitoQuarkusBlankAppImage.builderImage)\" --build-arg ROOT_PATH=/ -e podman",
"install": "node install.js",
"m2-repo-via-http:container:kill": "(docker container kill m2-repo-via-http || true) && (docker container rm m2-repo-via-http || true)",
"m2-repo-via-http:container:run": "(pnpm m2-repo-via-http:container:kill || true) && docker run --name m2-repo-via-http -v ~/.m2/repository:/var/www/html -dit -p \"$(build-env devDeploymentKogitoQuarkusBlankAppImage.dev.mavenM2RepoViaHttpImagePort):80\" $(build-env devDeploymentKogitoQuarkusBlankAppImage.dev.mavenM2RepoViaHttpImage)",
diff --git a/packages/jbpm-quarkus-devui/jbpm-quarkus-devui-deployment/src/main/java/org/jbpm/quarkus/devui/deployment/DevConsoleProcessor.java b/packages/jbpm-quarkus-devui/jbpm-quarkus-devui-deployment/src/main/java/org/jbpm/quarkus/devui/deployment/DevConsoleProcessor.java
index 8da6046f33d..00c821cf90a 100644
--- a/packages/jbpm-quarkus-devui/jbpm-quarkus-devui-deployment/src/main/java/org/jbpm/quarkus/devui/deployment/DevConsoleProcessor.java
+++ b/packages/jbpm-quarkus-devui/jbpm-quarkus-devui-deployment/src/main/java/org/jbpm/quarkus/devui/deployment/DevConsoleProcessor.java
@@ -27,7 +27,6 @@
import java.util.stream.Collectors;
import org.kie.kogito.quarkus.extensions.spi.deployment.KogitoDataIndexServiceAvailableBuildItem;
-import org.kie.kogito.quarkus.extensions.spi.deployment.TrustyServiceAvailableBuildItem;
import org.jbpm.quarkus.devui.deployment.data.UserInfo;
import org.jbpm.quarkus.devui.runtime.config.DevConsoleRuntimeConfig;
import org.jbpm.quarkus.devui.runtime.config.DevUIStaticArtifactsRecorder;
@@ -104,10 +103,11 @@ public CardPageBuildItem pages(
final ConfigurationBuildItem configurationBuildItem,
final List systemPropertyBuildItems,
final Optional dataIndexServiceAvailableBuildItem,
- final Optional trustyServiceAvailableBuildItem,
final Capabilities capabilities) {
- CardPageBuildItem cardPageBuildItem = new CardPageBuildItem();
+ if (dataIndexServiceAvailableBuildItem.isEmpty() && !capabilities.isPresent(DATA_INDEX_CAPABILITY)) {
+ return null;
+ }
String uiPath = nonApplicationRootPathBuildItem.resolveManagementPath(BASE_RELATIVE_URL,
managementInterfaceBuildTimeConfig, launchModeBuildItem, true);
@@ -117,51 +117,43 @@ public CardPageBuildItem pages(
String dataIndexUrl = getProperty(configurationBuildItem, systemPropertyBuildItems, "kogito.data-index.url");
String trustyServiceUrl = getProperty(configurationBuildItem, systemPropertyBuildItems, "kogito.trusty.http.url");
+ CardPageBuildItem cardPageBuildItem = new CardPageBuildItem();
+
cardPageBuildItem.addBuildTimeData("extensionBasePath", uiPath);
cardPageBuildItem.addBuildTimeData("openapiPath", openapiPath);
cardPageBuildItem.addBuildTimeData("devUIUrl", devUIUrl);
cardPageBuildItem.addBuildTimeData("dataIndexUrl", dataIndexUrl);
- cardPageBuildItem.addBuildTimeData("isTracingEnabled", trustyServiceAvailableBuildItem.isPresent());
+ cardPageBuildItem.addBuildTimeData("isTracingEnabled", false);
cardPageBuildItem.addBuildTimeData("trustyServiceUrl", trustyServiceUrl);
cardPageBuildItem.addBuildTimeData("userData", readUsersInfo(devConsoleRuntimeConfig));
- if (dataIndexServiceAvailableBuildItem.isPresent() || capabilities.isPresent(DATA_INDEX_CAPABILITY)) {
- cardPageBuildItem.addPage(Page.webComponentPageBuilder()
- .componentLink("qwc-jbpm-quarkus-devui.js")
- .metadata("page", "Processes")
- .title("Process Instances")
- .icon("font-awesome-solid:diagram-project")
- .dynamicLabelJsonRPCMethodName("queryProcessInstancesCount"));
-
- cardPageBuildItem.addPage(Page.webComponentPageBuilder()
- .componentLink("qwc-jbpm-quarkus-devui.js")
- .metadata("page", "TaskInbox")
- .title("Tasks")
- .icon("font-awesome-solid:bars-progress")
- .dynamicLabelJsonRPCMethodName("queryTasksCount"));
-
- cardPageBuildItem.addPage(Page.webComponentPageBuilder()
- .componentLink("qwc-jbpm-quarkus-devui.js")
- .metadata("page", "JobsManagement")
- .title("Jobs")
- .icon("font-awesome-solid:clock")
- .dynamicLabelJsonRPCMethodName("queryJobsCount"));
-
- cardPageBuildItem.addPage(Page.webComponentPageBuilder()
- .componentLink("qwc-jbpm-quarkus-devui.js")
- .metadata("page", "Forms")
- .title("Forms")
- .icon("font-awesome-solid:table-cells")
- .dynamicLabelJsonRPCMethodName("getFormsCount"));
- }
-
- if (trustyServiceAvailableBuildItem.isPresent()) {
- cardPageBuildItem.addPage(Page.webComponentPageBuilder()
- .componentLink("qwc-jbpm-quarkus-devui.js")
- .metadata("page", "Audit")
- .title("Audit investigation")
- .icon("font-awesome-solid:gauge-high"));
- }
+ cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+ .componentLink("qwc-jbpm-quarkus-devui.js")
+ .metadata("page", "Processes")
+ .title("Process Instances")
+ .icon("font-awesome-solid:diagram-project")
+ .dynamicLabelJsonRPCMethodName("queryProcessInstancesCount"));
+
+ cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+ .componentLink("qwc-jbpm-quarkus-devui.js")
+ .metadata("page", "TaskInbox")
+ .title("Tasks")
+ .icon("font-awesome-solid:bars-progress")
+ .dynamicLabelJsonRPCMethodName("queryTasksCount"));
+
+ cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+ .componentLink("qwc-jbpm-quarkus-devui.js")
+ .metadata("page", "JobsManagement")
+ .title("Jobs")
+ .icon("font-awesome-solid:clock")
+ .dynamicLabelJsonRPCMethodName("queryJobsCount"));
+
+ cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+ .componentLink("qwc-jbpm-quarkus-devui.js")
+ .metadata("page", "Forms")
+ .title("Forms")
+ .icon("font-awesome-solid:table-cells")
+ .dynamicLabelJsonRPCMethodName("getFormsCount"));
return cardPageBuildItem;
}
diff --git a/packages/kogito-management-console/README.md b/packages/kogito-management-console/README.md
index 9ef508b77fc..f31bd109d5a 100644
--- a/packages/kogito-management-console/README.md
+++ b/packages/kogito-management-console/README.md
@@ -37,7 +37,7 @@ This package contains the `Containerfile/Dockerfile` and scripts to build a cont
export KOGITO_MANAGEMENT_CONSOLE__registry=
export KOGITO_MANAGEMENT_CONSOLE__account=
export KOGITO_MANAGEMENT_CONSOLE__name=
- export KOGITO_MANAGEMENT_CONSOLE__buildTags=
+ export KOGITO_MANAGEMENT_CONSOLE__buildTag=
```
> Default values can be found [here](./env/index.js).
diff --git a/packages/kogito-management-console/env/index.js b/packages/kogito-management-console/env/index.js
index 29f0adfd48f..b943cfa9aa0 100644
--- a/packages/kogito-management-console/env/index.js
+++ b/packages/kogito-management-console/env/index.js
@@ -35,7 +35,7 @@ module.exports = composeEnv([rootEnv], {
default: "incubator-kie-kogito-management-console",
description: "The image name.",
},
- KOGITO_MANAGEMENT_CONSOLE__buildTags: {
+ KOGITO_MANAGEMENT_CONSOLE__buildTag: {
default: rootEnv.env.root.streamName,
description: "The image tag.",
},
@@ -50,7 +50,7 @@ module.exports = composeEnv([rootEnv], {
registry: getOrDefault(this.vars.KOGITO_MANAGEMENT_CONSOLE__registry),
account: getOrDefault(this.vars.KOGITO_MANAGEMENT_CONSOLE__account),
name: getOrDefault(this.vars.KOGITO_MANAGEMENT_CONSOLE__name),
- tags: getOrDefault(this.vars.KOGITO_MANAGEMENT_CONSOLE__buildTags),
+ buildTag: getOrDefault(this.vars.KOGITO_MANAGEMENT_CONSOLE__buildTag),
port: getOrDefault(this.vars.KOGITO_MANAGEMENT_CONSOLE__port),
version: require("../package.json").version,
},
diff --git a/packages/kogito-management-console/package.json b/packages/kogito-management-console/package.json
index 791e01fa38e..64a977ed1e0 100644
--- a/packages/kogito-management-console/package.json
+++ b/packages/kogito-management-console/package.json
@@ -24,8 +24,8 @@
"copy:webapp-assets:linux:darwin": "cp -R ./node_modules/@kie-tools/runtime-tools-management-console-webapp/dist/ ./dist-dev/runtime-tools-management-console-webapp",
"copy:webapp-assets:win32": "pnpm powershell \"Copy-Item -R ./node_modules/@kie-tools/runtime-tools-management-console-webapp/dist/ ./dist-dev/runtime-tools-management-console-webapp\"",
"env-json:schema:generate": "ts-json-schema-generator --tsconfig ./node_modules/@kie-tools/runtime-tools-management-console-webapp/tsconfig.json --path ./node_modules/@kie-tools/runtime-tools-management-console-webapp/src/env/EnvJson.ts --type EnvJson --id EnvJson --out ./dist-dev/EnvJson.schema.json",
- "image:docker:build": "kie-tools--image-builder build -r \"$(build-env kogitoManagementConsole.registry)\" -a \"$(build-env kogitoManagementConsole.account)\" -n \"$(build-env kogitoManagementConsole.name)\" -t \"$(build-env kogitoManagementConsole.tags)\" --build-arg KOGITO_MANAGEMENT_CONSOLE_PORT=\"$(build-env kogitoManagementConsole.port)\"",
- "image:podman:build": "kie-tools--image-builder build -r \"$(build-env kogitoManagementConsole.registry)\" -a \"$(build-env kogitoManagementConsole.account)\" -n \"$(build-env kogitoManagementConsole.name)\" -t \"$(build-env kogitoManagementConsole.tags)\" --build-arg KOGITO_MANAGEMENT_CONSOLE_PORT=\"$(build-env kogitoManagementConsole.port)\" -e podman"
+ "image:docker:build": "kie-tools--image-builder build -r \"$(build-env kogitoManagementConsole.registry)\" -a \"$(build-env kogitoManagementConsole.account)\" -n \"$(build-env kogitoManagementConsole.name)\" -t \"$(build-env kogitoManagementConsole.buildTag)\" --build-arg KOGITO_MANAGEMENT_CONSOLE_PORT=\"$(build-env kogitoManagementConsole.port)\"",
+ "image:podman:build": "kie-tools--image-builder build -r \"$(build-env kogitoManagementConsole.registry)\" -a \"$(build-env kogitoManagementConsole.account)\" -n \"$(build-env kogitoManagementConsole.name)\" -t \"$(build-env kogitoManagementConsole.buildTag)\" --build-arg KOGITO_MANAGEMENT_CONSOLE_PORT=\"$(build-env kogitoManagementConsole.port)\" -e podman"
},
"devDependencies": {
"@kie-tools/image-builder": "workspace:*",
diff --git a/packages/kogito-task-console/README.md b/packages/kogito-task-console/README.md
index 09b33a13c54..1e1aba7b894 100644
--- a/packages/kogito-task-console/README.md
+++ b/packages/kogito-task-console/README.md
@@ -37,7 +37,7 @@ This package contains the `Containerfile/Dockerfile` and scripts to build a cont
export KOGITO_TASK_CONSOLE__registry=
export KOGITO_TASK_CONSOLE__account=
export KOGITO_TASK_CONSOLE__name=
- export KOGITO_TASK_CONSOLE__buildTags=
+ export KOGITO_TASK_CONSOLE__buildTag=
```
> Default values can be found [here](./env/index.js).
diff --git a/packages/kogito-task-console/env/index.js b/packages/kogito-task-console/env/index.js
index 8bd2583e71b..814486d59fd 100644
--- a/packages/kogito-task-console/env/index.js
+++ b/packages/kogito-task-console/env/index.js
@@ -35,7 +35,7 @@ module.exports = composeEnv([rootEnv], {
default: "incubator-kie-kogito-task-console",
description: "The image name.",
},
- KOGITO_TASK_CONSOLE__buildTags: {
+ KOGITO_TASK_CONSOLE__buildTag: {
default: rootEnv.env.root.streamName,
description: "The image tag.",
},
@@ -50,7 +50,7 @@ module.exports = composeEnv([rootEnv], {
registry: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__registry),
account: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__account),
name: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__name),
- tags: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__buildTags),
+ buildTag: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__buildTag),
port: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__port),
version: require("../package.json").version,
},
diff --git a/packages/kogito-task-console/package.json b/packages/kogito-task-console/package.json
index 20a0a936ce9..fad3636b9bd 100644
--- a/packages/kogito-task-console/package.json
+++ b/packages/kogito-task-console/package.json
@@ -24,8 +24,8 @@
"copy:webapp-assets:linux:darwin": "cp -R ./node_modules/@kie-tools/runtime-tools-task-console-webapp/dist/ ./dist-dev/runtime-tools-task-console-webapp",
"copy:webapp-assets:win32": "pnpm powershell \"Copy-Item -R ./node_modules/@kie-tools/runtime-tools-task-console-webapp/dist/ ./dist-dev/runtime-tools-task-console-webapp\"",
"env-json:schema:generate": "ts-json-schema-generator --tsconfig ./node_modules/@kie-tools/runtime-tools-task-console-webapp/tsconfig.json --path ./node_modules/@kie-tools/runtime-tools-task-console-webapp/src/env/EnvJson.ts --type EnvJson --id EnvJson --out ./dist-dev/EnvJson.schema.json",
- "image:docker:build": "kie-tools--image-builder build -r \"$(build-env kogitoTaskConsole.registry)\" -a \"$(build-env kogitoTaskConsole.account)\" -n \"$(build-env kogitoTaskConsole.name)\" -t \"$(build-env kogitoTaskConsole.tags)\" --build-arg KOGITO_TASK_CONSOLE_PORT=\"$(build-env kogitoTaskConsole.port)\"",
- "image:podman:build": "kie-tools--image-builder build -r \"$(build-env kogitoTaskConsole.registry)\" -a \"$(build-env kogitoTaskConsole.account)\" -n \"$(build-env kogitoTaskConsole.name)\" -t \"$(build-env kogitoTaskConsole.tags)\" --build-arg KOGITO_TASK_CONSOLE_PORT=\"$(build-env kogitoTaskConsole.port)\" -e podman"
+ "image:docker:build": "kie-tools--image-builder build -r \"$(build-env kogitoTaskConsole.registry)\" -a \"$(build-env kogitoTaskConsole.account)\" -n \"$(build-env kogitoTaskConsole.name)\" -t \"$(build-env kogitoTaskConsole.buildTag)\" --build-arg KOGITO_TASK_CONSOLE_PORT=\"$(build-env kogitoTaskConsole.port)\"",
+ "image:podman:build": "kie-tools--image-builder build -r \"$(build-env kogitoTaskConsole.registry)\" -a \"$(build-env kogitoTaskConsole.account)\" -n \"$(build-env kogitoTaskConsole.name)\" -t \"$(build-env kogitoTaskConsole.buildTag)\" --build-arg KOGITO_TASK_CONSOLE_PORT=\"$(build-env kogitoTaskConsole.port)\" -e podman"
},
"devDependencies": {
"@kie-tools/image-builder": "workspace:*",
diff --git a/packages/maven-base/pom.xml b/packages/maven-base/pom.xml
index 4ef90a2b549..e393de4e9d3 100644
--- a/packages/maven-base/pom.xml
+++ b/packages/maven-base/pom.xml
@@ -139,6 +139,13 @@
pom
import
+
+ org.kie.kogito
+ kogito-apps-bom
+ ${version.org.kie.kogito}
+ pom
+ import
+
org.drools
drools-bom
diff --git a/packages/maven-config-setup-helper/index.js b/packages/maven-config-setup-helper/index.js
index a8b00c6d3ab..8612c0ce73e 100755
--- a/packages/maven-config-setup-helper/index.js
+++ b/packages/maven-config-setup-helper/index.js
@@ -17,6 +17,7 @@
* under the License.
*/
+const { execSync } = require("child_process");
const fs = require("fs");
const path = require("path");
@@ -24,6 +25,23 @@ const MVN_CONFIG_ORIGINAL_FILE_PATH = path.join(".mvn", "maven.config.original")
const MVN_CONFIG_FILE_PATH = path.join(".mvn", "maven.config");
module.exports = {
+ setPomProperty: ({ key, value }) => {
+ if (!key || !value) {
+ console.error("[maven-config-setup-helper] Wrong values provided");
+ process.exit(1);
+ }
+
+ if (process.platform === "win32") {
+ execSync(`mvn versions:set-property \`-Dproperty=${key} \`-DnewVersion=${value} \`-DgenerateBackupPoms=false`, {
+ stdio: "inherit",
+ shell: "powershell.exe",
+ });
+ } else {
+ execSync(`mvn versions:set-property -Dproperty=${key} -DnewVersion=${value} -DgenerateBackupPoms=false`, {
+ stdio: "inherit",
+ });
+ }
+ },
setup: (mavenConfigString) => {
let originalMvnConfigString;
if (fs.existsSync(MVN_CONFIG_ORIGINAL_FILE_PATH)) {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9faba3aec0f..10931a711dc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -247,7 +247,14 @@ importers:
specifier: ^1.1.6
version: 1.1.6
- examples/dmn-quarkus-example:
+ examples/drools-process-usertasks-quarkus-example:
+ dependencies:
+ "@kie-tools/jbpm-quarkus-devui":
+ specifier: workspace:*
+ version: link:../../packages/jbpm-quarkus-devui
+ "@kie-tools/maven-base":
+ specifier: workspace:*
+ version: link:../../packages/maven-base
devDependencies:
"@kie-tools/maven-config-setup-helper":
specifier: workspace:*
@@ -259,7 +266,7 @@ importers:
specifier: ^1.1.6
version: 1.1.6
- examples/drools-process-usertasks-quarkus-example:
+ examples/jbpm-compact-architecture-example:
dependencies:
"@kie-tools/jbpm-quarkus-devui":
specifier: workspace:*
@@ -268,6 +275,12 @@ importers:
specifier: workspace:*
version: link:../../packages/maven-base
devDependencies:
+ "@kie-tools/kogito-management-console":
+ specifier: workspace:*
+ version: link:../../packages/kogito-management-console
+ "@kie-tools/kogito-task-console":
+ specifier: workspace:*
+ version: link:../../packages/kogito-task-console
"@kie-tools/maven-config-setup-helper":
specifier: workspace:*
version: link:../../packages/maven-config-setup-helper
@@ -6021,31 +6034,6 @@ importers:
specifier: ^2.3.2
version: 2.3.2
- packages/kie-sandbox-image:
- dependencies:
- "@kie-tools/image-env-to-json":
- specifier: workspace:*
- version: link:../image-env-to-json
- "@kie-tools/online-editor":
- specifier: workspace:*
- version: link:../online-editor
- devDependencies:
- "@kie-tools/image-builder":
- specifier: workspace:*
- version: link:../image-builder
- "@kie-tools/root-env":
- specifier: workspace:*
- version: link:../root-env
- rimraf:
- specifier: ^3.0.2
- version: 3.0.2
- run-script-os:
- specifier: ^1.1.6
- version: 1.1.6
- ts-json-schema-generator:
- specifier: ^1.1.2
- version: 1.1.2
-
packages/kie-sandbox-webapp-image:
dependencies:
"@kie-tools/image-env-to-json":
diff --git a/prettier.config.js b/prettier.config.js
index a89c8d5d5e7..363a281d4d1 100644
--- a/prettier.config.js
+++ b/prettier.config.js
@@ -25,5 +25,9 @@ module.exports = {
files: "package.json",
options: { parser: "package-json" },
},
+ {
+ files: "**/*.xml",
+ options: { parser: "xml" },
+ },
],
};
diff --git a/repo/graph.dot b/repo/graph.dot
index 74f179a2141..20a23d4cf15 100644
--- a/repo/graph.dot
+++ b/repo/graph.dot
@@ -21,6 +21,9 @@ digraph G {
"@kie-tools/root-env" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
"@kie-tools-examples/drools-process-usertasks-quarkus-example" [ color = "orange", fontcolor = "orange", style = "dashed, rounded" ];
"@kie-tools/jbpm-quarkus-devui" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
+ "@kie-tools-examples/jbpm-compact-architecture-example" [ color = "orange", fontcolor = "orange", style = "dashed, rounded" ];
+ "@kie-tools/kogito-management-console" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
+ "@kie-tools/kogito-task-console" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
"@kie-tools-examples/ping-pong-view" [ color = "orange", fontcolor = "orange", style = "dashed, rounded" ];
"@kie-tools-core/envelope" [ color = "purple", fontcolor = "purple", style = "rounded" ];
"@kie-tools-examples/ping-pong-view-angular" [ color = "orange", fontcolor = "orange", style = "dashed, rounded" ];
@@ -131,9 +134,7 @@ digraph G {
"@kie-tools/online-editor" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
"@kie-tools/kn-plugin-workflow" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
"@kie-tools/sonataflow-operator" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
- "@kie-tools/kogito-management-console" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
"@kie-tools/runtime-tools-management-console-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ];
- "@kie-tools/kogito-task-console" [ color = "black", fontcolor = "black", style = "dashed, rounded" ];
"@kie-tools/runtime-tools-task-console-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ];
"@kie-tools-core/kubernetes-bridge" [ color = "purple", fontcolor = "purple", style = "rounded" ];
"@kie-tools-core/workspace" [ color = "purple", fontcolor = "purple", style = "rounded" ];
@@ -204,6 +205,9 @@ digraph G {
"kie-tools-examples-base64png-editor-vscode-extension" -> "@kie-tools-core/webpack-base" [ style = "dashed", color = "orange" ];
"@kie-tools-examples/commit-message-validation-service" -> "@kie-tools/root-env" [ style = "dashed", color = "orange" ];
"@kie-tools-examples/drools-process-usertasks-quarkus-example" -> "@kie-tools/jbpm-quarkus-devui" [ style = "solid", color = "orange" ];
+ "@kie-tools-examples/jbpm-compact-architecture-example" -> "@kie-tools/jbpm-quarkus-devui" [ style = "solid", color = "orange" ];
+ "@kie-tools-examples/jbpm-compact-architecture-example" -> "@kie-tools/kogito-management-console" [ style = "dashed", color = "orange" ];
+ "@kie-tools-examples/jbpm-compact-architecture-example" -> "@kie-tools/kogito-task-console" [ style = "dashed", color = "orange" ];
"@kie-tools-examples/ping-pong-view" -> "@kie-tools-core/envelope" [ style = "solid", color = "orange" ];
"@kie-tools-examples/ping-pong-view-angular" -> "@kie-tools-examples/ping-pong-view" [ style = "solid", color = "orange" ];
"@kie-tools-examples/ping-pong-view-react" -> "@kie-tools-examples/ping-pong-view" [ style = "solid", color = "orange" ];
diff --git a/repo/graph.json b/repo/graph.json
index 75b9eb78534..086b961df15 100644
--- a/repo/graph.json
+++ b/repo/graph.json
@@ -28,6 +28,13 @@
{ "id": "@kie-tools/jbpm-quarkus-devui" },
{ "id": "@kie-tools/maven-base" },
{ "id": "@kie-tools/runtime-tools-process-dev-ui-webapp" },
+ { "id": "@kie-tools-examples/jbpm-compact-architecture-example" },
+ { "id": "@kie-tools/kogito-management-console" },
+ { "id": "@kie-tools/kogito-task-console" },
+ { "id": "@kie-tools/image-builder" },
+ { "id": "@kie-tools/image-env-to-json" },
+ { "id": "@kie-tools/runtime-tools-management-console-webapp" },
+ { "id": "@kie-tools/runtime-tools-task-console-webapp" },
{ "id": "@kie-tools-examples/ping-pong-view" },
{ "id": "@kie-tools-core/envelope-bus" },
{ "id": "@kie-tools-examples/ping-pong-view-angular" },
@@ -73,7 +80,6 @@
{ "id": "@kie-tools/cors-proxy" },
{ "id": "@kie-tools/cors-proxy-api" },
{ "id": "@kie-tools/cors-proxy-image" },
- { "id": "@kie-tools/image-builder" },
{ "id": "@kie-tools/dashbuilder" },
{ "id": "@kie-tools/dashbuilder-component-assembler" },
{ "id": "@kie-tools/maven-config-setup-helper" },
@@ -124,7 +130,6 @@
{ "id": "@kie-tools/form-generation-tool" },
{ "id": "@kie-tools/uniforms-bootstrap4-codegen" },
{ "id": "@kie-tools/uniforms-patternfly-codegen" },
- { "id": "@kie-tools/image-env-to-json" },
{ "id": "@kie-tools/import-java-classes-component" },
{ "id": "@kie-tools/runtime-tools-process-webapp-components" },
{ "id": "@kie-tools/runtime-tools-shared-webapp-components" },
@@ -143,10 +148,6 @@
{ "id": "@kie-tools/sonataflow-operator" },
{ "id": "@kie-tools/sonataflow-builder-image" },
{ "id": "@kie-tools/sonataflow-devmode-image" },
- { "id": "@kie-tools/kogito-management-console" },
- { "id": "@kie-tools/runtime-tools-management-console-webapp" },
- { "id": "@kie-tools/kogito-task-console" },
- { "id": "@kie-tools/runtime-tools-task-console-webapp" },
{ "id": "@kie-tools/unitables" },
{ "id": "pmml-vscode-extension" },
{ "id": "@kie-tools/python-venv" },
@@ -276,6 +277,64 @@
"target": "@kie-tools/runtime-tools-shared-webapp-components",
"weight": 1
},
+ {
+ "source": "@kie-tools-examples/jbpm-compact-architecture-example",
+ "target": "@kie-tools/jbpm-quarkus-devui",
+ "weight": 1
+ },
+ {
+ "source": "@kie-tools-examples/jbpm-compact-architecture-example",
+ "target": "@kie-tools/kogito-management-console",
+ "weight": 1
+ },
+ {
+ "source": "@kie-tools-examples/jbpm-compact-architecture-example",
+ "target": "@kie-tools/kogito-task-console",
+ "weight": 1
+ },
+ { "source": "@kie-tools/kogito-management-console", "target": "@kie-tools/image-builder", "weight": 1 },
+ { "source": "@kie-tools/kogito-management-console", "target": "@kie-tools/image-env-to-json", "weight": 1 },
+ {
+ "source": "@kie-tools/kogito-management-console",
+ "target": "@kie-tools/runtime-tools-management-console-webapp",
+ "weight": 1
+ },
+ { "source": "@kie-tools/kogito-task-console", "target": "@kie-tools/image-builder", "weight": 1 },
+ { "source": "@kie-tools/kogito-task-console", "target": "@kie-tools/image-env-to-json", "weight": 1 },
+ {
+ "source": "@kie-tools/kogito-task-console",
+ "target": "@kie-tools/runtime-tools-task-console-webapp",
+ "weight": 1
+ },
+ { "source": "@kie-tools/image-builder", "target": "@kie-tools/tsconfig", "weight": 1 },
+ { "source": "@kie-tools/image-env-to-json", "target": "@kie-tools-core/webpack-base", "weight": 1 },
+ { "source": "@kie-tools/image-env-to-json", "target": "@kie-tools/eslint", "weight": 1 },
+ { "source": "@kie-tools/image-env-to-json", "target": "@kie-tools/tsconfig", "weight": 1 },
+ {
+ "source": "@kie-tools/runtime-tools-management-console-webapp",
+ "target": "@kie-tools/runtime-tools-process-webapp-components",
+ "weight": 1
+ },
+ {
+ "source": "@kie-tools/runtime-tools-management-console-webapp",
+ "target": "@kie-tools/runtime-tools-shared-webapp-components",
+ "weight": 1
+ },
+ {
+ "source": "@kie-tools/runtime-tools-task-console-webapp",
+ "target": "@kie-tools-core/react-hooks",
+ "weight": 1
+ },
+ {
+ "source": "@kie-tools/runtime-tools-task-console-webapp",
+ "target": "@kie-tools/runtime-tools-process-webapp-components",
+ "weight": 1
+ },
+ {
+ "source": "@kie-tools/runtime-tools-task-console-webapp",
+ "target": "@kie-tools/runtime-tools-shared-webapp-components",
+ "weight": 1
+ },
{ "source": "@kie-tools-examples/ping-pong-view", "target": "@kie-tools-core/envelope", "weight": 1 },
{ "source": "@kie-tools-core/envelope-bus", "target": "@kie-tools/eslint", "weight": 1 },
{ "source": "@kie-tools-core/envelope-bus", "target": "@kie-tools/root-env", "weight": 1 },
@@ -480,7 +539,6 @@
{ "source": "@kie-tools/cors-proxy-api", "target": "@kie-tools/tsconfig", "weight": 1 },
{ "source": "@kie-tools/cors-proxy-image", "target": "@kie-tools/cors-proxy", "weight": 1 },
{ "source": "@kie-tools/cors-proxy-image", "target": "@kie-tools/image-builder", "weight": 1 },
- { "source": "@kie-tools/image-builder", "target": "@kie-tools/tsconfig", "weight": 1 },
{ "source": "@kie-tools/dashbuilder", "target": "@kie-tools/maven-base", "weight": 1 },
{ "source": "@kie-tools/dashbuilder", "target": "@kie-tools/dashbuilder-component-assembler", "weight": 1 },
{
@@ -782,9 +840,6 @@
{ "source": "@kie-tools/uniforms-patternfly-codegen", "target": "@kie-tools-core/webpack-base", "weight": 1 },
{ "source": "@kie-tools/uniforms-patternfly-codegen", "target": "@kie-tools/eslint", "weight": 1 },
{ "source": "@kie-tools/uniforms-patternfly-codegen", "target": "@kie-tools/tsconfig", "weight": 1 },
- { "source": "@kie-tools/image-env-to-json", "target": "@kie-tools-core/webpack-base", "weight": 1 },
- { "source": "@kie-tools/image-env-to-json", "target": "@kie-tools/eslint", "weight": 1 },
- { "source": "@kie-tools/image-env-to-json", "target": "@kie-tools/tsconfig", "weight": 1 },
{
"source": "@kie-tools/import-java-classes-component",
"target": "@kie-tools-core/vscode-java-code-completion",
@@ -870,45 +925,6 @@
{ "source": "@kie-tools/sonataflow-builder-image", "target": "@kie-tools/sonataflow-image-common", "weight": 1 },
{ "source": "@kie-tools/sonataflow-devmode-image", "target": "@kie-tools/sonataflow-image-common", "weight": 1 },
{ "source": "@kie-tools/sonataflow-devmode-image", "target": "@kie-tools/sonataflow-quarkus-devui", "weight": 1 },
- { "source": "@kie-tools/kogito-management-console", "target": "@kie-tools/image-builder", "weight": 1 },
- { "source": "@kie-tools/kogito-management-console", "target": "@kie-tools/image-env-to-json", "weight": 1 },
- {
- "source": "@kie-tools/kogito-management-console",
- "target": "@kie-tools/runtime-tools-management-console-webapp",
- "weight": 1
- },
- {
- "source": "@kie-tools/runtime-tools-management-console-webapp",
- "target": "@kie-tools/runtime-tools-process-webapp-components",
- "weight": 1
- },
- {
- "source": "@kie-tools/runtime-tools-management-console-webapp",
- "target": "@kie-tools/runtime-tools-shared-webapp-components",
- "weight": 1
- },
- { "source": "@kie-tools/kogito-task-console", "target": "@kie-tools/image-builder", "weight": 1 },
- { "source": "@kie-tools/kogito-task-console", "target": "@kie-tools/image-env-to-json", "weight": 1 },
- {
- "source": "@kie-tools/kogito-task-console",
- "target": "@kie-tools/runtime-tools-task-console-webapp",
- "weight": 1
- },
- {
- "source": "@kie-tools/runtime-tools-task-console-webapp",
- "target": "@kie-tools-core/react-hooks",
- "weight": 1
- },
- {
- "source": "@kie-tools/runtime-tools-task-console-webapp",
- "target": "@kie-tools/runtime-tools-process-webapp-components",
- "weight": 1
- },
- {
- "source": "@kie-tools/runtime-tools-task-console-webapp",
- "target": "@kie-tools/runtime-tools-shared-webapp-components",
- "weight": 1
- },
{ "source": "@kie-tools/unitables", "target": "@kie-tools/boxed-expression-component", "weight": 1 },
{ "source": "@kie-tools/unitables", "target": "@kie-tools/dmn-runner", "weight": 1 },
{ "source": "pmml-vscode-extension", "target": "@kie-tools-core/vscode-extension", "weight": 1 },
@@ -1190,6 +1206,7 @@
"@kie-tools-examples/drools-process-usertasks-quarkus-example",
"examples/drools-process-usertasks-quarkus-example"
],
+ ["@kie-tools-examples/jbpm-compact-architecture-example", "examples/jbpm-compact-architecture-example"],
["@kie-tools-examples/ping-pong-view", "examples/ping-pong-view"],
["@kie-tools-examples/ping-pong-view-angular", "examples/ping-pong-view-angular"],
["@kie-tools-examples/ping-pong-view-react", "examples/ping-pong-view-react"],