The KIE Community is a home for leading Open Source projects that play a role in delivering solutions around Business Automation and Artificial Intelligence in the Cloud.
This repository contains tooling applications and libraries for KIE projects.
💡 RECOMMENDED
Nix development environment: A devbox configuration is provided to automatically setup all the tools below. Read more in here.
To build and test all packages of the Apache KIE Tools project, you're going to need:
20
(To install, follow these instructions: https://nodejs.org/en/download/package-manager/)9.3.0
(To install, follow these instructions: https://pnpm.io/installation#using-npm)3.9.6
17
1.22.9
(To install, follow these instructions: https://go.dev/doc/install)3.12
(To install, follow these instructions: https://www.python.org/downloads/)3.13.3
(To install, follow these instructions: https://helm.sh/docs/intro/install/)5.x
(On Linux or Nix you should be fine. On macOS, follow these instructions to use zsh: https://support.apple.com/102360)ℹ️ NOTE
If you plan on building container images, make sure you have a working Docker setup. Setting
KIE_TOOLS_BUILD__buildContainerImages=true
will also be necessary.
Bootstrapping installs the necessary dependencies for each package.
pnpm bootstrap
--> Will bootstrap all packagespnpm bootstrap [pnpm-filter]
--> Will bootstrap packages filtered by pnpm
filterE.g.,
pnpm bootstrap -F dmn-editor...
bootstraps thedmn-editor
package and its dependencies.
ℹ️ NOTE
If you plan on running Playwright tests, set the
PLAYWRIGHT_BASE__installDeps
environment variable totrue
before running the command above.
PLAYWRIGHT_BASE__installDeps=true pnpm bootstrap
.This will install all Playwright dependencies (such as browsers engines and OS-specific libraries).
Dev
pnpm -r build:dev
pnpm [pnpm-filter] build:dev
pnpm
filterE.g.,
pnpm -F dmn-editor... build:dev
builds thedmn-editor
package and its dependencies.
Prod
pnpm -r build:prod
pnpm [pnpm-filter] build:prod
pnpm
filterE.g.,
pnpm -F dmn-editor... build:prod
builds thedmn-editor
package and its dependencies.
Changed
pnpm -F '...[HEAD]' build:dev
; orpnpm -F '...[HEAD]' build:prod
ℹ️ NOTE
The Apache KIE Tools build is parameterized by several Environment Variables. For an extensive list of these variables, please see the list printed by the
bootstrap
step.
- To enable the examples build:
export KIE_TOOLS_BUILD__buildExamples=true
- To enable container images build:
export KIE_TOOLS_BUILD__buildContainerImages=true
- To enable E2E tests:
export KIE_TOOLS_BUILD__runEndToEndTests=true
ℹ️ NOTE
Final artifacts will be in
{packages,examples}/*/dist
directories.
It is mandatory that any maven-based package that releases artifacts runs Reproducible Builds to build it's artifacts, in this case, in our build:prod
scripts.
@kie-tools/maven-base
provides the reproducible-build
maven
profile to enable Reproducible Builds in our builds. To use it follow the steps:
package.json
depends on @kie-tools/maven-base
:{ "dependencies": { "@kie-tools/maven-base": "workspace:*" } }
pom.xml
has kie-tools-maven-base
as a parent and declares the project.build.outputTimestamp
property like:<project> <parent> <groupId>org.kie</groupId> <artifactId>kie-tools-maven-base</artifactId> <version>${revision}</version> <relativePath>./node_modules/@kie-tools/maven-base/pom.xml</relativePath> </parent> ... <properties> <project.build.outputTimestamp>2024-01-12T00:00:00Z</project.build.outputTimestamp> </properties> ... <projec>
package.json
scripts, enable the Reproducible Build profile adding the -Dreproducible
argument in build:prod
scripts, like:{ "scripts": { "build:prod": "pnpm lint && run-script-os", "build:prod:darwin:linux": "mvn clean deploy [...other maven options...] -Dreproducible", "build:prod:win32": "pnpm powershell \"mvn clean deploy [...other maven options...] `-Dreproducible\"" } }
IMPORTANT: the current version of the
maven-artifact-plugin
(3.4.1) used inkie-tools
bans themaven-flatten-plugin
that we use to generate deployable artifacts using the dynamic${revision}
variable. You can check the full list of banned plugins here. The issue that caused the ban flatten-maven-plugin/issues/256 was a result of change inmaven
behaviour betweenv3.8.1
andv3.8.2
, and isn't a problem on themaven-flatten-plugin
. Actually, in later versions of themaven-artifact-plugin
the ban got revoked. Having this in mind, and due to the fact thatkie-tools
requires newermaven
versions, our Reproducible Builds require temporarily overriding the list of banned plugins, until we upgrade to a newermaven-artifact-plugin
version. This will be addressed by https://github.com/apache/incubator-kie-issues/issues/1371
The Apache KIE Tools project contains several applications. To develop each one of them individually, refer to the instructions below.
packages/kie-editors-dev-vscode-extension
folder on VS Code. Use a new VS Code window so that the packages/kie-editors-dev-vscode-extension
folder shows up as root in the VS Code explorer.Debug
menu/section. You can also use the respective shortcuts (F5 to start debugging, for instance).webpack
and webpack-cli
to be globally installed on NPM. Normally you can do that with npm install -g webpack@^5.92.1 webpack-cli@^4.10.0
, but sudo
may be required depending on your installation.packages/kie-editors-dev-vscode-extension
, you have to manually rebuild them before relaunching the extension on VS Code.packages/serverless-workflow-vscode-extension
folder on VS Code. Use a new VS Code window so that the packages/serverless-workflow-vscode-extension
folder shows up as root in the VS Code explorer.Debug
menu/section. You can also use the respective shortcuts (F5 to start debugging, for instance).packages/serverless-workflow-vscode-extension
, you have to manually rebuild them before relaunching the extension on VS Code.packages/chrome-extension-pack-kogito-kie-editors
folder on your favourite IDE. You can import the entire repo as well if you want to make changes to other packages.pnpm build:dev
on packages/chrome-extension-pack-kogito-kie-editors
. This will create a version of the Chrome Extension that fetches the envelope locally.pnpm start
on packages/chrome-extension-pack-kogito-kie-editors
. This will start a webpack serve
instance with the editors and their envelope. We use that because we don't pack the Chrome Extension bundle with the editors inside. Instead, we fetch them from GitHub pages.chrome://flags/#temporary-unexpire-flags-m118
in your Chrome browser, enable this flag and restart browser. Then go to chrome://flags/#allow-insecure-localhost
in your Chrome browser and enable also this flag. Alternativelly, you can go to https://localhost:9001
and add an exception.chrome://extensions
. Enable “Developer mode” in the top-right corner and click on “Load unpacked”. Choose the packages/chrome-extension-pack-kogito-kie-editors/dist
folder.packages/chrome-extension-serverless-workflow-editor
folder on your favourite IDE. You can import the entire repo as well if you want to make changes to other packages.pnpm build:dev
on packages/chrome-extension-serverless-workflow-editor
. This will create a version of the Chrome Extension that fetches the envelope locally.pnpm start
on packages/chrome-extension-serverless-workflow-editor
. This will start a webpack serve
instance with the editors and their envelope. We use that because we don't pack the Chrome Extension bundle with the editors inside. Instead, we fetch them from GitHub pages.chrome://flags/#temporary-unexpire-flags-m118
in your Chrome browser, enable this flag and restart browser. Then go to chrome://flags/#allow-insecure-localhost
in your Chrome browser and enable also this flag. Alternativelly, you can go to https://localhost:9000
and add an exception.chrome://extensions
. Enable “Developer mode” in the top-right corner and click on “Load unpacked”. Choose the packages/chrome-extension-serverless-workflow-editor/dist
folder.packages/online-editor
.pnpm start
. This will start a webpack serve
instance with the Online Editor resources.https://localhost:9001
.pnpm start
at packages/cors-proxy
.packages/serverless-logic-web-tools
.pnpm start
. This will start a webpack serve
instance with the Serverless Logic Web Tools resources.https://localhost:9020
.pnpm start
at packages/cors-proxy
.pnpm start
at packages/sonataflow-dev-app
, then open https://localhost:9020/#/settings/runtime-tools
and set http://localhost:4000/graphql
in the “Data Index URL” fieldpackages/kie-editors-standalone
.pnpm start
. This will start a webpack serve
instance with the Standalone Editors test page.https://localhost:9001/resources/dmn
and the Standalone BPMN Editor by accessing https://localhost:9001/resources/bpmn
.The stunner-editors
package contains the BPMN, DMN, and SceSim Editors that are used in many applications of Apache KIE Tools. After cloning the repo, start with a fresh build.
pnpm bootstrap -F @kie-tools/stunner-editors...
pnpm -F @kie-tools/stunner-editors... build:dev
After that, you're ready to start developing the Editors individually.
BPMN
packages/stunner-editors/kie-wb-common-stunner/kie-wb-common-stunner-sets/kie-wb-common-stunner-bpmn/kie-wb-common-stunner-bpmn-kogito-runtime
.mvn clean gwt:run
to start. To enable live-reloading capability, run mvn clean gwt:run -Phot-reload
DMN
packages/stunner-editors/kie-wb-common-dmn/kie-wb-common-dmn-webapp-kogito-runtime
.mvn clean gwt:run
to start. To enable live-reloading capability, run mvn clean gwt:run -Phot-reload
Test Scenario (SceSim)
packages/stunner-editors/drools-wb-screens/drools-wb-scenario-simulation-editor/drools-wb-scenario-simulation-editor-kogito-testing
.mvn clean gwt:run
to start.