This is an automated email from the ASF dual-hosted git repository.
tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git
The following commit(s) were added to refs/heads/main by this push:
new e4f35da8dd3 NO-ISSUE: jBPM Quarkus Dev UI and Compact Architecture
Example general adjustments (Part 1) (#2710)
e4f35da8dd3 is described below
commit e4f35da8dd3927db2b6c4e79baa6b204cb4918ab
Author: Tiago Bento <[email protected]>
AuthorDate: Mon Oct 28 12:36:44 2024 -0400
NO-ISSUE: jBPM Quarkus Dev UI and Compact Architecture Example general
adjustments (Part 1) (#2710)
---
_intellij-project/.idea/jsLibraryMappings.xml | 7 +
_intellij-project/.idea/prettier.xml | 7 +
.../jbpm-compact-architecture-example/.gitignore | 3 +
.../jbpm-compact-architecture-example/README.md | 445 ++++++++++++---------
.../docker-compose/.gitignore | 3 -
.../docker-compose/README.md | 59 ---
.../docker-compose/docker-compose.yml | 8 +-
.../{startServices.sh => startContainers.sh} | 10 +-
.../docs/images/new_hiring_offer_dmn.png | Bin 23193 -> 147826 bytes
.../docs/images/new_hiring_offer_dmn_decision.png | Bin 74373 -> 306456 bytes
.../docs/images/new_hiring_offer_dmn_types.png | Bin 59378 -> 0 bytes
.../new_hiring_offer_dmn_types_tCandidateData.png | Bin 0 -> 282487 bytes
.../images/new_hiring_offer_dmn_types_tOffer.png | Bin 0 -> 191773 bytes
.../jbpm-compact-architecture-example/package.json | 22 +-
examples/jbpm-compact-architecture-example/pom.xml | 2 +-
packages/jbpm-quarkus-devui/dev/pom.xml | 2 +-
.../devui/deployment/DevConsoleProcessor.java | 4 +-
.../runtime/config/DevConsoleRuntimeConfig.java | 2 +-
.../pages/TaskDetailsPage/TaskDetailsPage.tsx | 4 +-
.../src/components/pages/TasksPage/TasksPage.tsx | 2 +-
.../src/components/DevUI/DevUINav/DevUINav.tsx | 8 +-
.../components/DevUI/DevUIRoutes/DevUIRoutes.tsx | 8 +-
.../TaskInboxContainer/TaskInboxContainer.tsx | 2 +-
.../JobsManagementPage/JobsManagementPage.tsx | 2 +-
.../pages/TaskDetailsPage/TaskDetailsPage.tsx | 2 +-
.../pages/TaskInboxPage/TaskInboxPage.tsx | 10 +-
.../components/TaskInboxSwitchUser.tsx | 2 +-
.../envelope/JobsManagementEnvelope.tsx | 2 +-
.../envelope/JobsManagementEnvelopeContext.ts | 3 +-
.../JobsManagementTable/JobsManagementTable.tsx | 2 +-
.../src/taskInbox/api/TaskInboxChannelApi.ts | 2 +-
.../envelope/components/TaskInbox/TaskInbox.tsx | 6 +-
.../TaskInboxToolbar/TaskInboxToolbar.tsx | 4 +-
33 files changed, 327 insertions(+), 306 deletions(-)
diff --git a/_intellij-project/.idea/jsLibraryMappings.xml
b/_intellij-project/.idea/jsLibraryMappings.xml
new file mode 100644
index 00000000000..c0cf19f9da3
--- /dev/null
+++ b/_intellij-project/.idea/jsLibraryMappings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="JavaScriptLibraryMappings">
+ <file url="file://$PROJECT_DIR$/../packages/root-env" libraries="{Node.js
Core}" />
+ <file url="file://$PROJECT_DIR$/../packages/scripts" libraries="{Node.js
Core}" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/_intellij-project/.idea/prettier.xml
b/_intellij-project/.idea/prettier.xml
new file mode 100644
index 00000000000..c63eab28843
--- /dev/null
+++ b/_intellij-project/.idea/prettier.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="PrettierConfiguration">
+ <option name="myConfigurationMode" value="AUTOMATIC" />
+ <option name="myFilesPattern"
value="**/*.{js,ts,jsx,tsx,cjs,cts,mjs,mts,vue,astro,json,xml}" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/.gitignore
b/examples/jbpm-compact-architecture-example/.gitignore
new file mode 100644
index 00000000000..99367778514
--- /dev/null
+++ b/examples/jbpm-compact-architecture-example/.gitignore
@@ -0,0 +1,3 @@
+docker-compose/.env
+docker-compose/svg/
+docker-compose/persistence/
\ No newline at end of file
diff --git a/examples/jbpm-compact-architecture-example/README.md
b/examples/jbpm-compact-architecture-example/README.md
index 5fcae0599f9..187272e913a 100644
--- a/examples/jbpm-compact-architecture-example/README.md
+++ b/examples/jbpm-compact-architecture-example/README.md
@@ -1,164 +1,180 @@
# jBPM Compact Architecture Quarkus Example
-## Description
+This example showcases a basic implementation of a **Hiring** Process that
drives a _Candidate_ through different
+interviews until they get hired. It features simple User Task orchestration
including the use of DMN decisions to
+generate the candidate's offer and timers to skip interviews.
-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 timers 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:
+Additionally, this example also demonstrates how to configure the whole
environment using the new _Compact
+Architecture_, simplifying the communication among services, removing the need
of events (Kafka/HTTP) between
+them. This is achieved using the following _Quarkus_ addons:
- `kogito-addons-quarkus-data-index-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 {
+### The _"Hiring"_ Process (BPMN)
- 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<String> 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 {
+The process handles the following _Variables_:
- private String category; // Job category based on the candidate experience
- private Integer salary; // Salary based on the candidate experience and
skills
+| 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 |
- // Constructors, setters, getters...
-}
-```
+---
-## The _New Hiring Offer_ DMN
+<div style="text-align:center">
+ <figure>
+ <img width=75% src="docs/images/hiring_diagram.png" alt="Hiring Process
Diagram">
+ <br/>
+ <figcaption>Hiring Process Diagram</figcaption>
+ </figure>
+</div>
-This example makes use of the _New Hiring Offer_ DMN to generate a base offer
for the `Candidate`. The DMN looks like this:
+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.
-In this simple DMN we have an `Offer` _Decision_, that will generate the
candidate offer, which
-has a requirement of a `CandidateData` _Input Data_.
+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.
<div style="text-align:center">
<figure>
- <img width=55% src="docs/images/new_hiring_offer_dmn.png" alt="DMN
Diagram">
- <figcaption>New Hiring Offer DMN diagram</figcaption>
+ <img width=75% src="docs/images/generate_offer_assignments.png"
alt="Offer assignments">
+ <br/>
+ <figcaption><b>Generate base Offer</b> data assignments</figcaption>
</figure>
</div>
-The DMN defines the following data types (`tCandidateData` & `tOffer` )
matching the POJOs defined in the project
-(`CandidateData.java` & `Offer.java`):
+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`.
<div style="text-align:center">
<figure>
- <img width=75% src="docs/images/new_hiring_offer_dmn_types.png"
alt="DMN Type Definitions">
- <figcaption>New Hiring Offer DMN types</figcaption>
+ <img width=75% src="docs/images/hr_interview_assignments.png" alt="HR
Interview assignments">
+ <br/>
+ <figcaption><b>HR Interview</b> task data assignments</figcaption>
</figure>
</div>
-As expected, `CandidateData` _Input Data_ & `Offer` _Decision_ have a
`tCandidateData` data
+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.
-The `Offer` decision uses the following _Boxed Expression_ to generate the
`tOffer`:
+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.
<div style="text-align:center">
<figure>
- <img width=75% src="docs/images/new_hiring_offer_dmn_decision.png"
alt="DMN Decision">
- <figcaption>New Hiring Offer DMN decision</figcaption>
+ <img width=75% src="docs/images/it_interview_assignments.png" alt="IT
Interview assignments">
+ <br/>
+ <figcaption><b>IT Interview</b> task data assignments</figcaption>
</figure>
</div>
-## The Hiring Process
+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.
-### Process variables
+> **NOTE:** for simplicity, all the _User Tasks_ in this example are assigned
to the _jdoe_ user present in the Keycloak
+> configuration
-The process handles the following _Variables_:
+### The _"New Hiring Offer"_ Decision (DMN)
-| 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 |
+This example makes use of the _New Hiring Offer_ DMN to generate a base offer
for the `Candidate`. The DMN looks like
+this:
-### The BPMN Process
+In this simple DMN we have an `Offer` _Decision_, that will generate the
candidate offer, which
+has a requirement of a `CandidateData` _Input Data_.
<div style="text-align:center">
<figure>
- <img width=75% src="docs/images/hiring_diagram.png" alt="Hiring Process
Diagram">
- <figcaption>Hiring Process Diagram</figcaption>
+ <img width=55% src="docs/images/new_hiring_offer_dmn.png" alt="DMN
Diagram">
+ <br/>
+ <figcaption>New Hiring Offer DMN diagram</figcaption>
</figure>
</div>
-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.
+The DMN defines the following data types (`tCandidateData` & `tOffer` )
matching the Java POJOs defined in the project
+(`CandidateData.java` & `Offer.java`):
<div style="text-align:center">
<figure>
- <img width=75% src="docs/images/generate_offer_assignments.png"
alt="Offer assignments">
- <figcaption><b>Generate base Offer</b> data assignments</figcaption>
+ <img width=49%
src="docs/images/new_hiring_offer_dmn_types_tCandidateData.png" alt="DMN Type
Definitions">
+ <img width=49% src="docs/images/new_hiring_offer_dmn_types_tOffer.png"
alt="DMN Type Definitions">
+ <br/>
+ <figcaption>New Hiring Offer DMN types</figcaption>
</figure>
</div>
-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`.
+As expected, `CandidateData` Input and `Offer` Decision have a
`tCandidateData` type
+
+The `Offer` Decision uses the following _Boxed Expression_ to generate the
`tOffer`:
<div style="text-align:center">
<figure>
- <img width=75% src="docs/images/hr_interview_assignments.png" alt="HR
Interview assignments">
- <figcaption><b>HR Interviewr</b> task data assignments</figcaption>
+ <img width=75% src="docs/images/new_hiring_offer_dmn_decision.png"
alt="DMN Decision">
+ <br/>
+ <figcaption><i>"New Hiring Offer"</i> DMN Decision</figcaption>
</figure>
</div>
-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.
+### The Java models
-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.
+The **Hiring** process uses two POJOs to handle the process data, both of them
can be found in the _org.kie.kogito.hr_
+package.
-<div style="text-align:center">
- <figure>
- <img width=75% src="docs/images/it_interview_assignments.png" alt="IT
Interview assignments">
- <figcaption><b>IT Interviewr</b> task data assignments</figcaption>
- </figure>
-</div>
+The `CandidateData` POJO is the input of the process. It represents the person
that wants to get the job.
-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.
+```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<String> 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
-> **NOTE:** for simplicity, all the _User Tasks_ in this example are assigned
to the _jdoe_ user present in the keycloak configuration
+ // Constructors, setters, getters...
+}
+```
+
+---
-## Running the example
+## Running
### Prerequisites
- Java 17+ installed
- Environment variable JAVA_HOME set accordingly
-- Maven 3.9.3+ installed
+- Maven 3.9.6+ installed
- Docker and Docker Compose to run the required example infrastructure.
And when using native image compilation, you will also need:
@@ -166,77 +182,94 @@ 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.
+- 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.
+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
+| Service | Port @ localhost |
+| ------------------ | ----------------------------- |
+| PostgreSQL | [5432](http://localhost:5432) |
+| PgAdmin | [8055](http://localhost:8055) |
+| Keycloak | [8480](http://localhost:8480) |
+| Management Console | [8280](http://localhost:8280) |
+| This example's app | [8080](http://localhost:8080) |
-To help bootstraping the Infrastructure Services, the example provides the
`startServices.sh` script inside the _docker-compose_
-folder.
+To help bootstrapping the Infrastructure Services, the example provides the
`startContainers.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**.
+> **_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
+### Running as containers
-To build the example, on a Terminal, run the following command:
+First, build the example running the following command on a Terminal:
```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.
+This will build this example's 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:
+To execute the full example (including Management Console), run the following
command inside the
+`docker-compose` folder:
```shell
-sh startServices.sh
+# cd docker-compose
+sh startContainers.sh
```
-> **_IMPORTANT:_** if you are running this example on MacOs and you are not
using **Docker Desktop**, please append
+> **_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
+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 `startContainers.sh` script but passing the
`example-only` argument
```shell
-sh startServices.sh example
+sh startContainers.sh example-only
```
-> **_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.
+- **infra**: Starts only the minimal infrastructure to run the example
(PostgreSQL, pgadmin, Kogito Data-Index)
+- **example-only**: Starts the services in _infra_ profile and this example's
app. Requires the example to be compiled
+ with `mvn clean package -Pcontainer`.
+- **full** (default): includes all the above and also starts the **Management
Console** and **Keycloak** to handle the
+ console authentication. Requires the example to be compiled with `mvn clean
package -Pcontainer`.
-### Running the example in Development mode
+### Running in Development mode
-To run the example in Development mode, just run the following command in a
Terminal:
+In Development mode profile will embed all the needed Infrastructure Services
(PostgreSQL, Data-Index & Jobs Service)
+and won't
+require any extra step. To start this example's app in Development mode, just
run the following command in a Terminal:
```shell
-mvn clean package quarkus:dev -Pdevelopment
+mvn 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 **Process Quarkus Dev UI Extension**
that exposes a new section in the **Quarkus
+Dev UI** page, featuring an embedded, dev-focused **Management Console**.
**Quarkus Dev UI** is available
+at http://localhost:8080/q/dev
-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 Process Quarkus Dev
UI 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.
-> **_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.
+---
+
+## Using
### 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`.
+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:
@@ -270,7 +303,7 @@ If everything went well you may get a response like:
}
```
-In the server log You may find a trace like:
+In the server logs you may find a trace like:
```
New Hiring has been created for candidate: Jon Snow
@@ -281,7 +314,8 @@ Base salary: 40450
###################################
```
-Use the following `CandidateData` that don't match the minimal candidate
requirements, to start a process that will automatically end:
+Use the following `CandidateData` that don't match the minimal candidate
requirements, to start a process that will
+automatically end:
```json
{
@@ -319,10 +353,12 @@ Candidate Jon Snow don't meet the requirements for the
position but we'll keep i
###################################
```
-### Using Keycloak as Authentication Server
+### Using Keycloak as Identify Provider (IdP)
-In this Quickstart we'll be using [Keycloak](https://www.keycloak.org/) as
_Authentication Server_ for _Kogito Task Console_. 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.
+In this Quickstart we'll be using [Keycloak](https://www.keycloak.org/) as
_Authentication Server_ for _Management
+Console_. 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:
@@ -332,28 +368,32 @@ It will install the _Kogito Realm_ that comes with a
predefined set of users:
| 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 _Kogito Task Console_ not for the Kogito Runtime.
+Once Keycloak is started, you should be able to access your _Keycloak Server_
+at [localhost:8480/auth](http://localhost:8480/auth) with _admin_ user.
-### Using the Kogito Runtime Consoles to interact with the Hiring Process
+### Using Management Console 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.
+The following _step-by-step_ guides will show how to take advantage of
_Management 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.
+To be able to follow the guides, please make sure that the example has been
built using the `container` and all the
+_Infrastructure Services_
+are started as explained in the [Building &
Running](#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.
+> **_NOTE_**: For more information about how to operate with the _Management
Console_, please refer to the
+> [Management
Console](https://docs.kogito.kie.org/latest/html_single/#con-management-console_kogito-developing-process-services)
+> documentation.
-#### Show active Hiring process instance at Kogito Management Console
+#### Show active Hiring process instance at Management Console
-_Kogito Management Console_ is the tool that enables the user to view and
administrate process instances in our _Kogito application_.
+_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.
+In this guide we'll see how to use the _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:
+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": "[email protected]", "experience": 5, "skills":
["Java", "Kogito", "Fencing"]}}'
@@ -370,37 +410,46 @@ In this guide we'll see how to use the _Kogito Management
Console_ to view the s
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 you'll be redirected to the **Process
Instances** page in the _Kogito Management Console_.
+2. Now let's check the process instance state with the _Management Console_.
To do so, in your browser navigate
+ to http://localhost:8280, and you'll be redirected to the **Process
Instances** page in the _Kogito Management
+ Console_.
There where you should be able to see the started process instance in
active state.
<div style="text-align:center;">
<figure>
<img width=75% src="docs/images/g1_1_mc_list.png" alt="Process List">
- <figcaption><b>Process List</b> in <i>Kogito Management
Console</i></figcaption>
+ <br/>
+ <figcaption><b>Process List</b> in <i>Management
Console</i></figcaption>
</figure>
</div>
-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_...
+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_...
<div style="text-align:center">
<figure>
<img width=75% src="docs/images/g1_2_mc_details.png" alt="Process
Details">
+ <br/>
<figcaption><b>Process Instance Details</b> page</figcaption>
</figure>
</div>
- 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
+ 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.
+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.
<div style="text-align:center">
<figure>
<img width=75% src="docs/images/g1_3_mc_details_executed_job.png"
alt="Process Details after timer">
+ <br/>
<figcaption>Process Instance completed after the timer
execution.</figcaption>
</figure>
</div>
@@ -411,21 +460,22 @@ In this guide we'll see how to use the _Kogito Management
Console_ to view the s
Notice in the _Jobs_ panel that the associated _Job_ has the **Executed**
status.
-#### Complete Hiring process instances using Kogito Task Console
+#### Complete Hiring process instances using Management 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).
+_Management Console_ allows admin users to interact with the process _User
Tasks_ and provide the
+necessary data for the process to continue.
-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.
+In this guide, we'll see how to complete the process _User Tasks_ using
_Management Console_ to interact with the
+process _User Tasks_.
-> **_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_
+> **_NOTE_**: For simplicity, all the _User Tasks_ are assigned to the user
_jdoe_.
-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:
+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": "[email protected]", "experience": 5, "skills":
["Java", "Kogito", "Fencing"]}}'
@@ -442,83 +492,99 @@ using the engine autogenerated forms.
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_,
+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.
<div style="text-align:center;">
<figure>
<img width=75% src="docs/images/g2_1_mc_list.png" alt="Process
List"/>
- <figcaption>Process List in <i>Kogito Management
Console</i></figcaption>
+ <br/>
+ <figcaption>Process List in <i>Management Console</i></figcaption>
</figure>
</div>
<div style="text-align:center">
<figure>
<img width=75% src="docs/images/g2_2_mc_details.png" alt="Process
Details">
+ <br/>
<figcaption>Process instance Details page.</figcaption>
</figure>
</div>
- As expected, the process instance is stopped in the _HR Interview_ task
waiting for some input from the user. Let's try to
+ 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.
+3. Now open the _Management Console_ by browsing to http://localhost:8280 and
log in using the **jdoe/jdoe**
+ credentials.
+ After logging in, navigate to the **Tasks** page, which contains the list
of _Active_ tasks. In this case you should
+ be able to see only the new _HR Interview_ task.
<div style="text-align:center;">
<figure>
- <img width=75% src="docs/images/g2_3_tc_inbox.png" alt="Task Inbox"/>
- <figcaption><b>Task Inbox</b> in <i>Kogito Task
Console</i></figcaption>
+ <img width=75% src="docs/images/g2_3_tc_inbox.png" alt="Tasks page
on Management Console"/>
+ <br/>
+ <figcaption><b>Tasks</b> in <i>Management Console</i></figcaption>
</figure>
</div>
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
+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.
<div style="text-align:center;">
<figure>
<img width=75% src="docs/images/g2_4_tc_hr_form.png" alt="HR
Interview Form"/>
+ <br/>
<figcaption><i>HR Interview</i> <b>Task Form</b></figcaption>
</figure>
</div>
- _HR Interview_ Form allows you to edit the actual **Offer** that will be
sent to the _Candidate_ and also approve or deny
+ _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.
+ 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.
<div style="text-align:center;">
<figure>
<img width=75% src="docs/images/g2_5_tc_hr_form_notification.png"
alt="HR Interview Form Notification"/>
+ <br/>
<figcaption><i>HR Interview</i> Success notification!</figcaption>
</figure>
</div>
- With the _HR Interview_ task successfully completed the process has moved
forward and reached the _IT Interview_ task.
+ 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
+ Optionally, you can check the process instance state in the **Management
Console** and verify the current
execution path.
<div style="text-align:center;">
<figure>
<img width=75% src="docs/images/g2_6_mc_details.png" alt="Process
Details"/>
+ <br/>
<figcaption>Process Instance details stopped in <i>IT
Interview</i></figcaption>
</figure>
</div>
-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.
+5. Now is time to complete the **IT Interview** task and complete this Hiring
process instance. In **Management Console
+ **, go back to **Tasks** and, as expected, there you'll see that **HR
Interview** is no longer available and a new \*
+ \*IT Interview\*\* has appeared.
<div style="text-align:center;">
<figure>
- <img width=75% src="docs/images/g2_7_tc_inbox.png" alt="Task Inbox"/>
- <figcaption><i>IT Interview</i> in <b>Task Inbox</b></figcaption>
+ <img width=75% src="docs/images/g2_7_tc_inbox.png" alt="Tasks"/>
+ <br/>
+ <figcaption><i>IT Interview</i> in <b>Tasks</b></figcaption>
</figure>
</div>
@@ -529,27 +595,32 @@ using the engine autogenerated forms.
<div style="text-align:center;">
<figure>
<img width=75% src="docs/images/g2_8_tc_it_form.png" alt="IT
Interview Form"/>
+ <br/>
<figcaption><i>IT Interview</i> <b>Task Form</b></figcaption>
</figure>
</div>
-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
+6. After the form is submitted the _IT Task_ should be completed and the
process should continue, notifying the
+ _Candidate_
+ that he has successfully finished the Hiring process. Please go back to
**Tasks** to verify there are no other
+ active tasks
waiting for you.
<div style="text-align:center;">
<figure>
- <img width=75% src="docs/images/g2_9_tc_inbox_empty.png" alt="Empty
Task Inbox"/>
- <figcaption>Empty **Task Inbox** after completing the *IT Interview*
Task</figcaption>
+ <img width=75% src="docs/images/g2_9_tc_inbox_empty.png" alt="Empty
Tasks"/>
+ <br/>
+ <figcaption>Empty **Tasks** after completing the *IT Interview*
Task</figcaption>
</figure>
</div>
- You can also open use _Kogito Management Console_ to check the state of the
process instance and verify that the
+ You can also open use _Management Console_ to check the state of the
process instance and verify that the
instance has been successfully completed.
<div style="text-align:center;">
<figure>
<img width=75% src="docs/images/g2_10_mc_details_completed.png"
alt="Hiring Process succesfully completed"/>
+ <br/>
<figcaption>Hiring Process sucessfully completed</figcaption>
</figure>
</div>
diff --git
a/examples/jbpm-compact-architecture-example/docker-compose/.gitignore
b/examples/jbpm-compact-architecture-example/docker-compose/.gitignore
deleted file mode 100644
index b6632dbda58..00000000000
--- a/examples/jbpm-compact-architecture-example/docker-compose/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.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
deleted file mode 100644
index 62c8d80dd1a..00000000000
--- a/examples/jbpm-compact-architecture-example/docker-compose/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# 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 clean package -Dcontainer`)
-- Kogito Management 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 clean package -Dcontainer`.
-- **full** (default): includes all the above and also starts the **Management
Console** and **Keycloak** to handle the console authentication. Requires the
example to be compiled using the `container` mvn profile eg: `mvn clean 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
-- 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
index 4490b4adaea..9e8336e21da 100644
---
a/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml
+++
b/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml
@@ -1,10 +1,8 @@
-version: "3"
-
services:
postgres:
container_name: postgres
image: postgres:16.1-alpine3.19
- profiles: ["infra", "example", "full"]
+ profiles: ["infra", "example-only", "full"]
ports:
- "5432:5432"
volumes:
@@ -21,7 +19,7 @@ services:
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4:8.2
- profiles: ["infra", "example", "full"]
+ profiles: ["infra", "example-only", "full"]
ports:
- 8055:80
depends_on:
@@ -45,7 +43,7 @@ services:
jbpm-compact-architecture-example-service:
container_name: jbpm-compact-architecture-example-service
image:
dev.local/${USER}/jbpm-compact-architecture-example-service:${PROJECT_VERSION}
- profiles: ["example", "full"]
+ profiles: ["example-only", "full"]
ports:
- "8080:8080"
environment:
diff --git
a/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh
b/examples/jbpm-compact-architecture-example/docker-compose/startContainers.sh
similarity index 70%
rename from
examples/jbpm-compact-architecture-example/docker-compose/startServices.sh
rename to
examples/jbpm-compact-architecture-example/docker-compose/startContainers.sh
index a24bd93e4e7..75f282c5f84 100755
--- a/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh
+++
b/examples/jbpm-compact-architecture-example/docker-compose/startContainers.sh
@@ -2,20 +2,22 @@
PROFILE="full"
-echo "Script requires your Kogito Example to be compiled"
+echo "This script requires this example's app to have been compiled with 'mvn
clean package -Pcontainer'"
+echo "==="
+echo "Using profile '${PROFILE}'..."
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)
if [ -n "$1" ]; then
- if [[ ("$1" == "full") || ("$1" == "infra") || ("$1" == "example")]];
+ if [[ ("$1" == "full") || ("$1" == "infra") || ("$1" == "example-only")]];
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 &
keycloak). Requires the example to be compiled using the 'container' profile
(-Pcontainer)"
+ echo "* 'example-only': Use this profile to start the example
infrastructure and the kogito-example service. Requires the example to have
been 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, Management Console, and Keycloak. Requires
the example to have been compiled using the 'container' profile (-Pcontainer)"
exit 1;
fi
fi
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
index 451313a264d..f7a340aa136 100644
Binary files
a/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn.png
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
index f58d869d36f..c1296c359ff 100644
Binary files
a/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_decision.png
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
deleted file mode 100644
index d028d331da9..00000000000
Binary files
a/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types.png
and /dev/null differ
diff --git
a/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types_tCandidateData.png
b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types_tCandidateData.png
new file mode 100644
index 00000000000..cec86e763e4
Binary files /dev/null and
b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types_tCandidateData.png
differ
diff --git
a/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types_tOffer.png
b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types_tOffer.png
new file mode 100644
index 00000000000..abde021e576
Binary files /dev/null and
b/examples/jbpm-compact-architecture-example/docs/images/new_hiring_offer_dmn_types_tOffer.png
differ
diff --git a/examples/jbpm-compact-architecture-example/package.json
b/examples/jbpm-compact-architecture-example/package.json
index ea517540de3..fa0b790d13d 100644
--- a/examples/jbpm-compact-architecture-example/package.json
+++ b/examples/jbpm-compact-architecture-example/package.json
@@ -13,27 +13,23 @@
"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: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 \"",
+ "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"
+ "start:darwin:linux": "mvn quarkus:dev -DskipTests -Pdevelopment",
+ "start:win32": "mvn quarkus:dev `-DskipTests `-Pdevelopment",
+ "startContainers": "run-script-os || pnpm run stopContainers",
+ "startContainers:darwin:linux": "mvn clean install -Pcontainer && cd
./docker-compose && sh startContainers.sh",
+ "startContainers:win32": "echo Running containers example is not supported
on Windows",
+ "stopContainers": "run-script-os",
+ "stopContainers:darwin:linux": "cd ./docker-compose && docker compose down"
},
"dependencies": {
"@kie-tools/jbpm-quarkus-devui": "workspace:*",
diff --git a/examples/jbpm-compact-architecture-example/pom.xml
b/examples/jbpm-compact-architecture-example/pom.xml
index f335dd56525..721cefe1819 100644
--- a/examples/jbpm-compact-architecture-example/pom.xml
+++ b/examples/jbpm-compact-architecture-example/pom.xml
@@ -95,7 +95,7 @@
<artifactId>kie-addons-quarkus-persistence-jdbc</artifactId>
</dependency>
- <!-- Data Index Addon -->
+ <!-- Data-Index Addon -->
<dependency>
<groupId>org.kie</groupId>
<artifactId>kogito-addons-quarkus-data-index-jpa</artifactId>
diff --git a/packages/jbpm-quarkus-devui/dev/pom.xml
b/packages/jbpm-quarkus-devui/dev/pom.xml
index 90dfb810f19..d0cdfc0f317 100644
--- a/packages/jbpm-quarkus-devui/dev/pom.xml
+++ b/packages/jbpm-quarkus-devui/dev/pom.xml
@@ -123,7 +123,7 @@
<artifactId>kogito-addons-quarkus-jobs-management</artifactId>
</dependency>
- <!-- Data Index -->
+ <!-- Data-Index -->
<dependency>
<groupId>org.kie</groupId>
<artifactId>kogito-addons-quarkus-data-index-postgresql</artifactId>
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 2b75cdfc659..03bc33317f2 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
@@ -139,14 +139,14 @@ public class DevConsoleProcessor {
cardPageBuildItem.addPage(Page.webComponentPageBuilder()
.componentLink("qwc-jbpm-quarkus-devui.js")
- .metadata("page", "TaskInbox")
+ .metadata("page", "Tasks")
.title("Tasks")
.icon("font-awesome-solid:bars-progress")
.dynamicLabelJsonRPCMethodName("queryTasksCount"));
cardPageBuildItem.addPage(Page.webComponentPageBuilder()
.componentLink("qwc-jbpm-quarkus-devui.js")
- .metadata("page", "JobsManagement")
+ .metadata("page", "Jobs")
.title("Jobs")
.icon("font-awesome-solid:clock")
.dynamicLabelJsonRPCMethodName("queryJobsCount"));
diff --git
a/packages/jbpm-quarkus-devui/jbpm-quarkus-devui-runtime/src/main/java/org/jbpm/quarkus/devui/runtime/config/DevConsoleRuntimeConfig.java
b/packages/jbpm-quarkus-devui/jbpm-quarkus-devui-runtime/src/main/java/org/jbpm/quarkus/devui/runtime/config/DevConsoleRuntimeConfig.java
index 780ab42bf19..78262048e5a 100644
---
a/packages/jbpm-quarkus-devui/jbpm-quarkus-devui-runtime/src/main/java/org/jbpm/quarkus/devui/runtime/config/DevConsoleRuntimeConfig.java
+++
b/packages/jbpm-quarkus-devui/jbpm-quarkus-devui-runtime/src/main/java/org/jbpm/quarkus/devui/runtime/config/DevConsoleRuntimeConfig.java
@@ -28,7 +28,7 @@ import io.quarkus.runtime.annotations.ConfigRoot;
public class DevConsoleRuntimeConfig {
/**
- * Mocked users data for the task inbox screen.
+ * Mocked users data for the Tasks screen.
*/
@ConfigItem(name = "users")
public Map<String, UserConfig> userConfigByUser;
diff --git
a/packages/runtime-tools-management-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx
b/packages/runtime-tools-management-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx
index 42765ff8469..9ec3ca2f88d 100644
---
a/packages/runtime-tools-management-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx
+++
b/packages/runtime-tools-management-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx
@@ -159,7 +159,7 @@ const TaskDetailsPage: React.FC<RouteComponentProps<Props>
& OUIAProps> = ({ oui
<Card className={"kogito-management-console__full-size"}>
<ServerErrors error={error} variant="large">
<Button variant="primary" onClick={() => goToInbox()}>
- Go to Inbox
+ Go to Tasks
</Button>
</ServerErrors>
</Card>
@@ -229,7 +229,7 @@ const TaskDetailsPage: React.FC<RouteComponentProps<Props>
& OUIAProps> = ({ oui
taskInboxGatewayApi.clearOpenTask();
}}
>
- Task Inbox
+ Tasks
</Link>
</BreadcrumbItem>
<BreadcrumbItem>{userTask.referenceName}</BreadcrumbItem>
diff --git
a/packages/runtime-tools-management-console-webapp/src/components/pages/TasksPage/TasksPage.tsx
b/packages/runtime-tools-management-console-webapp/src/components/pages/TasksPage/TasksPage.tsx
index 3555d1eedc1..8c5a04f836b 100644
---
a/packages/runtime-tools-management-console-webapp/src/components/pages/TasksPage/TasksPage.tsx
+++
b/packages/runtime-tools-management-console-webapp/src/components/pages/TasksPage/TasksPage.tsx
@@ -31,7 +31,7 @@ import { Card } from
"@patternfly/react-core/dist/js/components/Card";
const TasksPage: React.FC<OUIAProps> = (ouiaId, ouiaSafe) => {
useEffect(() => {
- return ouiaPageTypeAndObjectId("task-inbox-page");
+ return ouiaPageTypeAndObjectId("tasks-page");
});
return (
diff --git
a/packages/runtime-tools-process-dev-ui-webapp/src/components/DevUI/DevUINav/DevUINav.tsx
b/packages/runtime-tools-process-dev-ui-webapp/src/components/DevUI/DevUINav/DevUINav.tsx
index 385becff1a7..11cd6cd707a 100644
---
a/packages/runtime-tools-process-dev-ui-webapp/src/components/DevUI/DevUINav/DevUINav.tsx
+++
b/packages/runtime-tools-process-dev-ui-webapp/src/components/DevUI/DevUINav/DevUINav.tsx
@@ -42,15 +42,15 @@ const DevUINav: React.FC<IOwnProps> = ({ pathname }) => {
</NavItem>
)}
{(!availablePages || availablePages.includes("Jobs")) && (
- <NavItem key={"jobs-management-nav"} isActive={pathname ===
"/JobsManagement"}>
- <Link to="/JobsManagement"
{...ouiaAttribute("data-ouia-navigation-name", "jobs-management-nav")}>
+ <NavItem key={"jobs-management-nav"} isActive={pathname ===
"/Jobs"}>
+ <Link to="/Jobs"
{...ouiaAttribute("data-ouia-navigation-name", "jobs-management-nav")}>
Jobs
</Link>
</NavItem>
)}
{(!availablePages || availablePages.includes("Tasks")) && (
- <NavItem key={"task-inbox-nav"} isActive={pathname ===
"/TaskInbox"}>
- <Link to="/TaskInbox"
{...ouiaAttribute("data-ouia-navigation-name", "task-inbox-nav")}>
+ <NavItem key={"tasks-nav"} isActive={pathname === "/Tasks"}>
+ <Link to="/Tasks"
{...ouiaAttribute("data-ouia-navigation-name", "tasks-nav")}>
Tasks
</Link>
</NavItem>
diff --git
a/packages/runtime-tools-process-dev-ui-webapp/src/components/DevUI/DevUIRoutes/DevUIRoutes.tsx
b/packages/runtime-tools-process-dev-ui-webapp/src/components/DevUI/DevUIRoutes/DevUIRoutes.tsx
index 672af3bbbc5..996749734a3 100755
---
a/packages/runtime-tools-process-dev-ui-webapp/src/components/DevUI/DevUIRoutes/DevUIRoutes.tsx
+++
b/packages/runtime-tools-process-dev-ui-webapp/src/components/DevUI/DevUIRoutes/DevUIRoutes.tsx
@@ -35,9 +35,9 @@ interface IOwnProps {
type DevUIRoute = { enabled: () => boolean; node: React.ReactNode };
-const defaultPath = "/JobsManagement";
+const defaultPath = "/Jobs";
-const defaultButton = "Go to jobs management";
+const defaultButton = "Go to Jobs";
const DevUIRoutes: React.FC<IOwnProps> = ({ navigate }) => {
const context = useDevUIAppContext();
@@ -58,11 +58,11 @@ const DevUIRoutes: React.FC<IOwnProps> = ({ navigate }) => {
},
{
enabled: () => context.isProcessEnabled,
- node: <Route key="3" exact path="/JobsManagement"
component={JobsManagementPage} />,
+ node: <Route key="3" exact path="/Jobs" component={JobsManagementPage}
/>,
},
{
enabled: () => context.isProcessEnabled,
- node: <Route key="4" exact path="/TaskInbox" component={TaskInboxPage}
/>,
+ node: <Route key="4" exact path="/Tasks" component={TaskInboxPage} />,
},
{
enabled: () => context.isProcessEnabled,
diff --git
a/packages/runtime-tools-process-dev-ui-webapp/src/components/containers/TaskInboxContainer/TaskInboxContainer.tsx
b/packages/runtime-tools-process-dev-ui-webapp/src/components/containers/TaskInboxContainer/TaskInboxContainer.tsx
index b0e2e195e87..61e527ca871 100644
---
a/packages/runtime-tools-process-dev-ui-webapp/src/components/containers/TaskInboxContainer/TaskInboxContainer.tsx
+++
b/packages/runtime-tools-process-dev-ui-webapp/src/components/containers/TaskInboxContainer/TaskInboxContainer.tsx
@@ -54,7 +54,7 @@ const TaskInboxContainer: React.FC<OUIAProps> = ({ ouiaId,
ouiaSafe }) => {
return (
<EmbeddedTaskInbox
- {...componentOuiaProps(ouiaId, "task-inbox-container", ouiaSafe)}
+ {...componentOuiaProps(ouiaId, "tasks-container", ouiaSafe)}
initialState={gatewayApi.taskInboxState}
driver={gatewayApi}
allTaskStates={getAllTaskStates()}
diff --git
a/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/JobsManagementPage/JobsManagementPage.tsx
b/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/JobsManagementPage/JobsManagementPage.tsx
index a204ba3289b..d4c2c881da0 100644
---
a/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/JobsManagementPage/JobsManagementPage.tsx
+++
b/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/JobsManagementPage/JobsManagementPage.tsx
@@ -35,7 +35,7 @@ const JobsManagementPage: React.FC<OUIAProps> = ({ ouiaId,
ouiaSafe }) => {
return (
<React.Fragment>
- <PageSectionHeader titleText="Jobs Management" ouiaId={ouiaId} />
+ <PageSectionHeader titleText="Jobs" ouiaId={ouiaId} />
<PageSection {...componentOuiaProps(ouiaId,
"jobs-management-page-section", ouiaSafe)}>
<Card className="Dev-ui__card-size">
<JobsManagementContainer />
diff --git
a/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx
b/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx
index 04a2eb65a91..7be81daef6e 100644
---
a/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx
+++
b/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx
@@ -103,7 +103,7 @@ const TaskDetailsPage: React.FC<RouteComponentProps<Props>
& OUIAProps> = ({ oui
details: notificationDetails,
customActions: [
{
- label: "Go to Task Inbox",
+ label: "Go to Tasks",
onClick: () => {
setNotification(null);
goToInbox();
diff --git
a/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskInboxPage/TaskInboxPage.tsx
b/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskInboxPage/TaskInboxPage.tsx
index 3ee7a8a5c68..0aa9b2c3de1 100644
---
a/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskInboxPage/TaskInboxPage.tsx
+++
b/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskInboxPage/TaskInboxPage.tsx
@@ -35,7 +35,7 @@ const TaskInboxPage: React.FC<OUIAProps> = (ouiaId, ouiaSafe)
=> {
const appContext = useDevUIAppContext();
const user: string = appContext.getCurrentUser().id;
useEffect(() => {
- return ouiaPageTypeAndObjectId("task-inbox-page");
+ return ouiaPageTypeAndObjectId("tasks-page");
});
const renderTaskInbox = (): JSX.Element => {
@@ -46,18 +46,16 @@ const TaskInboxPage: React.FC<OUIAProps> = (ouiaId,
ouiaSafe) => {
<React.Fragment>
<PageSection
variant="light"
- {...componentOuiaProps("header" + (ouiaId ? "-" + ouiaId : ""),
"task-inbox-page", ouiaSafe)}
+ {...componentOuiaProps("header" + (ouiaId ? "-" + ouiaId : ""),
"tasks-page", ouiaSafe)}
>
<Grid>
<GridItem span={10}>
- <PageTitle title="Task Inbox" />
+ <PageTitle title="Tasks" />
</GridItem>
<GridItem span={2}>{user.length > 0 && <TaskInboxSwitchUser
user={user} />}</GridItem>
</Grid>
</PageSection>
- <PageSection
- {...componentOuiaProps("content" + (ouiaId ? "-" + ouiaId : ""),
"task-inbox-page-section", ouiaSafe)}
- >
+ <PageSection {...componentOuiaProps("content" + (ouiaId ? "-" + ouiaId :
""), "tasks-page-section", ouiaSafe)}>
<Card className="Dev-ui__card-size">{renderTaskInbox()}</Card>
</PageSection>
</React.Fragment>
diff --git
a/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskInboxPage/components/TaskInboxSwitchUser.tsx
b/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskInboxPage/components/TaskInboxSwitchUser.tsx
index 600e1ed8c40..24b37e96218 100644
---
a/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskInboxPage/components/TaskInboxSwitchUser.tsx
+++
b/packages/runtime-tools-process-dev-ui-webapp/src/components/pages/TaskInboxPage/components/TaskInboxSwitchUser.tsx
@@ -71,7 +71,7 @@ const TaskInboxSwitchUser: React.FC<IOwnProps & OUIAProps> =
({ user, ouiaId, ou
isPlain
dropdownItems={dropdownItems()}
className="DevUI-switchUser-dropdown-styling"
- {...componentOuiaProps(ouiaId, "task-inbox-switch-user", ouiaSafe)}
+ {...componentOuiaProps(ouiaId, "tasks-switch-user", ouiaSafe)}
/>
);
};
diff --git
a/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/JobsManagementEnvelope.tsx
b/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/JobsManagementEnvelope.tsx
index 0c32d7a585c..0fae898bd44 100644
---
a/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/JobsManagementEnvelope.tsx
+++
b/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/JobsManagementEnvelope.tsx
@@ -28,7 +28,7 @@ import { JobsManagementEnvelopeApiImpl } from
"./JobsManagementEnvelopeApiImpl";
/**
* Function that starts an Envelope application.
* @param args.config: This passes envelope div config
- * @param args.container: The HTML element in which the Jobs Management View
will render
+ * @param args.container: The HTML element in which the Jobs view will render
* @param args.bus: The implementation of a `bus` that knows how to send
messages to the Channel.
*
*/
diff --git
a/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/JobsManagementEnvelopeContext.ts
b/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/JobsManagementEnvelopeContext.ts
index 19ddbe4b104..7db7a55936b 100644
---
a/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/JobsManagementEnvelopeContext.ts
+++
b/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/JobsManagementEnvelopeContext.ts
@@ -16,9 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
+
/**
* This is a convenience class that the Envelope view can use.
- * Since the Jobs Management View is very simple, it's empty.
+ * Since the Jobs View is very simple, it's empty.
*/
// eslint-disable-next-line @typescript-eslint/no-empty-interface
diff --git
a/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/components/JobsManagementTable/JobsManagementTable.tsx
b/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/components/JobsManagementTable/JobsManagementTable.tsx
index 3823eecaeb1..1219a0b8d70 100644
---
a/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/components/JobsManagementTable/JobsManagementTable.tsx
+++
b/packages/runtime-tools-process-enveloped-components/src/jobsManagement/envelope/components/JobsManagementTable/JobsManagementTable.tsx
@@ -354,7 +354,7 @@ const JobsManagementTable:
React.FC<JobsManagementTableProps & OUIAProps> = ({
actionResolver={checkNotEmpty() ? actionResolver : undefined}
sortBy={sortBy}
onSort={onSort}
- aria-label="Jobs management Table"
+ aria-label="Jobs table"
className="kogito-jobs-management__table"
{...componentOuiaProps(ouiaId, "jobs-management-table", ouiaSafe)}
>
diff --git
a/packages/runtime-tools-process-enveloped-components/src/taskInbox/api/TaskInboxChannelApi.ts
b/packages/runtime-tools-process-enveloped-components/src/taskInbox/api/TaskInboxChannelApi.ts
index 075ccc341fa..39ac71eec06 100644
---
a/packages/runtime-tools-process-enveloped-components/src/taskInbox/api/TaskInboxChannelApi.ts
+++
b/packages/runtime-tools-process-enveloped-components/src/taskInbox/api/TaskInboxChannelApi.ts
@@ -20,7 +20,7 @@ import { UserTaskInstance } from
"@kie-tools/runtime-tools-process-gateway-api/d
import { QueryFilter, SortBy, TaskInboxState } from "./TaskInboxEnvelopeApi";
/**
- * Channel Api for Task Inbox
+ * Channel Api for Tasks
*/
export interface TaskInboxChannelApi {
/**
diff --git
a/packages/runtime-tools-process-enveloped-components/src/taskInbox/envelope/components/TaskInbox/TaskInbox.tsx
b/packages/runtime-tools-process-enveloped-components/src/taskInbox/envelope/components/TaskInbox/TaskInbox.tsx
index a06c55cb4a5..fb8b849ebb1 100644
---
a/packages/runtime-tools-process-enveloped-components/src/taskInbox/envelope/components/TaskInbox/TaskInbox.tsx
+++
b/packages/runtime-tools-process-enveloped-components/src/taskInbox/envelope/components/TaskInbox/TaskInbox.tsx
@@ -45,7 +45,7 @@ export interface TaskInboxProps {
const UserTaskLoadingComponent = (
<Bullseye>
- <KogitoSpinner spinnerText="Loading user tasks..."
ouiaId="task-inbox-loading-tasks" />
+ <KogitoSpinner spinnerText="Loading user tasks..."
ouiaId="tasks-loading-tasks" />
</Bullseye>
);
@@ -212,7 +212,7 @@ const TaskInbox: React.FC<TaskInboxProps & OUIAProps> = ({
};
return (
- <div {...componentOuiaProps(ouiaId, "task-inbox", ouiaSafe)}>
+ <div {...componentOuiaProps(ouiaId, "tasks", ouiaSafe)}>
<TaskInboxToolbar
activeFilter={queryFilter}
allTaskStates={allStates}
@@ -226,7 +226,7 @@ const TaskInbox: React.FC<TaskInboxProps & OUIAProps> = ({
title="No status is selected"
body="Try selecting at least one status to see results"
onClick={() => doApplyFilter({ taskStates: activeStates, taskNames:
[] })}
- ouiaId="task-inbox-no-status"
+ ouiaId="tasks-no-status"
/>
) : (
<>
diff --git
a/packages/runtime-tools-process-enveloped-components/src/taskInbox/envelope/components/TaskInboxToolbar/TaskInboxToolbar.tsx
b/packages/runtime-tools-process-enveloped-components/src/taskInbox/envelope/components/TaskInboxToolbar/TaskInboxToolbar.tsx
index 3a2a2008122..55cf641caa5 100644
---
a/packages/runtime-tools-process-enveloped-components/src/taskInbox/envelope/components/TaskInboxToolbar/TaskInboxToolbar.tsx
+++
b/packages/runtime-tools-process-enveloped-components/src/taskInbox/envelope/components/TaskInboxToolbar/TaskInboxToolbar.tsx
@@ -214,12 +214,12 @@ const TaskInboxToolbar: React.FC<TaskInboxToolbarProps &
OUIAProps> = ({
return (
<Toolbar
- id="task-inbox-with-filter"
+ id="tasks-with-filter"
className="pf-m-toggle-group-container"
collapseListedFiltersBreakpoint="xl"
clearAllFilters={doResetFilter}
clearFiltersButtonText="Reset to default"
- {...componentOuiaProps(ouiaId, "task-inbox-toolbar", ouiaSafe)}
+ {...componentOuiaProps(ouiaId, "tasks-toolbar", ouiaSafe)}
>
<ToolbarContent>{toolbarItems}</ToolbarContent>
</Toolbar>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]