├── .gitignore ├── LICENSE ├── README.md ├── base ├── Dockerfile ├── README.md ├── build.sh ├── etc │ ├── jboss-all.xml │ └── start_jbpm-wb.sh └── start.sh ├── docker-compose-examples ├── grafana │ └── provisioning │ │ ├── dashboards │ │ ├── dashboard.yml │ │ ├── jBPM Dashboard.json │ │ └── jBPM Kie Server Jobs.json │ │ ├── datasources │ │ └── datasource.yml │ │ └── notifiers │ │ └── .gitkeep ├── jbpm-full-mysql.yml ├── jbpm-full-postgres.yml ├── jbpm-kie-server-prometheus-grafana.yml ├── jbpm-kie-server.yml └── prometheus │ └── prometheus.yml ├── server ├── Dockerfile ├── README.md ├── build.sh ├── etc │ ├── start_jbpm-wb.sh │ └── update_db_config.sh └── start.sh └── showcase ├── Dockerfile ├── README.md ├── build.sh ├── etc ├── application-roles.properties ├── application-users.properties └── jbpm-custom.cli └── start.sh /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /local 3 | 4 | # Eclipse, Netbeans and IntelliJ files 5 | /.* 6 | !.gitignore 7 | !.gitattributes 8 | /nbproject 9 | /*.ipr 10 | /*.iws 11 | /*.iml 12 | 13 | # Repository wide ignore mac DS_Store files 14 | .DS_Store 15 | 16 | # Docker pid file 17 | docker.pid -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 JBoss Dockerfiles 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | jBPM Workbench Docker images 2 | ============================ 3 | 4 | JBoss jBPM Workbench [Docker](http://docker.io/) images. 5 | 6 | This module provides the community jBPM Workbench images. 7 | 8 | There are two available images: 9 | 10 | **jBPM Workbench** 11 | 12 | It's the base Docker image for jBPM Workbench. It's purpose is to be used as base for extending and creating your own images that uses jBPM Workbench. 13 | 14 | **jBPM Workbench showcase** 15 | 16 | It inherits from jBPM Workbench image and provides a **ready to run Docker image for jBPM Workbench**. 17 | It provides some custom configurations and default users and roles to try and test the workbench. 18 | 19 | **jBPM Server Full distribution** 20 | 21 | Provides a **ready to run Docker image for jBPM server full** with all necessary configurations between services. 22 | Deployed applications include: jBPM Workbench, Kie Server and jBPM Case Management Showcase. 23 | For more information, please visit the [Getting Started Guide](http://jbpm.org/learn/gettingStarted.html) 24 | It provides some custom configurations and default users and roles to try and test the workbench. 25 | -------------------------------------------------------------------------------- /base/Dockerfile: -------------------------------------------------------------------------------- 1 | ########################################################################### 2 | # Dockerfile that provides the image for JBoss jBPM Workbench 7.18.0.Final 3 | ########################################################################### 4 | 5 | ####### BASE ############ 6 | FROM jboss/wildfly:14.0.1.Final 7 | 8 | ####### MAINTAINER ############ 9 | MAINTAINER "Michael Biarnes Kiefer" "mbiarnes@redhat.com" 10 | 11 | ####### ENVIRONMENT ############ 12 | ENV JBOSS_BIND_ADDRESS 0.0.0.0 13 | ENV KIE_REPOSITORY https://repository.jboss.org/nexus/content/groups/public-jboss 14 | ENV KIE_VERSION 7.18.0.Final 15 | ENV KIE_CLASSIFIER wildfly14 16 | ENV KIE_CONTEXT_PATH business-central 17 | ENV JAVA_OPTS -Xms256m -Xmx2048m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 18 | ENV KIE_SERVER_PROFILE standalone 19 | 20 | ####### JBPM-WB ############ 21 | RUN curl -o $HOME/$KIE_CONTEXT_PATH.war $KIE_REPOSITORY/org/kie/business-central/$KIE_VERSION/business-central-$KIE_VERSION-$KIE_CLASSIFIER.war && \ 22 | unzip -q $HOME/$KIE_CONTEXT_PATH.war -d $JBOSS_HOME/standalone/deployments/$KIE_CONTEXT_PATH.war && \ 23 | touch $JBOSS_HOME/standalone/deployments/$KIE_CONTEXT_PATH.war.dodeploy && \ 24 | rm -rf $HOME/$KIE_CONTEXT_PATH.war 25 | 26 | ####### CONFIGURATION ############ 27 | USER root 28 | ADD etc/start_jbpm-wb.sh $JBOSS_HOME/bin/start_jbpm-wb.sh 29 | RUN chown jboss:jboss $JBOSS_HOME/standalone/deployments/* 30 | RUN chown jboss:jboss $JBOSS_HOME/bin/start_jbpm-wb.sh 31 | 32 | ####### CUSTOM JBOSS USER ############ 33 | # Switchback to jboss user 34 | USER jboss 35 | 36 | ####### EXPOSE INTERNAL JBPM GIT PORT ############ 37 | EXPOSE 8001 38 | 39 | ####### RUNNING JBPM-WB ############ 40 | WORKDIR $JBOSS_HOME/bin/ 41 | CMD ["./start_jbpm-wb.sh"] 42 | -------------------------------------------------------------------------------- /base/README.md: -------------------------------------------------------------------------------- 1 | jBPM Workbench Docker image 2 | ============================ 3 | 4 | JBoss jBPM Workbench [Docker](http://docker.io/) image. 5 | 6 | Table of contents 7 | ------------------ 8 | 9 | * Introduction 10 | * Usage 11 | * Users and roles 12 | * Logging 13 | * GIT internal repository 14 | * Experimenting 15 | * Extending this image 16 | * Notes 17 | * Release notes 18 | 19 | Introduction 20 | ------------ 21 | 22 | The image contains: 23 | 24 | * JBoss Wildfly 14.0.1.Final 25 | * jBPM Workbench 7.18.0.Final 26 | 27 | This image provides the jBPM Workbench. It's intended to be extended so you can add your custom configurations. 28 | 29 | If you don't want to extend this image and you just want to try jBPM Workbench take a look at the `jboss/jbpm-workbench-showcase:latest` Docker image, it contains some default configurations. 30 | 31 | Usage 32 | ----- 33 | 34 | To run a container: 35 | 36 | docker run -p 8080:8080 -p 8001:8001 -d --name jbpm-workbench jboss/jbpm-workbench:latest 37 | 38 | Once container and web applications started, you can navigate into the jBPM Workbench at: 39 | 40 | http://localhost:8080/business-central 41 | 42 | Users and roles 43 | ---------------- 44 | 45 | The application have no users or roles configured, so you cannot not access it by default, 46 | 47 | In order to use it, at least you have to create an application user in JBoss Wildfly with role `admin`. 48 | 49 | If you are looking for a jBPM Workbench image that does not require to add custom configurations, try our `jboss/jbpm-workbench-showcase:latest` Docker image. 50 | 51 | If you want to create your custom configuration and users, role, etc, you can take a look at section `Extending this image` 52 | 53 | 54 | Logging 55 | ------- 56 | 57 | You can see all logs generated by the `standalone` binary running: 58 | 59 | docker logs [-f] 60 | 61 | You can attach the container by running: 62 | 63 | docker attach 64 | 65 | The jBPM Workbench web application logs can be found inside the container at path: 66 | 67 | /opt/jboss/wildfly/standalone/log/server.log 68 | 69 | Example: 70 | sudo nsenter -t $(docker inspect --format '{{ .State.Pid }}' $(docker ps -lq)) -m -u -i -n -p -w 71 | -bash-4.2# tail -f /opt/jboss/wildfly/standalone/log/server.log 72 | 73 | GIT internal repository 74 | ----------------------- 75 | 76 | The workbench stores all the project artifacts in an internal GIT repository. By default, the protocol available for accessing the GIT repository is `SSH` at port `8001`. 77 | 78 | You can clone the GIT repository by running: 79 | 80 | git clone ssh://admin@localhost:8001/system 81 | 82 | By default, the GIT repository is created when the application starts for first time at `$WORKING_DIR/.niogit`, considering `$WORKING_DIR` as the current directory where the application server is started. 83 | 84 | You can specify a custom repository location by setting the following Java system property to your target file system directory: 85 | 86 | -Dorg.uberfire.nio.git.dir=/home/youruser/some/path 87 | 88 | NOTE: This directory can be shared with your docker host and with another containers using shared volumes when running the container, if you need so. 89 | 90 | If necessary you can make GIT repositories available from outside localhost using the following Java system property: 91 | 92 | -org.uberfire.nio.git.ssh.host=0.0.0.0 93 | 94 | You can set this Java system properties permanent by adding the following lines in your `standalone-full.xml` file as: 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | NOTE: Users and password for ssh access are the same that for the web application users defined at the realm files. 104 | 105 | Extending this image 106 | -------------------- 107 | 108 | You can extend this image and add your custom layers in order to add custom configurations, users, roles, etc. 109 | 110 | In order to extend this image, your Dockerfile must inherit from: 111 | 112 | FROM jboss/jbpm-workbench:latest 113 | 114 | **Configuring Wildfly** 115 | 116 | * The Wildfly configuration files are located at `/opt/jboss/wildfly/standalone/configuration` 117 | * In this file you can modify all Wildfly's subsystem configurations 118 | * jBPM Workbench requires running Wildfly using `full` profile, so custom modifications should be done in `standalone-full.xml` configuration file 119 | 120 | **Users and roles** 121 | 122 | * By default this image does not provide users and roles for jBPM Workbench 123 | 124 | * The available roles for jBPM Workbench examples are: 125 | 126 | ROLE DESCRIPTION 127 | ************************************************* 128 | admin The administrator 129 | analyst The analyst 130 | developer The developer 131 | manager The manager 132 | user The end user 133 | kiemgmt KIE management user 134 | Accounting Accounting role 135 | PM Project manager role 136 | HR Human resources role 137 | sales Sales role 138 | IT IT role 139 | 140 | These are the steps to create your custom users and roles by using realm files in Widlfly: 141 | 142 | 1.- Create a realm properties file for users and deploy it in `/opt/jboss/wildfly/standalone/configuration`: 143 | 144 | jbpm-users.properties 145 | --------------------- 146 | #admin=admin 147 | admin=207b6e0cc556d7084b5e2db7d822555c 148 | #analyst=analyst 149 | analyst=047ca331957b5ce5021e8e01d3322a13 150 | #developer=developer 151 | developer=97df44a197a58de9674af3cd139df47e 152 | #manager=manager 153 | manager=e5148a68341fbc5afbe08fb4ab6da2c5 154 | #user=user 155 | user=c5568adea472163dfc00c19c6348a665 156 | 157 | 2.- Create a realm properties file for roles and deploy it in `/opt/jboss/wildfly/standalone/configuration`: 158 | 159 | jbpm-roles.properties 160 | --------------------- 161 | admin=admin 162 | analyst=analyst 163 | developer=developer 164 | manager=manager 165 | user=user 166 | 167 | 3.- Modify your `standalone-full.xml` in order to: 168 | 169 | 3.1 - In the `management` section, modify default the security-realm for the `ApplicationRealm` as: 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 3.2 - In the `security` subsystem, modify default the `other` security-domain for as: 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | You can find an example by looking at the Dockerfile for `jboss/jbpm-workbench-showcase:latest` image. 196 | 197 | Experimenting 198 | ------------- 199 | 200 | To spin up a shell in one of the containers try: 201 | 202 | docker run -t -i -p 8080:8080 -p 8001:8001 jboss/jbpm-workbench:latest /bin/bash 203 | 204 | You can then noodle around the container and run stuff & look at files etc. 205 | 206 | 207 | Troubleshoot 208 | ------------ 209 | 210 | If the application can't be accessed via browser (http://localhost:8080/business-central) please run the container in [host network mode](https://docs.docker.com/engine/reference/run/#network-settings). It seems that latest docker versions have some restrictions on the networking side. Using an older daemon version this does not happen. 211 | Try: 212 | 213 | docker run .... --network="host .." 214 | 215 | 216 | Notes 217 | ----- 218 | 219 | * The context path for jBPM Workbench web application is `business-central` 220 | * jBPM Workbench version is `7.18.0.Final` 221 | * jBPM Workbench requires running JBoss Wildfly 14.0.1.Final using the `full` server profile 222 | * No users or roles are configured by default 223 | * No support for clustering 224 | * Use of embedded H2 database server by default 225 | * No support for Wildfly domain mode, just standalone mode 226 | * This image is not intended to be run on cloud environments such as RedHat OpenShift or Amazon EC2, as it does not meet all the requirements. 227 | * Please give us your feedback or report a issue at [Drools Setup](https://groups.google.com/forum/#!forum/drools-setup) or [Drools Usage](https://groups.google.com/forum/#!forum/drools-usage) Google groups. 228 | 229 | Release notes 230 | -------------- 231 | 232 | **7.18.0.Final** 233 | 234 | * See release notes for [jBPM](http://docs.jboss.org/jbpm/release/7.18.0.Final/jbpm-docs/html_single/#_jbpmreleasenotes) 235 | -------------------------------------------------------------------------------- /base/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ****************************************** 4 | # jBPM Workbench - Docker image build script 5 | # ****************************************** 6 | 7 | IMAGE_NAME="jboss/jbpm-workbench" 8 | IMAGE_TAG="latest" 9 | 10 | 11 | # Build the container image. 12 | echo "Building the Docker container for $IMAGE_NAME:$IMAGE_TAG.." 13 | docker build --rm -t $IMAGE_NAME:$IMAGE_TAG . 14 | echo "Build done" 15 | -------------------------------------------------------------------------------- /base/etc/jboss-all.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /base/etc/start_jbpm-wb.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Start Wildfly with the given arguments. 4 | echo "Running jBPM Workbench on JBoss Wildfly..." 5 | exec ./standalone.sh -b $JBOSS_BIND_ADDRESS -c $KIE_SERVER_PROFILE.xml -Dorg.kie.demo=$KIE_DEMO -Dorg.kie.example=$KIE_DEMO 6 | exit $? 7 | -------------------------------------------------------------------------------- /base/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # ****************************************** 4 | # jBPM Workbench - Docker image start script 5 | # ****************************************** 6 | 7 | # Program arguments 8 | # 9 | # -c | --container-name: The name for the created container. 10 | # If not specified, defaults to "jbpm-workbench" 11 | # -h | --help; Show the script usage 12 | # 13 | 14 | CONTAINER_NAME="jbpm-workbench" 15 | IMAGE_NAME="jboss/jbpm-workbench" 16 | IMAGE_TAG="latest" 17 | 18 | 19 | 20 | function usage 21 | { 22 | echo "usage: start.sh [ [-c ] ] [-h]]" 23 | } 24 | 25 | while [ "$1" != "" ]; do 26 | case $1 in 27 | -c | --container-name ) shift 28 | CONTAINER_NAME=$1 29 | ;; 30 | -h | --help ) usage 31 | exit 32 | ;; 33 | * ) usage 34 | exit 1 35 | esac 36 | shift 37 | done 38 | 39 | # Check if container is already started 40 | if [ -f docker.pid ]; then 41 | echo "Container already started" 42 | container_id=$(cat docker.pid) 43 | echo "Stopping container $container_id..." 44 | docker stop $container_id 45 | rm -f docker.pid 46 | fi 47 | 48 | # Start the JBoss jBPM Workbench docker container 49 | echo "Starting $CONTAINER_NAME docker container using:" 50 | echo "** Container name: $CONTAINER_NAME" 51 | image_jbpm_workbench=$(docker run -P -d --name $CONTAINER_NAME $IMAGE_NAME:$IMAGE_TAG) 52 | ip_jbpm_workbench=$(docker inspect $image_jbpm_workbench | grep \"IPAddress\" | awk '{print $2}' | tr -d '",') 53 | echo $image_jbpm_workbench > docker.pid 54 | 55 | # End 56 | echo "" 57 | echo "Server starting in $ip_jbpm_workbench" 58 | echo "You can access the server root context in http://$ip_jbpm_workbench:8080" 59 | echo "JBoss jBPM Workbench is running at http://$ip_jbpm_workbench:8080/business-central" 60 | 61 | exit 0 62 | -------------------------------------------------------------------------------- /docker-compose-examples/grafana/provisioning/dashboards/dashboard.yml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | providers: 4 | - name: 'Prometheus' 5 | orgId: 1 6 | folder: '' 7 | type: file 8 | disableDeletion: false 9 | editable: true 10 | options: 11 | path: /etc/grafana/provisioning/dashboards 12 | -------------------------------------------------------------------------------- /docker-compose-examples/grafana/provisioning/dashboards/jBPM Dashboard.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "builtIn": 1, 6 | "datasource": "-- Grafana --", 7 | "enable": true, 8 | "hide": true, 9 | "iconColor": "rgba(0, 211, 255, 1)", 10 | "name": "Annotations & Alerts", 11 | "type": "dashboard" 12 | } 13 | ] 14 | }, 15 | "editable": true, 16 | "gnetId": null, 17 | "graphTooltip": 0, 18 | "id": 1, 19 | "links": [], 20 | "panels": [ 21 | { 22 | "cacheTimeout": null, 23 | "colorBackground": false, 24 | "colorPostfix": false, 25 | "colorPrefix": false, 26 | "colorValue": true, 27 | "colors": [ 28 | "#5794F2", 29 | "#F2495C", 30 | "#73BF69" 31 | ], 32 | "decimals": null, 33 | "format": "none", 34 | "gauge": { 35 | "maxValue": 100, 36 | "minValue": 0, 37 | "show": false, 38 | "thresholdLabels": false, 39 | "thresholdMarkers": true 40 | }, 41 | "gridPos": { 42 | "h": 4, 43 | "w": 3, 44 | "x": 0, 45 | "y": 0 46 | }, 47 | "id": 5, 48 | "interval": null, 49 | "links": [], 50 | "mappingType": 1, 51 | "mappingTypes": [ 52 | { 53 | "name": "value to text", 54 | "value": 1 55 | }, 56 | { 57 | "name": "range to text", 58 | "value": 2 59 | } 60 | ], 61 | "maxDataPoints": 100, 62 | "nullPointMode": "connected", 63 | "nullText": null, 64 | "postfix": "", 65 | "postfixFontSize": "50%", 66 | "prefix": "", 67 | "prefixFontSize": "50%", 68 | "rangeMaps": [ 69 | { 70 | "from": "null", 71 | "text": "N/A", 72 | "to": "null" 73 | } 74 | ], 75 | "sparkline": { 76 | "fillColor": "rgba(31, 118, 189, 0.18)", 77 | "full": false, 78 | "lineColor": "rgb(31, 120, 193)", 79 | "show": false 80 | }, 81 | "tableColumn": "", 82 | "targets": [ 83 | { 84 | "expr": "up{job=\"kie-server\"}", 85 | "format": "time_series", 86 | "intervalFactor": 1, 87 | "legendFormat": "", 88 | "refId": "A" 89 | } 90 | ], 91 | "thresholds": "0,1", 92 | "timeFrom": null, 93 | "timeShift": null, 94 | "title": "Kie Server State", 95 | "type": "singlestat", 96 | "valueFontSize": "80%", 97 | "valueMaps": [ 98 | { 99 | "op": "=", 100 | "text": "N/A", 101 | "value": "null" 102 | }, 103 | { 104 | "op": "=", 105 | "text": "DOWN", 106 | "value": "0" 107 | }, 108 | { 109 | "op": "=", 110 | "text": "UP", 111 | "value": "1" 112 | } 113 | ], 114 | "valueName": "current" 115 | }, 116 | { 117 | "cacheTimeout": null, 118 | "colorBackground": false, 119 | "colorValue": false, 120 | "colors": [ 121 | "#299c46", 122 | "rgba(237, 129, 40, 0.89)", 123 | "#d44a3a" 124 | ], 125 | "decimals": 0, 126 | "format": "dateTimeFromNow", 127 | "gauge": { 128 | "maxValue": 100, 129 | "minValue": 0, 130 | "show": false, 131 | "thresholdLabels": false, 132 | "thresholdMarkers": true 133 | }, 134 | "gridPos": { 135 | "h": 4, 136 | "w": 3, 137 | "x": 3, 138 | "y": 0 139 | }, 140 | "id": 7, 141 | "interval": null, 142 | "links": [], 143 | "mappingType": 1, 144 | "mappingTypes": [ 145 | { 146 | "name": "value to text", 147 | "value": 1 148 | }, 149 | { 150 | "name": "range to text", 151 | "value": 2 152 | } 153 | ], 154 | "maxDataPoints": 100, 155 | "nullPointMode": "connected", 156 | "nullText": null, 157 | "postfix": "", 158 | "postfixFontSize": "50%", 159 | "prefix": "", 160 | "prefixFontSize": "50%", 161 | "rangeMaps": [ 162 | { 163 | "from": "null", 164 | "text": "N/A", 165 | "to": "null" 166 | } 167 | ], 168 | "sparkline": { 169 | "fillColor": "rgba(31, 118, 189, 0.18)", 170 | "full": false, 171 | "lineColor": "rgb(31, 120, 193)", 172 | "show": false 173 | }, 174 | "tableColumn": "", 175 | "targets": [ 176 | { 177 | "expr": "kie_server_start_time", 178 | "format": "time_series", 179 | "instant": true, 180 | "intervalFactor": 1, 181 | "legendFormat": "", 182 | "refId": "A" 183 | } 184 | ], 185 | "thresholds": "", 186 | "timeFrom": null, 187 | "timeShift": null, 188 | "title": "Kie Server Start TIme", 189 | "type": "singlestat", 190 | "valueFontSize": "80%", 191 | "valueMaps": [ 192 | { 193 | "op": "=", 194 | "text": "N/A", 195 | "value": "null" 196 | } 197 | ], 198 | "valueName": "current" 199 | }, 200 | { 201 | "cacheTimeout": null, 202 | "colorBackground": false, 203 | "colorValue": false, 204 | "colors": [ 205 | "#299c46", 206 | "rgba(237, 129, 40, 0.89)", 207 | "#d44a3a" 208 | ], 209 | "decimals": 0, 210 | "description": "", 211 | "format": "short", 212 | "gauge": { 213 | "maxValue": 100, 214 | "minValue": 0, 215 | "show": false, 216 | "thresholdLabels": false, 217 | "thresholdMarkers": true 218 | }, 219 | "gridPos": { 220 | "h": 4, 221 | "w": 3, 222 | "x": 6, 223 | "y": 0 224 | }, 225 | "id": 2, 226 | "interval": null, 227 | "links": [], 228 | "mappingType": 1, 229 | "mappingTypes": [ 230 | { 231 | "name": "value to text", 232 | "value": 1 233 | }, 234 | { 235 | "name": "range to text", 236 | "value": 2 237 | } 238 | ], 239 | "maxDataPoints": 100, 240 | "nullPointMode": "connected", 241 | "nullText": null, 242 | "postfix": "", 243 | "postfixFontSize": "50%", 244 | "prefix": "", 245 | "prefixFontSize": "50%", 246 | "rangeMaps": [ 247 | { 248 | "from": "null", 249 | "text": "N/A", 250 | "to": "null" 251 | } 252 | ], 253 | "sparkline": { 254 | "fillColor": "rgba(31, 118, 189, 0.18)", 255 | "full": false, 256 | "lineColor": "rgb(31, 120, 193)", 257 | "show": true 258 | }, 259 | "tableColumn": "", 260 | "targets": [ 261 | { 262 | "expr": "sum(kie_server_container_running_total)", 263 | "format": "time_series", 264 | "instant": true, 265 | "intervalFactor": 1, 266 | "legendFormat": "", 267 | "refId": "A" 268 | } 269 | ], 270 | "thresholds": "", 271 | "timeFrom": null, 272 | "timeShift": null, 273 | "title": "Active Containers", 274 | "type": "singlestat", 275 | "valueFontSize": "80%", 276 | "valueMaps": [ 277 | { 278 | "op": "=", 279 | "text": "0", 280 | "value": "null" 281 | } 282 | ], 283 | "valueName": "current" 284 | }, 285 | { 286 | "cacheTimeout": null, 287 | "colorBackground": false, 288 | "colorValue": false, 289 | "colors": [ 290 | "#299c46", 291 | "rgba(237, 129, 40, 0.89)", 292 | "#d44a3a" 293 | ], 294 | "decimals": 0, 295 | "description": "", 296 | "format": "short", 297 | "gauge": { 298 | "maxValue": 100, 299 | "minValue": 0, 300 | "show": false, 301 | "thresholdLabels": false, 302 | "thresholdMarkers": true 303 | }, 304 | "gridPos": { 305 | "h": 4, 306 | "w": 3, 307 | "x": 9, 308 | "y": 0 309 | }, 310 | "id": 16, 311 | "interval": null, 312 | "links": [], 313 | "mappingType": 1, 314 | "mappingTypes": [ 315 | { 316 | "name": "value to text", 317 | "value": 1 318 | }, 319 | { 320 | "name": "range to text", 321 | "value": 2 322 | } 323 | ], 324 | "maxDataPoints": 100, 325 | "nullPointMode": "connected", 326 | "nullText": null, 327 | "postfix": "", 328 | "postfixFontSize": "50%", 329 | "prefix": "", 330 | "prefixFontSize": "50%", 331 | "rangeMaps": [ 332 | { 333 | "from": "null", 334 | "text": "N/A", 335 | "to": "null" 336 | } 337 | ], 338 | "sparkline": { 339 | "fillColor": "rgba(31, 118, 189, 0.18)", 340 | "full": false, 341 | "lineColor": "rgb(31, 120, 193)", 342 | "show": true 343 | }, 344 | "tableColumn": "", 345 | "targets": [ 346 | { 347 | "expr": "sum(kie_server_deployments_active_total)", 348 | "format": "time_series", 349 | "instant": true, 350 | "intervalFactor": 1, 351 | "legendFormat": "", 352 | "refId": "A" 353 | } 354 | ], 355 | "thresholds": "", 356 | "timeFrom": null, 357 | "timeShift": null, 358 | "title": "Active Deployments", 359 | "type": "singlestat", 360 | "valueFontSize": "80%", 361 | "valueMaps": [ 362 | { 363 | "op": "=", 364 | "text": "0", 365 | "value": "null" 366 | } 367 | ], 368 | "valueName": "current" 369 | }, 370 | { 371 | "cacheTimeout": null, 372 | "colorBackground": false, 373 | "colorValue": false, 374 | "colors": [ 375 | "#299c46", 376 | "rgba(237, 129, 40, 0.89)", 377 | "#d44a3a" 378 | ], 379 | "format": "none", 380 | "gauge": { 381 | "maxValue": 100, 382 | "minValue": 0, 383 | "show": false, 384 | "thresholdLabels": false, 385 | "thresholdMarkers": true 386 | }, 387 | "gridPos": { 388 | "h": 4, 389 | "w": 3, 390 | "x": 12, 391 | "y": 0 392 | }, 393 | "id": 9, 394 | "interval": null, 395 | "links": [], 396 | "mappingType": 1, 397 | "mappingTypes": [ 398 | { 399 | "name": "value to text", 400 | "value": 1 401 | }, 402 | { 403 | "name": "range to text", 404 | "value": 2 405 | } 406 | ], 407 | "maxDataPoints": 100, 408 | "nullPointMode": "connected", 409 | "nullText": null, 410 | "postfix": "", 411 | "postfixFontSize": "50%", 412 | "prefix": "", 413 | "prefixFontSize": "50%", 414 | "rangeMaps": [ 415 | { 416 | "from": "null", 417 | "text": "N/A", 418 | "to": "null" 419 | } 420 | ], 421 | "sparkline": { 422 | "fillColor": "rgba(31, 118, 189, 0.18)", 423 | "full": false, 424 | "lineColor": "rgb(31, 120, 193)", 425 | "show": true 426 | }, 427 | "tableColumn": "", 428 | "targets": [ 429 | { 430 | "expr": "sum(kie_server_job_running_total)", 431 | "format": "time_series", 432 | "intervalFactor": 1, 433 | "refId": "A" 434 | } 435 | ], 436 | "thresholds": "", 437 | "timeFrom": null, 438 | "timeShift": null, 439 | "title": "Running Jobs", 440 | "type": "singlestat", 441 | "valueFontSize": "80%", 442 | "valueMaps": [ 443 | { 444 | "op": "=", 445 | "text": "0", 446 | "value": "null" 447 | } 448 | ], 449 | "valueName": "current" 450 | }, 451 | { 452 | "cacheTimeout": null, 453 | "colorBackground": false, 454 | "colorValue": false, 455 | "colors": [ 456 | "#299c46", 457 | "rgba(237, 129, 40, 0.89)", 458 | "#d44a3a" 459 | ], 460 | "format": "none", 461 | "gauge": { 462 | "maxValue": 100, 463 | "minValue": 0, 464 | "show": false, 465 | "thresholdLabels": false, 466 | "thresholdMarkers": true 467 | }, 468 | "gridPos": { 469 | "h": 4, 470 | "w": 3, 471 | "x": 15, 472 | "y": 0 473 | }, 474 | "id": 18, 475 | "interval": null, 476 | "links": [], 477 | "mappingType": 1, 478 | "mappingTypes": [ 479 | { 480 | "name": "value to text", 481 | "value": 1 482 | }, 483 | { 484 | "name": "range to text", 485 | "value": 2 486 | } 487 | ], 488 | "maxDataPoints": 100, 489 | "nullPointMode": "connected", 490 | "nullText": null, 491 | "postfix": "", 492 | "postfixFontSize": "50%", 493 | "prefix": "", 494 | "prefixFontSize": "50%", 495 | "rangeMaps": [ 496 | { 497 | "from": "null", 498 | "text": "N/A", 499 | "to": "null" 500 | } 501 | ], 502 | "sparkline": { 503 | "fillColor": "rgba(31, 118, 189, 0.18)", 504 | "full": false, 505 | "lineColor": "rgb(31, 120, 193)", 506 | "show": true 507 | }, 508 | "tableColumn": "", 509 | "targets": [ 510 | { 511 | "expr": "sum(kie_server_case_running_total)", 512 | "format": "time_series", 513 | "intervalFactor": 1, 514 | "refId": "A" 515 | } 516 | ], 517 | "thresholds": "", 518 | "timeFrom": null, 519 | "timeShift": null, 520 | "title": "Running Cases", 521 | "type": "singlestat", 522 | "valueFontSize": "80%", 523 | "valueMaps": [ 524 | { 525 | "op": "=", 526 | "text": "0", 527 | "value": "null" 528 | } 529 | ], 530 | "valueName": "current" 531 | }, 532 | { 533 | "cacheTimeout": null, 534 | "colorBackground": false, 535 | "colorValue": false, 536 | "colors": [ 537 | "#299c46", 538 | "rgba(237, 129, 40, 0.89)", 539 | "#d44a3a" 540 | ], 541 | "format": "none", 542 | "gauge": { 543 | "maxValue": 100, 544 | "minValue": 0, 545 | "show": false, 546 | "thresholdLabels": false, 547 | "thresholdMarkers": true 548 | }, 549 | "gridPos": { 550 | "h": 4, 551 | "w": 3, 552 | "x": 18, 553 | "y": 0 554 | }, 555 | "id": 22, 556 | "interval": null, 557 | "links": [], 558 | "mappingType": 1, 559 | "mappingTypes": [ 560 | { 561 | "name": "value to text", 562 | "value": 1 563 | }, 564 | { 565 | "name": "range to text", 566 | "value": 2 567 | } 568 | ], 569 | "maxDataPoints": 100, 570 | "nullPointMode": "connected", 571 | "nullText": null, 572 | "postfix": "", 573 | "postfixFontSize": "50%", 574 | "prefix": "", 575 | "prefixFontSize": "50%", 576 | "rangeMaps": [ 577 | { 578 | "from": "null", 579 | "text": "N/A", 580 | "to": "null" 581 | } 582 | ], 583 | "sparkline": { 584 | "fillColor": "rgba(31, 118, 189, 0.18)", 585 | "full": false, 586 | "lineColor": "rgb(31, 120, 193)", 587 | "show": true 588 | }, 589 | "tableColumn": "", 590 | "targets": [ 591 | { 592 | "expr": "sum(kie_server_process_instance_running_total)", 593 | "format": "time_series", 594 | "intervalFactor": 1, 595 | "refId": "A" 596 | } 597 | ], 598 | "thresholds": "", 599 | "timeFrom": null, 600 | "timeShift": null, 601 | "title": "Running Processes", 602 | "type": "singlestat", 603 | "valueFontSize": "80%", 604 | "valueMaps": [ 605 | { 606 | "op": "=", 607 | "text": "0", 608 | "value": "null" 609 | } 610 | ], 611 | "valueName": "current" 612 | }, 613 | { 614 | "cacheTimeout": null, 615 | "colorBackground": false, 616 | "colorValue": false, 617 | "colors": [ 618 | "#299c46", 619 | "rgba(237, 129, 40, 0.89)", 620 | "#d44a3a" 621 | ], 622 | "format": "none", 623 | "gauge": { 624 | "maxValue": 100, 625 | "minValue": 0, 626 | "show": false, 627 | "thresholdLabels": false, 628 | "thresholdMarkers": true 629 | }, 630 | "gridPos": { 631 | "h": 4, 632 | "w": 3, 633 | "x": 21, 634 | "y": 0 635 | }, 636 | "id": 27, 637 | "interval": null, 638 | "links": [], 639 | "mappingType": 1, 640 | "mappingTypes": [ 641 | { 642 | "name": "value to text", 643 | "value": 1 644 | }, 645 | { 646 | "name": "range to text", 647 | "value": 2 648 | } 649 | ], 650 | "maxDataPoints": 100, 651 | "nullPointMode": "connected", 652 | "nullText": null, 653 | "postfix": "", 654 | "postfixFontSize": "50%", 655 | "prefix": "", 656 | "prefixFontSize": "50%", 657 | "rangeMaps": [ 658 | { 659 | "from": "null", 660 | "text": "N/A", 661 | "to": "null" 662 | } 663 | ], 664 | "sparkline": { 665 | "fillColor": "rgba(31, 118, 189, 0.18)", 666 | "full": false, 667 | "lineColor": "rgb(31, 120, 193)", 668 | "show": true 669 | }, 670 | "tableColumn": "", 671 | "targets": [ 672 | { 673 | "expr": "sum(kie_server_task_added_total)", 674 | "format": "time_series", 675 | "intervalFactor": 1, 676 | "refId": "A" 677 | } 678 | ], 679 | "thresholds": "", 680 | "timeFrom": null, 681 | "timeShift": null, 682 | "title": "Tasks Created", 683 | "type": "singlestat", 684 | "valueFontSize": "80%", 685 | "valueMaps": [ 686 | { 687 | "op": "=", 688 | "text": "0", 689 | "value": "null" 690 | } 691 | ], 692 | "valueName": "current" 693 | }, 694 | { 695 | "cacheTimeout": null, 696 | "colorBackground": false, 697 | "colorValue": true, 698 | "colors": [ 699 | "#C4162A", 700 | "rgba(237, 129, 40, 0.89)", 701 | "#299c46" 702 | ], 703 | "decimals": 0, 704 | "format": "short", 705 | "gauge": { 706 | "maxValue": 100, 707 | "minValue": 0, 708 | "show": false, 709 | "thresholdLabels": false, 710 | "thresholdMarkers": true 711 | }, 712 | "gridPos": { 713 | "h": 4, 714 | "w": 3, 715 | "x": 0, 716 | "y": 4 717 | }, 718 | "id": 14, 719 | "interval": null, 720 | "links": [], 721 | "mappingType": 1, 722 | "mappingTypes": [ 723 | { 724 | "name": "value to text", 725 | "value": 1 726 | }, 727 | { 728 | "name": "range to text", 729 | "value": 2 730 | } 731 | ], 732 | "maxDataPoints": 100, 733 | "nullPointMode": "connected", 734 | "nullText": null, 735 | "postfix": "", 736 | "postfixFontSize": "50%", 737 | "prefix": "", 738 | "prefixFontSize": "50%", 739 | "rangeMaps": [ 740 | { 741 | "from": "null", 742 | "text": "N/A", 743 | "to": "null" 744 | } 745 | ], 746 | "sparkline": { 747 | "fillColor": "rgba(31, 118, 189, 0.18)", 748 | "full": false, 749 | "lineColor": "rgb(31, 120, 193)", 750 | "show": true 751 | }, 752 | "tableColumn": "", 753 | "targets": [ 754 | { 755 | "expr": "kie_server_process_instance_sla_violated_total", 756 | "format": "time_series", 757 | "intervalFactor": 1, 758 | "refId": "A" 759 | } 760 | ], 761 | "thresholds": "100", 762 | "timeFrom": null, 763 | "timeShift": null, 764 | "title": "SLA Violations", 765 | "type": "singlestat", 766 | "valueFontSize": "80%", 767 | "valueMaps": [ 768 | { 769 | "op": "=", 770 | "text": "0", 771 | "value": "null" 772 | } 773 | ], 774 | "valueName": "current" 775 | }, 776 | { 777 | "cacheTimeout": null, 778 | "colorBackground": false, 779 | "colorValue": true, 780 | "colors": [ 781 | "#E02F44", 782 | "rgba(237, 129, 40, 0.89)", 783 | "#299c46" 784 | ], 785 | "decimals": 0, 786 | "format": "short", 787 | "gauge": { 788 | "maxValue": 100, 789 | "minValue": 0, 790 | "show": false, 791 | "thresholdLabels": false, 792 | "thresholdMarkers": true 793 | }, 794 | "gridPos": { 795 | "h": 4, 796 | "w": 3, 797 | "x": 3, 798 | "y": 4 799 | }, 800 | "id": 15, 801 | "interval": null, 802 | "links": [], 803 | "mappingType": 1, 804 | "mappingTypes": [ 805 | { 806 | "name": "value to text", 807 | "value": 1 808 | }, 809 | { 810 | "name": "range to text", 811 | "value": 2 812 | } 813 | ], 814 | "maxDataPoints": 100, 815 | "nullPointMode": "connected", 816 | "nullText": null, 817 | "postfix": "", 818 | "postfixFontSize": "50%", 819 | "prefix": "", 820 | "prefixFontSize": "50%", 821 | "rangeMaps": [ 822 | { 823 | "from": "null", 824 | "text": "N/A", 825 | "to": "null" 826 | } 827 | ], 828 | "sparkline": { 829 | "fillColor": "rgba(31, 118, 189, 0.18)", 830 | "full": false, 831 | "lineColor": "rgb(31, 120, 193)", 832 | "show": true 833 | }, 834 | "tableColumn": "", 835 | "targets": [ 836 | { 837 | "expr": "kie_server_execution_error_total", 838 | "format": "time_series", 839 | "instant": true, 840 | "intervalFactor": 1, 841 | "refId": "A" 842 | } 843 | ], 844 | "thresholds": "100", 845 | "timeFrom": null, 846 | "timeShift": null, 847 | "title": "Execution Errors", 848 | "type": "singlestat", 849 | "valueFontSize": "80%", 850 | "valueMaps": [ 851 | { 852 | "op": "=", 853 | "text": "0", 854 | "value": "null" 855 | } 856 | ], 857 | "valueName": "current" 858 | }, 859 | { 860 | "cacheTimeout": null, 861 | "colorBackground": false, 862 | "colorValue": true, 863 | "colors": [ 864 | "#E02F44", 865 | "rgba(237, 129, 40, 0.89)", 866 | "#299c46" 867 | ], 868 | "decimals": 0, 869 | "format": "short", 870 | "gauge": { 871 | "maxValue": 100, 872 | "minValue": 0, 873 | "show": false, 874 | "thresholdLabels": false, 875 | "thresholdMarkers": true 876 | }, 877 | "gridPos": { 878 | "h": 4, 879 | "w": 3, 880 | "x": 6, 881 | "y": 4 882 | }, 883 | "id": 28, 884 | "interval": null, 885 | "links": [], 886 | "mappingType": 1, 887 | "mappingTypes": [ 888 | { 889 | "name": "value to text", 890 | "value": 1 891 | }, 892 | { 893 | "name": "range to text", 894 | "value": 2 895 | } 896 | ], 897 | "maxDataPoints": 100, 898 | "nullPointMode": "connected", 899 | "nullText": null, 900 | "postfix": "", 901 | "postfixFontSize": "50%", 902 | "prefix": "", 903 | "prefixFontSize": "50%", 904 | "rangeMaps": [ 905 | { 906 | "from": "null", 907 | "text": "N/A", 908 | "to": "null" 909 | } 910 | ], 911 | "sparkline": { 912 | "fillColor": "rgba(31, 118, 189, 0.18)", 913 | "full": false, 914 | "lineColor": "rgb(31, 120, 193)", 915 | "show": true 916 | }, 917 | "tableColumn": "", 918 | "targets": [ 919 | { 920 | "expr": "sum(kie_server_task_failed_total)", 921 | "format": "time_series", 922 | "instant": true, 923 | "intervalFactor": 1, 924 | "refId": "A" 925 | } 926 | ], 927 | "thresholds": "100", 928 | "timeFrom": null, 929 | "timeShift": null, 930 | "title": "Failed Tasks", 931 | "type": "singlestat", 932 | "valueFontSize": "80%", 933 | "valueMaps": [ 934 | { 935 | "op": "=", 936 | "text": "0", 937 | "value": "null" 938 | } 939 | ], 940 | "valueName": "current" 941 | }, 942 | { 943 | "cacheTimeout": null, 944 | "colorBackground": false, 945 | "colorValue": true, 946 | "colors": [ 947 | "#E02F44", 948 | "rgba(237, 129, 40, 0.89)", 949 | "#299c46" 950 | ], 951 | "decimals": 0, 952 | "format": "short", 953 | "gauge": { 954 | "maxValue": 100, 955 | "minValue": 0, 956 | "show": false, 957 | "thresholdLabels": false, 958 | "thresholdMarkers": true 959 | }, 960 | "gridPos": { 961 | "h": 4, 962 | "w": 3, 963 | "x": 9, 964 | "y": 4 965 | }, 966 | "id": 30, 967 | "interval": null, 968 | "links": [], 969 | "mappingType": 1, 970 | "mappingTypes": [ 971 | { 972 | "name": "value to text", 973 | "value": 1 974 | }, 975 | { 976 | "name": "range to text", 977 | "value": 2 978 | } 979 | ], 980 | "maxDataPoints": 100, 981 | "nullPointMode": "connected", 982 | "nullText": null, 983 | "postfix": "", 984 | "postfixFontSize": "50%", 985 | "prefix": "", 986 | "prefixFontSize": "50%", 987 | "rangeMaps": [ 988 | { 989 | "from": "null", 990 | "text": "N/A", 991 | "to": "null" 992 | } 993 | ], 994 | "sparkline": { 995 | "fillColor": "rgba(31, 118, 189, 0.18)", 996 | "full": false, 997 | "lineColor": "rgb(31, 120, 193)", 998 | "show": true 999 | }, 1000 | "tableColumn": "", 1001 | "targets": [ 1002 | { 1003 | "expr": "sum(kie_server_task_exited_total)", 1004 | "format": "time_series", 1005 | "instant": true, 1006 | "intervalFactor": 1, 1007 | "refId": "A" 1008 | } 1009 | ], 1010 | "thresholds": "100", 1011 | "timeFrom": null, 1012 | "timeShift": null, 1013 | "title": "Exited Tasks", 1014 | "type": "singlestat", 1015 | "valueFontSize": "80%", 1016 | "valueMaps": [ 1017 | { 1018 | "op": "=", 1019 | "text": "0", 1020 | "value": "null" 1021 | } 1022 | ], 1023 | "valueName": "current" 1024 | }, 1025 | { 1026 | "cacheTimeout": null, 1027 | "colorBackground": false, 1028 | "colorValue": false, 1029 | "colors": [ 1030 | "#299c46", 1031 | "rgba(237, 129, 40, 0.89)", 1032 | "#d44a3a" 1033 | ], 1034 | "format": "none", 1035 | "gauge": { 1036 | "maxValue": 100, 1037 | "minValue": 0, 1038 | "show": false, 1039 | "thresholdLabels": false, 1040 | "thresholdMarkers": true 1041 | }, 1042 | "gridPos": { 1043 | "h": 4, 1044 | "w": 3, 1045 | "x": 12, 1046 | "y": 4 1047 | }, 1048 | "id": 23, 1049 | "interval": null, 1050 | "links": [], 1051 | "mappingType": 1, 1052 | "mappingTypes": [ 1053 | { 1054 | "name": "value to text", 1055 | "value": 1 1056 | }, 1057 | { 1058 | "name": "range to text", 1059 | "value": 2 1060 | } 1061 | ], 1062 | "maxDataPoints": 100, 1063 | "nullPointMode": "connected", 1064 | "nullText": null, 1065 | "postfix": "", 1066 | "postfixFontSize": "50%", 1067 | "prefix": "", 1068 | "prefixFontSize": "50%", 1069 | "rangeMaps": [ 1070 | { 1071 | "from": "null", 1072 | "text": "N/A", 1073 | "to": "null" 1074 | } 1075 | ], 1076 | "sparkline": { 1077 | "fillColor": "rgba(31, 118, 189, 0.18)", 1078 | "full": false, 1079 | "lineColor": "rgb(31, 120, 193)", 1080 | "show": true 1081 | }, 1082 | "tableColumn": "", 1083 | "targets": [ 1084 | { 1085 | "expr": "sum(kie_server_process_instance_started_total)", 1086 | "format": "time_series", 1087 | "intervalFactor": 1, 1088 | "refId": "A" 1089 | } 1090 | ], 1091 | "thresholds": "", 1092 | "timeFrom": null, 1093 | "timeShift": null, 1094 | "title": "Started Processes", 1095 | "type": "singlestat", 1096 | "valueFontSize": "80%", 1097 | "valueMaps": [ 1098 | { 1099 | "op": "=", 1100 | "text": "0", 1101 | "value": "null" 1102 | } 1103 | ], 1104 | "valueName": "current" 1105 | }, 1106 | { 1107 | "cacheTimeout": null, 1108 | "colorBackground": false, 1109 | "colorValue": false, 1110 | "colors": [ 1111 | "#299c46", 1112 | "rgba(237, 129, 40, 0.89)", 1113 | "#d44a3a" 1114 | ], 1115 | "format": "none", 1116 | "gauge": { 1117 | "maxValue": 100, 1118 | "minValue": 0, 1119 | "show": false, 1120 | "thresholdLabels": false, 1121 | "thresholdMarkers": true 1122 | }, 1123 | "gridPos": { 1124 | "h": 4, 1125 | "w": 3, 1126 | "x": 15, 1127 | "y": 4 1128 | }, 1129 | "id": 19, 1130 | "interval": null, 1131 | "links": [], 1132 | "mappingType": 1, 1133 | "mappingTypes": [ 1134 | { 1135 | "name": "value to text", 1136 | "value": 1 1137 | }, 1138 | { 1139 | "name": "range to text", 1140 | "value": 2 1141 | } 1142 | ], 1143 | "maxDataPoints": 100, 1144 | "nullPointMode": "connected", 1145 | "nullText": null, 1146 | "postfix": "", 1147 | "postfixFontSize": "50%", 1148 | "prefix": "", 1149 | "prefixFontSize": "50%", 1150 | "rangeMaps": [ 1151 | { 1152 | "from": "null", 1153 | "text": "N/A", 1154 | "to": "null" 1155 | } 1156 | ], 1157 | "sparkline": { 1158 | "fillColor": "rgba(31, 118, 189, 0.18)", 1159 | "full": false, 1160 | "lineColor": "rgb(31, 120, 193)", 1161 | "show": true 1162 | }, 1163 | "tableColumn": "", 1164 | "targets": [ 1165 | { 1166 | "expr": "sum(kie_server_case_started_total)", 1167 | "format": "time_series", 1168 | "intervalFactor": 1, 1169 | "refId": "A" 1170 | } 1171 | ], 1172 | "thresholds": "", 1173 | "timeFrom": null, 1174 | "timeShift": null, 1175 | "title": "Started Cases", 1176 | "type": "singlestat", 1177 | "valueFontSize": "80%", 1178 | "valueMaps": [ 1179 | { 1180 | "op": "=", 1181 | "text": "0", 1182 | "value": "null" 1183 | } 1184 | ], 1185 | "valueName": "current" 1186 | }, 1187 | { 1188 | "cacheTimeout": null, 1189 | "colorBackground": false, 1190 | "colorValue": false, 1191 | "colors": [ 1192 | "#299c46", 1193 | "rgba(237, 129, 40, 0.89)", 1194 | "#d44a3a" 1195 | ], 1196 | "format": "short", 1197 | "gauge": { 1198 | "maxValue": 100, 1199 | "minValue": 0, 1200 | "show": false, 1201 | "thresholdLabels": false, 1202 | "thresholdMarkers": true 1203 | }, 1204 | "gridPos": { 1205 | "h": 4, 1206 | "w": 3, 1207 | "x": 18, 1208 | "y": 4 1209 | }, 1210 | "id": 10, 1211 | "interval": null, 1212 | "links": [], 1213 | "mappingType": 1, 1214 | "mappingTypes": [ 1215 | { 1216 | "name": "value to text", 1217 | "value": 1 1218 | }, 1219 | { 1220 | "name": "range to text", 1221 | "value": 2 1222 | } 1223 | ], 1224 | "maxDataPoints": 100, 1225 | "nullPointMode": "connected", 1226 | "nullText": null, 1227 | "postfix": "", 1228 | "postfixFontSize": "50%", 1229 | "prefix": "", 1230 | "prefixFontSize": "50%", 1231 | "rangeMaps": [ 1232 | { 1233 | "from": "null", 1234 | "text": "N/A", 1235 | "to": "null" 1236 | } 1237 | ], 1238 | "sparkline": { 1239 | "fillColor": "rgba(31, 118, 189, 0.18)", 1240 | "full": false, 1241 | "lineColor": "rgb(31, 120, 193)", 1242 | "show": true 1243 | }, 1244 | "tableColumn": "", 1245 | "targets": [ 1246 | { 1247 | "expr": "sum(kie_server_data_set_registered_total)", 1248 | "format": "time_series", 1249 | "instant": true, 1250 | "intervalFactor": 1, 1251 | "refId": "A" 1252 | } 1253 | ], 1254 | "thresholds": "", 1255 | "timeFrom": null, 1256 | "timeShift": null, 1257 | "title": "Registered Data Set Queries", 1258 | "type": "singlestat", 1259 | "valueFontSize": "80%", 1260 | "valueMaps": [ 1261 | { 1262 | "op": "=", 1263 | "text": "0", 1264 | "value": "null" 1265 | } 1266 | ], 1267 | "valueName": "current" 1268 | }, 1269 | { 1270 | "cacheTimeout": null, 1271 | "colorBackground": false, 1272 | "colorValue": false, 1273 | "colors": [ 1274 | "#299c46", 1275 | "rgba(237, 129, 40, 0.89)", 1276 | "#d44a3a" 1277 | ], 1278 | "format": "none", 1279 | "gauge": { 1280 | "maxValue": 100, 1281 | "minValue": 0, 1282 | "show": false, 1283 | "thresholdLabels": false, 1284 | "thresholdMarkers": true 1285 | }, 1286 | "gridPos": { 1287 | "h": 4, 1288 | "w": 3, 1289 | "x": 21, 1290 | "y": 4 1291 | }, 1292 | "id": 11, 1293 | "interval": null, 1294 | "links": [], 1295 | "mappingType": 1, 1296 | "mappingTypes": [ 1297 | { 1298 | "name": "value to text", 1299 | "value": 1 1300 | }, 1301 | { 1302 | "name": "range to text", 1303 | "value": 2 1304 | } 1305 | ], 1306 | "maxDataPoints": 100, 1307 | "nullPointMode": "connected", 1308 | "nullText": null, 1309 | "postfix": "", 1310 | "postfixFontSize": "50%", 1311 | "prefix": "", 1312 | "prefixFontSize": "50%", 1313 | "rangeMaps": [ 1314 | { 1315 | "from": "null", 1316 | "text": "N/A", 1317 | "to": "null" 1318 | } 1319 | ], 1320 | "sparkline": { 1321 | "fillColor": "rgba(31, 118, 189, 0.18)", 1322 | "full": false, 1323 | "lineColor": "rgb(31, 120, 193)", 1324 | "show": true 1325 | }, 1326 | "tableColumn": "", 1327 | "targets": [ 1328 | { 1329 | "expr": "sum(kie_server_data_set_lookups_total)", 1330 | "format": "time_series", 1331 | "instant": false, 1332 | "intervalFactor": 1, 1333 | "refId": "A" 1334 | } 1335 | ], 1336 | "thresholds": "", 1337 | "timeFrom": null, 1338 | "timeShift": null, 1339 | "title": "Running Data Set Queries", 1340 | "type": "singlestat", 1341 | "valueFontSize": "80%", 1342 | "valueMaps": [ 1343 | { 1344 | "op": "=", 1345 | "text": "0", 1346 | "value": "null" 1347 | } 1348 | ], 1349 | "valueName": "current" 1350 | }, 1351 | { 1352 | "aliasColors": {}, 1353 | "bars": false, 1354 | "dashLength": 10, 1355 | "dashes": false, 1356 | "fill": 1, 1357 | "gridPos": { 1358 | "h": 8, 1359 | "w": 12, 1360 | "x": 0, 1361 | "y": 8 1362 | }, 1363 | "id": 13, 1364 | "legend": { 1365 | "avg": false, 1366 | "current": false, 1367 | "max": false, 1368 | "min": false, 1369 | "show": true, 1370 | "total": false, 1371 | "values": false 1372 | }, 1373 | "lines": true, 1374 | "linewidth": 1, 1375 | "links": [], 1376 | "nullPointMode": "null", 1377 | "paceLength": 10, 1378 | "percentage": false, 1379 | "pointradius": 2, 1380 | "points": false, 1381 | "renderer": "flot", 1382 | "seriesOverrides": [], 1383 | "stack": false, 1384 | "steppedLine": false, 1385 | "targets": [ 1386 | { 1387 | "expr": "rate(kie_server_data_set_execution_time_seconds_sum[1m])", 1388 | "format": "time_series", 1389 | "intervalFactor": 1, 1390 | "legendFormat": "{{uuid}}", 1391 | "refId": "A" 1392 | } 1393 | ], 1394 | "thresholds": [], 1395 | "timeFrom": null, 1396 | "timeRegions": [], 1397 | "timeShift": null, 1398 | "title": "Data Set Queries Time", 1399 | "tooltip": { 1400 | "shared": true, 1401 | "sort": 0, 1402 | "value_type": "individual" 1403 | }, 1404 | "type": "graph", 1405 | "xaxis": { 1406 | "buckets": null, 1407 | "mode": "time", 1408 | "name": null, 1409 | "show": true, 1410 | "values": [] 1411 | }, 1412 | "yaxes": [ 1413 | { 1414 | "format": "s", 1415 | "label": null, 1416 | "logBase": 1, 1417 | "max": null, 1418 | "min": "0", 1419 | "show": true 1420 | }, 1421 | { 1422 | "format": "short", 1423 | "label": null, 1424 | "logBase": 1, 1425 | "max": null, 1426 | "min": null, 1427 | "show": false 1428 | } 1429 | ], 1430 | "yaxis": { 1431 | "align": false, 1432 | "alignLevel": null 1433 | } 1434 | }, 1435 | { 1436 | "columns": [], 1437 | "fontSize": "100%", 1438 | "gridPos": { 1439 | "h": 8, 1440 | "w": 12, 1441 | "x": 12, 1442 | "y": 8 1443 | }, 1444 | "id": 21, 1445 | "links": [], 1446 | "pageSize": null, 1447 | "scroll": true, 1448 | "showHeader": true, 1449 | "sort": { 1450 | "col": 5, 1451 | "desc": true 1452 | }, 1453 | "styles": [ 1454 | { 1455 | "alias": "Time", 1456 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 1457 | "pattern": "Time", 1458 | "type": "hidden" 1459 | }, 1460 | { 1461 | "alias": "", 1462 | "colorMode": null, 1463 | "colors": [ 1464 | "rgba(245, 54, 54, 0.9)", 1465 | "rgba(237, 129, 40, 0.89)", 1466 | "rgba(50, 172, 45, 0.97)" 1467 | ], 1468 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 1469 | "decimals": 2, 1470 | "mappingType": 1, 1471 | "pattern": "__name__", 1472 | "thresholds": [], 1473 | "type": "hidden", 1474 | "unit": "short" 1475 | }, 1476 | { 1477 | "alias": "", 1478 | "colorMode": null, 1479 | "colors": [ 1480 | "rgba(245, 54, 54, 0.9)", 1481 | "rgba(237, 129, 40, 0.89)", 1482 | "rgba(50, 172, 45, 0.97)" 1483 | ], 1484 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 1485 | "decimals": 2, 1486 | "mappingType": 1, 1487 | "pattern": "job", 1488 | "thresholds": [], 1489 | "type": "hidden", 1490 | "unit": "short" 1491 | }, 1492 | { 1493 | "alias": "", 1494 | "colorMode": null, 1495 | "colors": [ 1496 | "rgba(245, 54, 54, 0.9)", 1497 | "rgba(237, 129, 40, 0.89)", 1498 | "rgba(50, 172, 45, 0.97)" 1499 | ], 1500 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 1501 | "decimals": 2, 1502 | "mappingType": 1, 1503 | "pattern": "instance", 1504 | "thresholds": [], 1505 | "type": "hidden", 1506 | "unit": "short" 1507 | } 1508 | ], 1509 | "targets": [ 1510 | { 1511 | "expr": "kie_server_data_set_execution_time_seconds_count", 1512 | "format": "table", 1513 | "instant": true, 1514 | "intervalFactor": 1, 1515 | "refId": "A" 1516 | } 1517 | ], 1518 | "timeFrom": null, 1519 | "timeShift": null, 1520 | "title": "Data Set Query Executions", 1521 | "transform": "table", 1522 | "type": "table" 1523 | }, 1524 | { 1525 | "aliasColors": {}, 1526 | "bars": false, 1527 | "dashLength": 10, 1528 | "dashes": false, 1529 | "fill": 1, 1530 | "gridPos": { 1531 | "h": 9, 1532 | "w": 12, 1533 | "x": 0, 1534 | "y": 16 1535 | }, 1536 | "id": 31, 1537 | "legend": { 1538 | "avg": false, 1539 | "current": false, 1540 | "max": false, 1541 | "min": false, 1542 | "show": true, 1543 | "total": false, 1544 | "values": false 1545 | }, 1546 | "lines": true, 1547 | "linewidth": 1, 1548 | "links": [], 1549 | "nullPointMode": "null", 1550 | "paceLength": 10, 1551 | "percentage": false, 1552 | "pointradius": 2, 1553 | "points": false, 1554 | "renderer": "flot", 1555 | "seriesOverrides": [], 1556 | "stack": false, 1557 | "steppedLine": false, 1558 | "targets": [ 1559 | { 1560 | "expr": "increase(kie_server_process_instance_started_total[1m])", 1561 | "format": "time_series", 1562 | "instant": false, 1563 | "interval": "", 1564 | "intervalFactor": 1, 1565 | "legendFormat": "{{process_id}}", 1566 | "refId": "A" 1567 | } 1568 | ], 1569 | "thresholds": [], 1570 | "timeFrom": null, 1571 | "timeRegions": [], 1572 | "timeShift": null, 1573 | "title": "Started Process Over Time", 1574 | "tooltip": { 1575 | "shared": true, 1576 | "sort": 0, 1577 | "value_type": "individual" 1578 | }, 1579 | "type": "graph", 1580 | "xaxis": { 1581 | "buckets": null, 1582 | "mode": "time", 1583 | "name": null, 1584 | "show": true, 1585 | "values": [] 1586 | }, 1587 | "yaxes": [ 1588 | { 1589 | "decimals": 0, 1590 | "format": "short", 1591 | "label": null, 1592 | "logBase": 1, 1593 | "max": null, 1594 | "min": "0", 1595 | "show": true 1596 | }, 1597 | { 1598 | "format": "short", 1599 | "label": null, 1600 | "logBase": 1, 1601 | "max": null, 1602 | "min": null, 1603 | "show": false 1604 | } 1605 | ], 1606 | "yaxis": { 1607 | "align": false, 1608 | "alignLevel": null 1609 | } 1610 | }, 1611 | { 1612 | "aliasColors": {}, 1613 | "bars": false, 1614 | "dashLength": 10, 1615 | "dashes": false, 1616 | "fill": 1, 1617 | "gridPos": { 1618 | "h": 9, 1619 | "w": 12, 1620 | "x": 12, 1621 | "y": 16 1622 | }, 1623 | "id": 24, 1624 | "legend": { 1625 | "avg": false, 1626 | "current": false, 1627 | "max": false, 1628 | "min": false, 1629 | "show": true, 1630 | "total": false, 1631 | "values": false 1632 | }, 1633 | "lines": true, 1634 | "linewidth": 1, 1635 | "links": [], 1636 | "nullPointMode": "null", 1637 | "paceLength": 10, 1638 | "percentage": false, 1639 | "pointradius": 2, 1640 | "points": false, 1641 | "renderer": "flot", 1642 | "seriesOverrides": [], 1643 | "stack": false, 1644 | "steppedLine": false, 1645 | "targets": [ 1646 | { 1647 | "expr": "avg_over_time(kie_server_process_instance_duration_seconds_sum[1m])", 1648 | "format": "time_series", 1649 | "instant": false, 1650 | "intervalFactor": 1, 1651 | "legendFormat": "{{process_id}}", 1652 | "refId": "A" 1653 | } 1654 | ], 1655 | "thresholds": [], 1656 | "timeFrom": null, 1657 | "timeRegions": [], 1658 | "timeShift": null, 1659 | "title": "Process Average Time", 1660 | "tooltip": { 1661 | "shared": true, 1662 | "sort": 0, 1663 | "value_type": "individual" 1664 | }, 1665 | "type": "graph", 1666 | "xaxis": { 1667 | "buckets": null, 1668 | "mode": "time", 1669 | "name": null, 1670 | "show": true, 1671 | "values": [] 1672 | }, 1673 | "yaxes": [ 1674 | { 1675 | "decimals": null, 1676 | "format": "s", 1677 | "label": null, 1678 | "logBase": 1, 1679 | "max": null, 1680 | "min": "0", 1681 | "show": true 1682 | }, 1683 | { 1684 | "format": "short", 1685 | "label": null, 1686 | "logBase": 1, 1687 | "max": null, 1688 | "min": null, 1689 | "show": false 1690 | } 1691 | ], 1692 | "yaxis": { 1693 | "align": false, 1694 | "alignLevel": null 1695 | } 1696 | }, 1697 | { 1698 | "aliasColors": {}, 1699 | "bars": false, 1700 | "dashLength": 10, 1701 | "dashes": false, 1702 | "fill": 1, 1703 | "gridPos": { 1704 | "h": 8, 1705 | "w": 12, 1706 | "x": 0, 1707 | "y": 25 1708 | }, 1709 | "id": 26, 1710 | "legend": { 1711 | "avg": false, 1712 | "current": false, 1713 | "max": false, 1714 | "min": false, 1715 | "show": true, 1716 | "total": false, 1717 | "values": false 1718 | }, 1719 | "lines": true, 1720 | "linewidth": 1, 1721 | "links": [], 1722 | "nullPointMode": "null", 1723 | "paceLength": 10, 1724 | "percentage": false, 1725 | "pointradius": 2, 1726 | "points": false, 1727 | "renderer": "flot", 1728 | "seriesOverrides": [], 1729 | "stack": false, 1730 | "steppedLine": false, 1731 | "targets": [ 1732 | { 1733 | "expr": "avg_over_time(kie_server_work_item_duration_seconds_sum[1m])", 1734 | "format": "time_series", 1735 | "instant": false, 1736 | "intervalFactor": 1, 1737 | "legendFormat": "{{name}}", 1738 | "refId": "A" 1739 | } 1740 | ], 1741 | "thresholds": [], 1742 | "timeFrom": null, 1743 | "timeRegions": [], 1744 | "timeShift": null, 1745 | "title": "Work Item Average Time", 1746 | "tooltip": { 1747 | "shared": true, 1748 | "sort": 0, 1749 | "value_type": "individual" 1750 | }, 1751 | "type": "graph", 1752 | "xaxis": { 1753 | "buckets": null, 1754 | "mode": "time", 1755 | "name": null, 1756 | "show": true, 1757 | "values": [] 1758 | }, 1759 | "yaxes": [ 1760 | { 1761 | "decimals": null, 1762 | "format": "s", 1763 | "label": null, 1764 | "logBase": 1, 1765 | "max": null, 1766 | "min": "0", 1767 | "show": true 1768 | }, 1769 | { 1770 | "format": "short", 1771 | "label": null, 1772 | "logBase": 1, 1773 | "max": null, 1774 | "min": null, 1775 | "show": false 1776 | } 1777 | ], 1778 | "yaxis": { 1779 | "align": false, 1780 | "alignLevel": null 1781 | } 1782 | }, 1783 | { 1784 | "columns": [], 1785 | "fontSize": "100%", 1786 | "gridPos": { 1787 | "h": 8, 1788 | "w": 12, 1789 | "x": 12, 1790 | "y": 25 1791 | }, 1792 | "id": 25, 1793 | "links": [], 1794 | "pageSize": null, 1795 | "scroll": true, 1796 | "showHeader": true, 1797 | "sort": { 1798 | "col": 5, 1799 | "desc": true 1800 | }, 1801 | "styles": [ 1802 | { 1803 | "alias": "Time", 1804 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 1805 | "pattern": "Time", 1806 | "type": "hidden" 1807 | }, 1808 | { 1809 | "alias": "", 1810 | "colorMode": null, 1811 | "colors": [ 1812 | "rgba(245, 54, 54, 0.9)", 1813 | "rgba(237, 129, 40, 0.89)", 1814 | "rgba(50, 172, 45, 0.97)" 1815 | ], 1816 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 1817 | "decimals": 2, 1818 | "mappingType": 1, 1819 | "pattern": "__name__", 1820 | "thresholds": [], 1821 | "type": "hidden", 1822 | "unit": "short" 1823 | }, 1824 | { 1825 | "alias": "", 1826 | "colorMode": null, 1827 | "colors": [ 1828 | "rgba(245, 54, 54, 0.9)", 1829 | "rgba(237, 129, 40, 0.89)", 1830 | "rgba(50, 172, 45, 0.97)" 1831 | ], 1832 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 1833 | "decimals": 2, 1834 | "mappingType": 1, 1835 | "pattern": "job", 1836 | "thresholds": [], 1837 | "type": "hidden", 1838 | "unit": "short" 1839 | }, 1840 | { 1841 | "alias": "", 1842 | "colorMode": null, 1843 | "colors": [ 1844 | "rgba(245, 54, 54, 0.9)", 1845 | "rgba(237, 129, 40, 0.89)", 1846 | "rgba(50, 172, 45, 0.97)" 1847 | ], 1848 | "dateFormat": "YYYY-MM-DD HH:mm:ss", 1849 | "decimals": 2, 1850 | "mappingType": 1, 1851 | "pattern": "instance", 1852 | "thresholds": [], 1853 | "type": "hidden", 1854 | "unit": "short" 1855 | } 1856 | ], 1857 | "targets": [ 1858 | { 1859 | "expr": "kie_server_work_item_duration_seconds_count", 1860 | "format": "table", 1861 | "instant": true, 1862 | "intervalFactor": 1, 1863 | "refId": "A" 1864 | } 1865 | ], 1866 | "timeFrom": null, 1867 | "timeShift": null, 1868 | "title": "Work Items Executions", 1869 | "transform": "table", 1870 | "type": "table" 1871 | }, 1872 | { 1873 | "aliasColors": {}, 1874 | "bars": false, 1875 | "dashLength": 10, 1876 | "dashes": false, 1877 | "fill": 1, 1878 | "gridPos": { 1879 | "h": 9, 1880 | "w": 12, 1881 | "x": 0, 1882 | "y": 33 1883 | }, 1884 | "id": 17, 1885 | "legend": { 1886 | "avg": false, 1887 | "current": false, 1888 | "max": false, 1889 | "min": false, 1890 | "show": true, 1891 | "total": false, 1892 | "values": false 1893 | }, 1894 | "lines": true, 1895 | "linewidth": 1, 1896 | "links": [], 1897 | "nullPointMode": "null", 1898 | "paceLength": 10, 1899 | "percentage": false, 1900 | "pointradius": 2, 1901 | "points": false, 1902 | "renderer": "flot", 1903 | "seriesOverrides": [], 1904 | "stack": false, 1905 | "steppedLine": false, 1906 | "targets": [ 1907 | { 1908 | "expr": "avg_over_time(kie_server_case_duration_seconds_sum[1m])", 1909 | "format": "time_series", 1910 | "instant": false, 1911 | "intervalFactor": 1, 1912 | "legendFormat": "{{case_definition_id}}", 1913 | "refId": "A" 1914 | } 1915 | ], 1916 | "thresholds": [], 1917 | "timeFrom": null, 1918 | "timeRegions": [], 1919 | "timeShift": null, 1920 | "title": "Case Average Time", 1921 | "tooltip": { 1922 | "shared": true, 1923 | "sort": 0, 1924 | "value_type": "individual" 1925 | }, 1926 | "type": "graph", 1927 | "xaxis": { 1928 | "buckets": null, 1929 | "mode": "time", 1930 | "name": null, 1931 | "show": true, 1932 | "values": [] 1933 | }, 1934 | "yaxes": [ 1935 | { 1936 | "decimals": null, 1937 | "format": "s", 1938 | "label": null, 1939 | "logBase": 1, 1940 | "max": null, 1941 | "min": "0", 1942 | "show": true 1943 | }, 1944 | { 1945 | "format": "short", 1946 | "label": null, 1947 | "logBase": 1, 1948 | "max": null, 1949 | "min": null, 1950 | "show": false 1951 | } 1952 | ], 1953 | "yaxis": { 1954 | "align": false, 1955 | "alignLevel": null 1956 | } 1957 | }, 1958 | { 1959 | "aliasColors": {}, 1960 | "bars": false, 1961 | "dashLength": 10, 1962 | "dashes": false, 1963 | "fill": 1, 1964 | "gridPos": { 1965 | "h": 9, 1966 | "w": 12, 1967 | "x": 12, 1968 | "y": 33 1969 | }, 1970 | "id": 29, 1971 | "legend": { 1972 | "avg": false, 1973 | "current": false, 1974 | "max": false, 1975 | "min": false, 1976 | "show": true, 1977 | "total": false, 1978 | "values": false 1979 | }, 1980 | "lines": true, 1981 | "linewidth": 1, 1982 | "links": [], 1983 | "nullPointMode": "null", 1984 | "paceLength": 10, 1985 | "percentage": false, 1986 | "pointradius": 2, 1987 | "points": false, 1988 | "renderer": "flot", 1989 | "seriesOverrides": [], 1990 | "stack": false, 1991 | "steppedLine": false, 1992 | "targets": [ 1993 | { 1994 | "expr": "avg_over_time(kie_server_task_duration_seconds_sum[1m])", 1995 | "format": "time_series", 1996 | "instant": false, 1997 | "intervalFactor": 1, 1998 | "legendFormat": "{{task_name}}", 1999 | "refId": "A" 2000 | } 2001 | ], 2002 | "thresholds": [], 2003 | "timeFrom": null, 2004 | "timeRegions": [], 2005 | "timeShift": null, 2006 | "title": "Task Average Time", 2007 | "tooltip": { 2008 | "shared": true, 2009 | "sort": 0, 2010 | "value_type": "individual" 2011 | }, 2012 | "type": "graph", 2013 | "xaxis": { 2014 | "buckets": null, 2015 | "mode": "time", 2016 | "name": null, 2017 | "show": true, 2018 | "values": [] 2019 | }, 2020 | "yaxes": [ 2021 | { 2022 | "decimals": null, 2023 | "format": "s", 2024 | "label": null, 2025 | "logBase": 1, 2026 | "max": null, 2027 | "min": "0", 2028 | "show": true 2029 | }, 2030 | { 2031 | "format": "short", 2032 | "label": null, 2033 | "logBase": 1, 2034 | "max": null, 2035 | "min": null, 2036 | "show": false 2037 | } 2038 | ], 2039 | "yaxis": { 2040 | "align": false, 2041 | "alignLevel": null 2042 | } 2043 | } 2044 | ], 2045 | "refresh": "5s", 2046 | "schemaVersion": 18, 2047 | "style": "dark", 2048 | "tags": [], 2049 | "templating": { 2050 | "list": [] 2051 | }, 2052 | "time": { 2053 | "from": "now-6h", 2054 | "to": "now" 2055 | }, 2056 | "timepicker": { 2057 | "refresh_intervals": [ 2058 | "5s", 2059 | "10s", 2060 | "30s", 2061 | "1m", 2062 | "5m", 2063 | "15m", 2064 | "30m", 2065 | "1h", 2066 | "2h", 2067 | "1d" 2068 | ], 2069 | "time_options": [ 2070 | "5m", 2071 | "15m", 2072 | "1h", 2073 | "6h", 2074 | "12h", 2075 | "24h", 2076 | "2d", 2077 | "7d", 2078 | "30d" 2079 | ] 2080 | }, 2081 | "timezone": "", 2082 | "title": "jBPM Dashboard", 2083 | "uid": "k-HGr5qmz", 2084 | "version": 29 2085 | } -------------------------------------------------------------------------------- /docker-compose-examples/grafana/provisioning/dashboards/jBPM Kie Server Jobs.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "builtIn": 1, 6 | "datasource": "-- Grafana --", 7 | "enable": true, 8 | "hide": true, 9 | "iconColor": "rgba(0, 211, 255, 1)", 10 | "name": "Annotations & Alerts", 11 | "type": "dashboard" 12 | } 13 | ] 14 | }, 15 | "editable": true, 16 | "gnetId": null, 17 | "graphTooltip": 0, 18 | "id": 2, 19 | "links": [], 20 | "panels": [ 21 | { 22 | "cacheTimeout": null, 23 | "colorBackground": false, 24 | "colorValue": false, 25 | "colors": [ 26 | "#299c46", 27 | "rgba(237, 129, 40, 0.89)", 28 | "#d44a3a" 29 | ], 30 | "format": "none", 31 | "gauge": { 32 | "maxValue": 100, 33 | "minValue": 0, 34 | "show": false, 35 | "thresholdLabels": false, 36 | "thresholdMarkers": true 37 | }, 38 | "gridPos": { 39 | "h": 5, 40 | "w": 6, 41 | "x": 0, 42 | "y": 0 43 | }, 44 | "id": 2, 45 | "interval": "", 46 | "links": [], 47 | "mappingType": 1, 48 | "mappingTypes": [ 49 | { 50 | "name": "value to text", 51 | "value": 1 52 | }, 53 | { 54 | "name": "range to text", 55 | "value": 2 56 | } 57 | ], 58 | "maxDataPoints": 100, 59 | "nullPointMode": "connected", 60 | "nullText": null, 61 | "postfix": "", 62 | "postfixFontSize": "50%", 63 | "prefix": "", 64 | "prefixFontSize": "50%", 65 | "rangeMaps": [ 66 | { 67 | "from": "null", 68 | "text": "N/A", 69 | "to": "null" 70 | } 71 | ], 72 | "sparkline": { 73 | "fillColor": "rgba(31, 118, 189, 0.18)", 74 | "full": false, 75 | "lineColor": "rgb(31, 120, 193)", 76 | "show": true 77 | }, 78 | "tableColumn": "", 79 | "targets": [ 80 | { 81 | "expr": "sum(kie_server_job_running_total)", 82 | "format": "time_series", 83 | "intervalFactor": 1, 84 | "refId": "A" 85 | } 86 | ], 87 | "thresholds": "", 88 | "timeFrom": null, 89 | "timeShift": null, 90 | "title": "Running Jobs", 91 | "type": "singlestat", 92 | "valueFontSize": "80%", 93 | "valueMaps": [ 94 | { 95 | "op": "=", 96 | "text": "0", 97 | "value": "null" 98 | } 99 | ], 100 | "valueName": "current" 101 | }, 102 | { 103 | "cacheTimeout": null, 104 | "colorBackground": false, 105 | "colorValue": false, 106 | "colors": [ 107 | "#299c46", 108 | "rgba(237, 129, 40, 0.89)", 109 | "#d44a3a" 110 | ], 111 | "format": "s", 112 | "gauge": { 113 | "maxValue": 100, 114 | "minValue": 0, 115 | "show": false, 116 | "thresholdLabels": false, 117 | "thresholdMarkers": true 118 | }, 119 | "gridPos": { 120 | "h": 5, 121 | "w": 6, 122 | "x": 6, 123 | "y": 0 124 | }, 125 | "id": 8, 126 | "interval": null, 127 | "links": [], 128 | "mappingType": 1, 129 | "mappingTypes": [ 130 | { 131 | "name": "value to text", 132 | "value": 1 133 | }, 134 | { 135 | "name": "range to text", 136 | "value": 2 137 | } 138 | ], 139 | "maxDataPoints": 100, 140 | "nullPointMode": "connected", 141 | "nullText": null, 142 | "postfix": "", 143 | "postfixFontSize": "50%", 144 | "prefix": "", 145 | "prefixFontSize": "50%", 146 | "rangeMaps": [ 147 | { 148 | "from": "null", 149 | "text": "N/A", 150 | "to": "null" 151 | } 152 | ], 153 | "sparkline": { 154 | "fillColor": "rgba(31, 118, 189, 0.18)", 155 | "full": false, 156 | "lineColor": "rgb(31, 120, 193)", 157 | "show": true 158 | }, 159 | "tableColumn": "", 160 | "targets": [ 161 | { 162 | "expr": "sum(kie_server_job_duration_seconds_sum) / sum(kie_server_job_duration_seconds_count)", 163 | "format": "time_series", 164 | "intervalFactor": 1, 165 | "refId": "A" 166 | } 167 | ], 168 | "thresholds": "", 169 | "timeFrom": null, 170 | "timeShift": null, 171 | "title": "Average Job Execution Time", 172 | "type": "singlestat", 173 | "valueFontSize": "80%", 174 | "valueMaps": [ 175 | { 176 | "op": "=", 177 | "text": "N/A", 178 | "value": "null" 179 | } 180 | ], 181 | "valueName": "current" 182 | }, 183 | { 184 | "cacheTimeout": null, 185 | "colorBackground": false, 186 | "colorValue": false, 187 | "colors": [ 188 | "#299c46", 189 | "rgba(237, 129, 40, 0.89)", 190 | "#d44a3a" 191 | ], 192 | "format": "none", 193 | "gauge": { 194 | "maxValue": 100, 195 | "minValue": 0, 196 | "show": false, 197 | "thresholdLabels": false, 198 | "thresholdMarkers": true 199 | }, 200 | "gridPos": { 201 | "h": 5, 202 | "w": 3, 203 | "x": 12, 204 | "y": 0 205 | }, 206 | "id": 4, 207 | "interval": null, 208 | "links": [], 209 | "mappingType": 1, 210 | "mappingTypes": [ 211 | { 212 | "name": "value to text", 213 | "value": 1 214 | }, 215 | { 216 | "name": "range to text", 217 | "value": 2 218 | } 219 | ], 220 | "maxDataPoints": 100, 221 | "nullPointMode": "connected", 222 | "nullText": null, 223 | "postfix": "", 224 | "postfixFontSize": "50%", 225 | "prefix": "", 226 | "prefixFontSize": "50%", 227 | "rangeMaps": [ 228 | { 229 | "from": "null", 230 | "text": "N/A", 231 | "to": "null" 232 | } 233 | ], 234 | "sparkline": { 235 | "fillColor": "rgba(31, 118, 189, 0.18)", 236 | "full": false, 237 | "lineColor": "rgb(31, 120, 193)", 238 | "show": true 239 | }, 240 | "tableColumn": "", 241 | "targets": [ 242 | { 243 | "expr": "sum(kie_server_job_executed_total)", 244 | "format": "time_series", 245 | "intervalFactor": 1, 246 | "refId": "A" 247 | } 248 | ], 249 | "thresholds": "", 250 | "timeFrom": null, 251 | "timeShift": null, 252 | "title": "Executed Jobs", 253 | "type": "singlestat", 254 | "valueFontSize": "80%", 255 | "valueMaps": [ 256 | { 257 | "op": "=", 258 | "text": "0", 259 | "value": "null" 260 | } 261 | ], 262 | "valueName": "current" 263 | }, 264 | { 265 | "cacheTimeout": null, 266 | "colorBackground": false, 267 | "colorValue": true, 268 | "colors": [ 269 | "#E02F44", 270 | "rgba(237, 129, 40, 0.89)", 271 | "#299c46" 272 | ], 273 | "format": "none", 274 | "gauge": { 275 | "maxValue": 100, 276 | "minValue": 0, 277 | "show": false, 278 | "thresholdLabels": false, 279 | "thresholdMarkers": true 280 | }, 281 | "gridPos": { 282 | "h": 5, 283 | "w": 3, 284 | "x": 15, 285 | "y": 0 286 | }, 287 | "id": 10, 288 | "interval": null, 289 | "links": [], 290 | "mappingType": 1, 291 | "mappingTypes": [ 292 | { 293 | "name": "value to text", 294 | "value": 1 295 | }, 296 | { 297 | "name": "range to text", 298 | "value": 2 299 | } 300 | ], 301 | "maxDataPoints": 100, 302 | "nullPointMode": "connected", 303 | "nullText": null, 304 | "postfix": "", 305 | "postfixFontSize": "50%", 306 | "prefix": "", 307 | "prefixFontSize": "50%", 308 | "rangeMaps": [ 309 | { 310 | "from": "null", 311 | "text": "N/A", 312 | "to": "null" 313 | } 314 | ], 315 | "sparkline": { 316 | "fillColor": "#F2495C", 317 | "full": false, 318 | "lineColor": "#F2495C", 319 | "show": true 320 | }, 321 | "tableColumn": "", 322 | "targets": [ 323 | { 324 | "expr": "sum(kie_server_job_executed_total{failed=\"true\"})", 325 | "format": "time_series", 326 | "intervalFactor": 1, 327 | "refId": "A" 328 | } 329 | ], 330 | "thresholds": "100", 331 | "timeFrom": null, 332 | "timeShift": null, 333 | "title": "Failed Jobs", 334 | "type": "singlestat", 335 | "valueFontSize": "80%", 336 | "valueMaps": [ 337 | { 338 | "op": "=", 339 | "text": "0", 340 | "value": "null" 341 | } 342 | ], 343 | "valueName": "current" 344 | }, 345 | { 346 | "cacheTimeout": null, 347 | "colorBackground": false, 348 | "colorValue": false, 349 | "colors": [ 350 | "#299c46", 351 | "rgba(237, 129, 40, 0.89)", 352 | "#d44a3a" 353 | ], 354 | "format": "none", 355 | "gauge": { 356 | "maxValue": 100, 357 | "minValue": 0, 358 | "show": false, 359 | "thresholdLabels": false, 360 | "thresholdMarkers": true 361 | }, 362 | "gridPos": { 363 | "h": 5, 364 | "w": 3, 365 | "x": 18, 366 | "y": 0 367 | }, 368 | "id": 9, 369 | "interval": null, 370 | "links": [], 371 | "mappingType": 1, 372 | "mappingTypes": [ 373 | { 374 | "name": "value to text", 375 | "value": 1 376 | }, 377 | { 378 | "name": "range to text", 379 | "value": 2 380 | } 381 | ], 382 | "maxDataPoints": 100, 383 | "nullPointMode": "connected", 384 | "nullText": null, 385 | "postfix": "", 386 | "postfixFontSize": "50%", 387 | "prefix": "", 388 | "prefixFontSize": "50%", 389 | "rangeMaps": [ 390 | { 391 | "from": "null", 392 | "text": "N/A", 393 | "to": "null" 394 | } 395 | ], 396 | "sparkline": { 397 | "fillColor": "rgba(31, 118, 189, 0.18)", 398 | "full": false, 399 | "lineColor": "rgb(31, 120, 193)", 400 | "show": true 401 | }, 402 | "tableColumn": "", 403 | "targets": [ 404 | { 405 | "expr": "sum(kie_server_job_scheduled_total)", 406 | "format": "time_series", 407 | "intervalFactor": 1, 408 | "refId": "A" 409 | } 410 | ], 411 | "thresholds": "", 412 | "timeFrom": null, 413 | "timeShift": null, 414 | "title": "Scheduled Jobs", 415 | "type": "singlestat", 416 | "valueFontSize": "80%", 417 | "valueMaps": [ 418 | { 419 | "op": "=", 420 | "text": "0", 421 | "value": "null" 422 | } 423 | ], 424 | "valueName": "current" 425 | }, 426 | { 427 | "cacheTimeout": null, 428 | "colorBackground": false, 429 | "colorValue": false, 430 | "colors": [ 431 | "#299c46", 432 | "rgba(237, 129, 40, 0.89)", 433 | "#d44a3a" 434 | ], 435 | "format": "none", 436 | "gauge": { 437 | "maxValue": 100, 438 | "minValue": 0, 439 | "show": false, 440 | "thresholdLabels": false, 441 | "thresholdMarkers": true 442 | }, 443 | "gridPos": { 444 | "h": 5, 445 | "w": 3, 446 | "x": 21, 447 | "y": 0 448 | }, 449 | "id": 5, 450 | "interval": null, 451 | "links": [], 452 | "mappingType": 1, 453 | "mappingTypes": [ 454 | { 455 | "name": "value to text", 456 | "value": 1 457 | }, 458 | { 459 | "name": "range to text", 460 | "value": 2 461 | } 462 | ], 463 | "maxDataPoints": 100, 464 | "nullPointMode": "connected", 465 | "nullText": null, 466 | "postfix": "", 467 | "postfixFontSize": "50%", 468 | "prefix": "", 469 | "prefixFontSize": "50%", 470 | "rangeMaps": [ 471 | { 472 | "from": "null", 473 | "text": "N/A", 474 | "to": "null" 475 | } 476 | ], 477 | "sparkline": { 478 | "fillColor": "rgba(31, 118, 189, 0.18)", 479 | "full": false, 480 | "lineColor": "rgb(31, 120, 193)", 481 | "show": true 482 | }, 483 | "tableColumn": "", 484 | "targets": [ 485 | { 486 | "expr": "kie_server_job_cancelled_total", 487 | "format": "time_series", 488 | "intervalFactor": 1, 489 | "refId": "A" 490 | } 491 | ], 492 | "thresholds": "", 493 | "timeFrom": null, 494 | "timeShift": null, 495 | "title": "Cancelled Jobs", 496 | "type": "singlestat", 497 | "valueFontSize": "80%", 498 | "valueMaps": [ 499 | { 500 | "op": "=", 501 | "text": "0", 502 | "value": "null" 503 | } 504 | ], 505 | "valueName": "avg" 506 | }, 507 | { 508 | "aliasColors": {}, 509 | "bars": false, 510 | "dashLength": 10, 511 | "dashes": false, 512 | "fill": 1, 513 | "gridPos": { 514 | "h": 7, 515 | "w": 24, 516 | "x": 0, 517 | "y": 5 518 | }, 519 | "id": 12, 520 | "legend": { 521 | "avg": false, 522 | "current": false, 523 | "max": false, 524 | "min": false, 525 | "show": true, 526 | "total": false, 527 | "values": false 528 | }, 529 | "lines": true, 530 | "linewidth": 1, 531 | "links": [], 532 | "nullPointMode": "null", 533 | "paceLength": 10, 534 | "percentage": false, 535 | "pointradius": 2, 536 | "points": false, 537 | "renderer": "flot", 538 | "seriesOverrides": [], 539 | "stack": false, 540 | "steppedLine": false, 541 | "targets": [ 542 | { 543 | "expr": "sum(kie_server_job_duration_seconds_sum) by (command_name)", 544 | "format": "time_series", 545 | "intervalFactor": 1, 546 | "legendFormat": "{{command_name}}", 547 | "refId": "A" 548 | } 549 | ], 550 | "thresholds": [], 551 | "timeFrom": null, 552 | "timeRegions": [], 553 | "timeShift": null, 554 | "title": "Total Job Execution Time Per Command", 555 | "tooltip": { 556 | "shared": true, 557 | "sort": 0, 558 | "value_type": "individual" 559 | }, 560 | "type": "graph", 561 | "xaxis": { 562 | "buckets": null, 563 | "mode": "time", 564 | "name": null, 565 | "show": true, 566 | "values": [] 567 | }, 568 | "yaxes": [ 569 | { 570 | "format": "s", 571 | "label": null, 572 | "logBase": 1, 573 | "max": null, 574 | "min": null, 575 | "show": true 576 | }, 577 | { 578 | "format": "short", 579 | "label": null, 580 | "logBase": 1, 581 | "max": null, 582 | "min": null, 583 | "show": true 584 | } 585 | ], 586 | "yaxis": { 587 | "align": false, 588 | "alignLevel": null 589 | } 590 | }, 591 | { 592 | "aliasColors": {}, 593 | "bars": false, 594 | "dashLength": 10, 595 | "dashes": false, 596 | "fill": 1, 597 | "gridPos": { 598 | "h": 9, 599 | "w": 24, 600 | "x": 0, 601 | "y": 12 602 | }, 603 | "hideTimeOverride": false, 604 | "id": 7, 605 | "interval": "", 606 | "legend": { 607 | "alignAsTable": false, 608 | "avg": false, 609 | "current": false, 610 | "max": false, 611 | "min": false, 612 | "show": false, 613 | "total": false, 614 | "values": false 615 | }, 616 | "lines": true, 617 | "linewidth": 1, 618 | "links": [], 619 | "nullPointMode": "null as zero", 620 | "paceLength": 10, 621 | "percentage": false, 622 | "pointradius": 2, 623 | "points": false, 624 | "renderer": "flot", 625 | "seriesOverrides": [], 626 | "stack": false, 627 | "steppedLine": false, 628 | "targets": [ 629 | { 630 | "expr": "rate(kie_server_job_duration_seconds_sum[1m])", 631 | "format": "time_series", 632 | "instant": false, 633 | "interval": "", 634 | "intervalFactor": 1, 635 | "legendFormat": "{{command_name}}", 636 | "refId": "A" 637 | } 638 | ], 639 | "thresholds": [], 640 | "timeFrom": null, 641 | "timeRegions": [], 642 | "timeShift": null, 643 | "title": "Job Duration", 644 | "tooltip": { 645 | "shared": false, 646 | "sort": 0, 647 | "value_type": "individual" 648 | }, 649 | "type": "graph", 650 | "xaxis": { 651 | "buckets": null, 652 | "mode": "time", 653 | "name": null, 654 | "show": true, 655 | "values": [] 656 | }, 657 | "yaxes": [ 658 | { 659 | "decimals": null, 660 | "format": "s", 661 | "label": "", 662 | "logBase": 1, 663 | "max": null, 664 | "min": "0", 665 | "show": true 666 | }, 667 | { 668 | "format": "short", 669 | "label": null, 670 | "logBase": 1, 671 | "max": null, 672 | "min": null, 673 | "show": false 674 | } 675 | ], 676 | "yaxis": { 677 | "align": false, 678 | "alignLevel": null 679 | } 680 | } 681 | ], 682 | "refresh": "10s", 683 | "schemaVersion": 18, 684 | "style": "dark", 685 | "tags": [], 686 | "templating": { 687 | "list": [] 688 | }, 689 | "time": { 690 | "from": "now-6h", 691 | "to": "now" 692 | }, 693 | "timepicker": { 694 | "refresh_intervals": [ 695 | "5s", 696 | "10s", 697 | "30s", 698 | "1m", 699 | "5m", 700 | "15m", 701 | "30m", 702 | "1h", 703 | "2h", 704 | "1d" 705 | ], 706 | "time_options": [ 707 | "5m", 708 | "15m", 709 | "1h", 710 | "6h", 711 | "12h", 712 | "24h", 713 | "2d", 714 | "7d", 715 | "30d" 716 | ] 717 | }, 718 | "timezone": "", 719 | "title": "jBPM Kie Server Jobs", 720 | "uid": "lPVHjJ3ik", 721 | "version": 3 722 | } -------------------------------------------------------------------------------- /docker-compose-examples/grafana/provisioning/datasources/datasource.yml: -------------------------------------------------------------------------------- 1 | # config file version 2 | apiVersion: 1 3 | 4 | # list of datasources that should be deleted from the database 5 | deleteDatasources: 6 | - name: Prometheus 7 | orgId: 1 8 | 9 | # list of datasources to insert/update depending 10 | # whats available in the database 11 | datasources: 12 | # name of the datasource. Required 13 | - name: Prometheus 14 | # datasource type. Required 15 | type: prometheus 16 | # access mode. direct or proxy. Required 17 | access: proxy 18 | # org id. will default to orgId 1 if not specified 19 | orgId: 1 20 | # url 21 | url: http://prometheus:9090 22 | # database password, if used 23 | password: 24 | # database user, if used 25 | user: 26 | # database name, if used 27 | database: 28 | # enable/disable basic auth 29 | basicAuth: true 30 | # basic auth username 31 | basicAuthUser: admin 32 | # basic auth password 33 | basicAuthPassword: foobar 34 | # enable/disable with credentials headers 35 | withCredentials: 36 | # mark as default datasource. Max one per org 37 | isDefault: true 38 | # fields that will be converted to json and stored in json_data 39 | jsonData: 40 | graphiteVersion: "1.1" 41 | tlsAuth: false 42 | tlsAuthWithCACert: false 43 | # json object of data that will be encrypted. 44 | secureJsonData: 45 | tlsCACert: "..." 46 | tlsClientCert: "..." 47 | tlsClientKey: "..." 48 | version: 1 49 | # allow users to edit datasources from the UI. 50 | editable: true 51 | -------------------------------------------------------------------------------- /docker-compose-examples/grafana/provisioning/notifiers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jboss-dockerfiles/jbpm/cd53853438c7e2a45446600eb9c0dd9e6fb76939/docker-compose-examples/grafana/provisioning/notifiers/.gitkeep -------------------------------------------------------------------------------- /docker-compose-examples/jbpm-full-mysql.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | volumes: 4 | mysql_data: 5 | driver: local 6 | 7 | services: 8 | mysql: 9 | image: mysql:5.7 10 | volumes: 11 | - mysql_data:/var/lib/mysql 12 | environment: 13 | MYSQL_ROOT_PASSWORD: root 14 | MYSQL_DATABASE: jbpm 15 | MYSQL_USER: jbpm 16 | MYSQL_PASSWORD: jbpm 17 | jbpm: 18 | image: jboss/jbpm-server-full 19 | environment: 20 | JBPM_DB_DRIVER: mysql 21 | JBPM_DB_HOST: mysql 22 | ports: 23 | - 8080:8080 24 | - 8001:8001 25 | depends_on: 26 | - mysql 27 | -------------------------------------------------------------------------------- /docker-compose-examples/jbpm-full-postgres.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | volumes: 4 | postgres_data: 5 | driver: local 6 | 7 | services: 8 | postgres: 9 | image: postgres:9.6 10 | volumes: 11 | - postgres_data:/var/lib/postgresql/data 12 | environment: 13 | POSTGRES_DB: jbpm 14 | POSTGRES_USER: jbpm 15 | POSTGRES_PASSWORD: jbpm 16 | jbpm: 17 | image: jboss/jbpm-server-full 18 | environment: 19 | JBPM_DB_DRIVER: postgres 20 | JBPM_DB_HOST: postgres 21 | ports: 22 | - 8080:8080 23 | - 8001:8001 24 | depends_on: 25 | - postgres -------------------------------------------------------------------------------- /docker-compose-examples/jbpm-kie-server-prometheus-grafana.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | services: 4 | jbpm: 5 | image: jboss/jbpm-server-full:latest 6 | ports: 7 | - 8080:8080 8 | - 8001:8001 9 | 10 | prometheus: 11 | image: prom/prometheus:v2.8.0 12 | volumes: 13 | - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml 14 | command: 15 | - '--config.file=/etc/prometheus/prometheus.yml' 16 | ports: 17 | - '9090:9090' 18 | depends_on: 19 | - jbpm 20 | 21 | grafana: 22 | image: grafana/grafana:6.0.1 23 | depends_on: 24 | - prometheus 25 | ports: 26 | - 3000:3000 27 | volumes: 28 | - ./grafana/provisioning/:/etc/grafana/provisioning/ 29 | -------------------------------------------------------------------------------- /docker-compose-examples/jbpm-kie-server.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | services: 4 | business-central: 5 | image: jboss/jbpm-workbench-showcase 6 | ports: 7 | - 8080:8080 8 | - 8001:8001 9 | kie-server: 10 | image: jboss/kie-server-showcase 11 | environment: 12 | KIE_SERVER_LOCATION: http://kie-server:8080/kie-server/services/rest/server 13 | KIE_SERVER_CONTROLLER: http://business-central:8080/business-central/rest/controller 14 | KIE_MAVEN_REPO: http://business-central:8080/business-central/maven2 15 | ports: 16 | - 8180:8080 17 | depends_on: 18 | - business-central -------------------------------------------------------------------------------- /docker-compose-examples/prometheus/prometheus.yml: -------------------------------------------------------------------------------- 1 | # A scrape configuration containing exactly one endpoint to scrape: 2 | scrape_configs: 3 | # The job name is added as a label `job=` to any timeseries scraped from this config. 4 | - job_name: 'kie-server' 5 | 6 | scrape_interval: 10s 7 | 8 | metrics_path: /kie-server/services/rest/metrics 9 | 10 | basic_auth: 11 | username: 'kieserver' 12 | password: 'kieserver1!' 13 | 14 | static_configs: 15 | - targets: ['jbpm:8080'] 16 | 17 | # - targets: ['host.docker.internal:8080'] 18 | -------------------------------------------------------------------------------- /server/Dockerfile: -------------------------------------------------------------------------------- 1 | ########################################################################### 2 | # Dockerfile that provides the image for JBoss jBPM Server Full 7.18.0.Final 3 | ########################################################################### 4 | 5 | ####### BASE ############ 6 | FROM jboss/wildfly:14.0.1.Final 7 | 8 | ####### MAINTAINER ############ 9 | MAINTAINER "Michael Biarnes Kiefer" "mbiarnes@redhat.com" 10 | 11 | ####### ENVIRONMENT ############ 12 | ENV JBOSS_BIND_ADDRESS 0.0.0.0 13 | ENV KIE_REPOSITORY https://download.jboss.org/jbpm/release 14 | ENV KIE_VERSION 7.18.0.Final 15 | ENV KIE_CLASSIFIER wildfly14 16 | ENV KIE_CONTEXT_PATH business-central 17 | ENV KIE_SERVER_ID sample-server 18 | ENV KIE_SERVER_LOCATION http://localhost:8080/kie-server/services/rest/server 19 | ENV EXTRA_OPTS -Dorg.jbpm.ht.admin.group=admin -Dorg.uberfire.nio.git.ssh.host=$JBOSS_BIND_ADDRESS 20 | 21 | ####### JBPM-WB ############ 22 | RUN curl -o $HOME/jbpm-server-dist.zip $KIE_REPOSITORY/$KIE_VERSION/jbpm-server-$KIE_VERSION-dist.zip && \ 23 | unzip -o -q jbpm-server-dist.zip -d $JBOSS_HOME && \ 24 | rm -rf $HOME/jbpm-server-dist.zip 25 | 26 | ####### CONFIGURATION ############ 27 | USER root 28 | ADD etc/start_jbpm-wb.sh $JBOSS_HOME/bin/start_jbpm-wb.sh 29 | ADD etc/update_db_config.sh $JBOSS_HOME/bin/update_db_config.sh 30 | RUN chown jboss:jboss $JBOSS_HOME/standalone/deployments/* 31 | RUN chown jboss:jboss $JBOSS_HOME/bin/start_jbpm-wb.sh 32 | RUN chown jboss:jboss $JBOSS_HOME/bin/update_db_config.sh 33 | RUN sed -i '//d' $JBOSS_HOME/standalone/configuration/standalone.xml 34 | RUN sed -i '//d' $JBOSS_HOME/standalone/configuration/standalone.xml 35 | 36 | ####### CUSTOM JBOSS USER ############ 37 | # Switchback to jboss user 38 | USER jboss 39 | 40 | ####### EXPOSE INTERNAL JBPM GIT PORT ############ 41 | EXPOSE 8001 42 | 43 | ####### RUNNING JBPM-WB ############ 44 | WORKDIR $JBOSS_HOME/bin/ 45 | CMD ["./start_jbpm-wb.sh"] 46 | -------------------------------------------------------------------------------- /server/README.md: -------------------------------------------------------------------------------- 1 | jBPM Workbench Showcase Docker image 2 | ===================================== 3 | 4 | JBoss jBPM Server Full [Docker](http://docker.io/) image. 5 | 6 | Table of contents 7 | ------------------ 8 | 9 | * Introduction 10 | * Usage 11 | * Users and roles 12 | * Database 13 | * Logging 14 | * GIT internal repository access 15 | * Persistent configuration 16 | * Environment variables 17 | * Experimenting 18 | * Troubleshooting 19 | * Notes 20 | * Release notes 21 | 22 | Introduction 23 | ------------ 24 | 25 | The image contains: 26 | 27 | * JBoss Wildfly 14.0.1.Final 28 | * jBPM Workbench 7.18.0.Final 29 | * KIE Server 7.18.0.Final 30 | * jBPM Case Management Showcase 7.18.0.Final 31 | 32 | This is a **ready to run Docker image for jBPM Workbench**. Just run it and try the jBPM Workbench! 33 | 34 | Usage 35 | ----- 36 | 37 | To run a container: 38 | 39 | docker run -p 8080:8080 -p 8001:8001 -d --name jbpm-server-full jboss/jbpm-server-full:latest 40 | 41 | Once container and web applications started, you can navigate to it using one of the users described in section `Users and roles`, using the following URL: 42 | 43 | http://localhost:8080/business-central 44 | 45 | Users and roles 46 | ---------------- 47 | 48 | This showcase image contains default users and roles: 49 | 50 | USER PASSWORD ROLE 51 | ************************************************* 52 | wbadmin wbadmin admin,analyst,user,process-admin,kie-server 53 | krisv krisv admin,analyst,user,process-admin,kie-server 54 | john john analyst,Accounting,PM,kie-server 55 | sales-rep sales-rep analyst,sales,kie-server 56 | katy katy analyst,HR,kie-server 57 | jack jack analyst,IT,kie-server 58 | 59 | Database 60 | -------- 61 | 62 | This image supports using H2, MySQL, PostgreSQL as the database. By default with H2 database with file storage - located under /standalone/data/jbpm-db. 63 | The container configuration allows you to switch to either MySQL or PostgreSQL database via a set of environment variables. 64 | Alternatively, you can use the provided Docker compose examples to get started using an alternative database. 65 | 66 | ## Docker compose examples 67 | 68 | ### MySQL Example 69 | 70 | docker-compose -f docker-compose-examples/jbpm-full-mysql.yml up 71 | 72 | ### PostgreSQL Example 73 | 74 | docker-compose -f docker-compose-examples/jbpm-full-postgres.yml up 75 | 76 | ## Environment variables 77 | 78 | * `JBPM_DB_DRIVER` = Specify which database driver to use. Allows either: 'h2', 'mysql' or 'postgres'. Default: 'h2'. 79 | * `JBPM_DB_HOST` = Specify hostname of the database. Default: 'localhost' 80 | * `JBPM_DB_PORT` = Specify port of the database. Default: '3306' if using 'mysql' driver or '5432' in case of 'postgres'. 81 | * `JBPM_DB_NAME` = Specify name of the database to use. Default: 'jbpm' 82 | * `JBPM_DB_USER` = Specify user to use to authenticate to the database. Default: 'jbpm' 83 | * `JBPM_DB_PASSWORD` = Specify user's password to use to authenticate to the database. Default: 'jbpm' 84 | 85 | ### MySQL Example 86 | 87 | docker run -p 8080:8080 -p 8001:8001 -d --name jbpm-server-full -e JBPM_DB_DRIVER=mysql -e JBPM_DB_HOST=172.17.0.1 jboss/jbpm-server-full:latest 88 | 89 | ### PostgreSQL Example 90 | 91 | docker run -p 8080:8080 -p 8001:8001 -d --name jbpm-server-full -e JBPM_DB_DRIVER=postgres -e JBPM_DB_HOST=172.17.0.1 jboss/jbpm-server-full:latest 92 | 93 | Logging 94 | ------- 95 | 96 | You can see all logs generated by the `standalone` binary running: 97 | 98 | docker logs [-f] 99 | 100 | You can attach the container by running: 101 | 102 | docker attach 103 | 104 | The jBPM Workbench and Kie Server web applications logs can be found inside the container at path: 105 | 106 | /opt/jboss/wildfly/standalone/log/server.log 107 | 108 | Example: 109 | sudo nsenter -t $(docker inspect --format '{{ .State.Pid }}' $(docker ps -lq)) -m -u -i -n -p -w 110 | -bash-4.2# tail -f /opt/jboss/wildfly/standalone/log/server.log 111 | 112 | GIT internal repository access 113 | ------------------------------ 114 | 115 | The workbench stores all the project artifacts in an internal GIT repository. By default, the protocol available for accessing the GIT repository is `SSH` at port `8001`. 116 | 117 | As an example, if you import the `IT_Orders` sample project, you can clone it by running: 118 | 119 | git clone ssh://wbadmin@localhost:8001/MySpace/IT_Orders 120 | 121 | NOTE: Users and password for ssh access are the same that for the web application users defined at the realm files. 122 | 123 | By default, the GIT repository is created when the application starts for first time at `$WORKING_DIR/.niogit`, considering `$WORKING_DIR` as the current directory where the application server is started. 124 | 125 | You can specify a custom repository location by setting the following Java system property to your target file system directory: 126 | 127 | -Dorg.uberfire.nio.git.dir=/home/youruser/some/path 128 | 129 | NOTE: This directory can be shared with your docker host and with another containers using shared volumes when running the container, if you need so. 130 | 131 | 132 | Persistent configuration 133 | ------------------------ 134 | 135 | As Docker defaults, once a container has been removed, the data within that container is removed as well. That includes any assets you created and projects that you deployed to the Kie Server using the local Maven repository. 136 | 137 | In the case you need to create a persistent environment you can use an approach based on [Docker Volumes](https://docs.docker.com/engine/tutorials/dockervolumes/). Here are two ways of doing it. 138 | 139 | **Using default GIT root directory** 140 | 141 | By default, the internal GIT root directory for the workbench container is located at `/opt/jboss/wildfly/bin/.niogit`, so you can make this directory persistent in your docker host by running the container using a docker shared volume as: 142 | 143 | # Use -v : 144 | docker run -p 8080:8080 -p 8001:8001 -v /home/myuser/wb_git:/opt/jboss/wildfly/bin/.niogit:Z -d --name jbpm-server-full jboss/jbpm-server-full:latest 145 | 146 | Please create `/home/myuser/wb_git` before running the docker container and ensure you have set the right permissions. 147 | As the above command, now your workbench git repository will be persistent at your host filesystem's path `/home/myuser/wb_git`. So if you remove this container and start a new one just by using same shared volume, you'll find all your assets on the new workbench's container as well. 148 | 149 | In order to keep the git repositories between different containers you can just start the container by configuring a new host volume as: 150 | 151 | # Use -v : 152 | docker run -p 8080:8080 -p 8001:8001 -v /home/myuser/wb_git:/opt/jboss/wildfly/.niogit:Z -d --name jbpm-workbench jboss/jbpm-workbench-showcase:MY_TAG 153 | 154 | As the above command, now your workbench git repository will be persistent at your local filesystem path `/home/myuser/wb_git`. So if you remove this container and start a new one just by using same shared volume, you'll find all your assets on the new workbench's container as well. 155 | 156 | Environment variables 157 | --------------------- 158 | 159 | * `KIE_SERVER_ID` = Specify the identifier to be used by the Kie Server configuration. Default: 'sample-server' 160 | * `KIE_SERVER_LOCATION` = Specify the public url for the Kie Server. Default: 'http://localhost:8080/kie-server/services/rest/server' 161 | 162 | Experimenting 163 | ------------- 164 | 165 | To spin up a shell in one of the containers try: 166 | 167 | docker run -t -i -p 8080:8080 -p 8001:8001 jboss/jbpm-server-full:latest /bin/bash 168 | 169 | You can then noodle around the container and run stuff & look at files etc. 170 | 171 | Troubleshooting 172 | --------------- 173 | 174 | If the application can't be accessed via browser (http://localhost:8080/business-central) please run the container in [host network mode](https://docs.docker.com/engine/reference/run/#network-settings). It seems that latest docker versions have some restrictions on the networking side. Using an older daemon version this does not happen. 175 | Try: 176 | 177 | docker run ... --network="host" ... 178 | 179 | Notes 180 | ----- 181 | 182 | * jBPM Workbench version is `7.18.0.Final` 183 | * The context path for jBPM Workbench web application is `business-central` 184 | * KIE Server version is `7.18.0.Final` 185 | * The context path for KIE Server web application is `kie-server` 186 | * jBPM Case Management Showcase version is `7.18.0.Final` 187 | * The context path for jBPM Case Management Showcase web application is `jbpm-casemgmt` 188 | * jBPM Server Full requires running JBoss Wildfly 14.0.1 using the `full` server profile 189 | * Examples and demos are always available, also when not connected to internet 190 | * No support for clustering 191 | * Use of embedded H2 database server by default 192 | * No support for Wildfly domain mode, just standalone mode 193 | * This image is not intended to be run on cloud environments such as RedHat OpenShift or Amazon EC2, as it does not meet all the requirements. 194 | * Please give us your feedback or report a issue at [jBPM Setup](https://groups.google.com/forum/#!forum/jbpm-setup) or [jBPM Usage](https://groups.google.com/forum/#!forum/jbpm-usage) Google groups. 195 | 196 | Release notes 197 | -------------- 198 | 199 | **7.18.0.Final** 200 | 201 | * See release notes for [jBPM](http://docs.jboss.org/jbpm/release/7.18.0.Final/jbpm-docs/html_single/#_jbpmreleasenotes) 202 | -------------------------------------------------------------------------------- /server/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # *************************************************** 4 | # jBPM Server Full - Docker image build script 5 | # *************************************************** 6 | 7 | IMAGE_NAME="jboss/jbpm-server-full" 8 | IMAGE_TAG="latest" 9 | 10 | 11 | # Build the container image. 12 | echo "Building the Docker container for $IMAGE_NAME:$IMAGE_TAG.." 13 | docker build --rm -t $IMAGE_NAME:$IMAGE_TAG . 14 | echo "Build done" 15 | -------------------------------------------------------------------------------- /server/etc/start_jbpm-wb.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Start Wildfly with the given arguments. 4 | echo "Update database connection setup" 5 | ./update_db_config.sh 6 | echo "Running jBPM Server Full on JBoss Wildfly..." 7 | exec ./standalone.sh -b $JBOSS_BIND_ADDRESS $EXTRA_OPTS -Dorg.kie.server.location=$KIE_SERVER_LOCATION -Dorg.kie.server.id=$KIE_SERVER_ID 8 | exit $? 9 | -------------------------------------------------------------------------------- /server/etc/update_db_config.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ -z "$JBPM_DB_DRIVER" ]]; then 4 | export JBPM_DB_DRIVER="h2" 5 | fi 6 | 7 | if [[ -z "$JBPM_DB_HOST" ]]; then 8 | export JBPM_DB_HOST="localhost" 9 | fi 10 | 11 | if [[ -z "$JBPM_DB_PORT" ]]; then 12 | if [ "$JBPM_DB_DRIVER" == "mysql" ] && [ -z "$JBPM_DB_PORT" ]; then 13 | export JBPM_DB_PORT="3306" 14 | fi 15 | if [ "$JBPM_DB_DRIVER" == "postgres" ] && [ -z "$JBPM_DB_PORT" ]; then 16 | export JBPM_DB_PORT="5432" 17 | fi 18 | fi 19 | 20 | if [[ -z "$JBPM_DB_NAME" ]]; then 21 | export JBPM_DB_NAME="jbpm" 22 | fi 23 | 24 | if [[ -z "$JBPM_DB_USER" ]]; then 25 | export JBPM_DB_USER="jbpm" 26 | fi 27 | 28 | if [[ -z "$JBPM_DB_PASSWORD" ]]; then 29 | export JBPM_DB_PASSWORD="jbpm" 30 | fi 31 | 32 | if [ $JBPM_DB_DRIVER == "h2" ]; then 33 | echo "Using embedded H2 database configuration" 34 | exit 0 35 | fi 36 | 37 | echo "" 38 | echo "Using Database settings:" 39 | echo "Driver: $JBPM_DB_DRIVER" 40 | echo "Host: $JBPM_DB_HOST" 41 | echo "Port: $JBPM_DB_PORT" 42 | echo "Name: $JBPM_DB_NAME" 43 | echo "User: $JBPM_DB_USER" 44 | 45 | # If cli file not found, exit. 46 | CLI_FILE=./jbpm-$JBPM_DB_DRIVER-config.cli 47 | 48 | echo "Updating driver config for database: $JBPM_DB_DRIVER" 49 | if [ ! -f $CLI_FILE ]; then 50 | echo "Configuration file for Driver $JBPM_DB_DRIVER, does not exist, running H2 embedded database instead." 51 | exit 0 52 | fi 53 | 54 | sed -i "s/--user-name=jbpm/--user-name=$JBPM_DB_USER/" $CLI_FILE 55 | sed -i "s/--password=jbpm/--password=$JBPM_DB_PASSWORD/" $CLI_FILE 56 | sed -i "s/ServerName=localhost/ServerName=$JBPM_DB_HOST/" $CLI_FILE 57 | sed -i "s/DatabaseName=jbpm/DatabaseName=$JBPM_DB_NAME/" $CLI_FILE 58 | if [ "$JBPM_DB_DRIVER" == "mysql" ]; then 59 | sed -i "s/PortNumber=3306/PortNumber=$JBPM_DB_PORT/" $CLI_FILE 60 | fi 61 | if [ "$JBPM_DB_DRIVER" == "postgres" ]; then 62 | sed -i "s/PortNumber=5432/PortNumber=$JBPM_DB_PORT/" $CLI_FILE 63 | fi 64 | 65 | ./jboss-cli.sh --file=$CLI_FILE 66 | exit $? -------------------------------------------------------------------------------- /server/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # ****************************************** 4 | # jBPM Workbench - Docker image start script 5 | # ****************************************** 6 | 7 | # Program arguments 8 | # 9 | # -c | --container-name: The name for the created container. 10 | # If not specified, defaults to "jbpm-workbench" 11 | # -h | --help; Show the script usage 12 | # 13 | 14 | CONTAINER_NAME="jbpm-server-full" 15 | IMAGE_NAME="jboss/jbpm-server-full" 16 | IMAGE_TAG="latest" 17 | 18 | 19 | function usage 20 | { 21 | echo "usage: start.sh [ [-c ] ] [-h]]" 22 | } 23 | 24 | while [ "$1" != "" ]; do 25 | case $1 in 26 | -c | --container-name ) shift 27 | CONTAINER_NAME=$1 28 | ;; 29 | -h | --help ) usage 30 | exit 31 | ;; 32 | * ) usage 33 | exit 1 34 | esac 35 | shift 36 | done 37 | 38 | # Check if container is already started 39 | if [ -f docker.pid ]; then 40 | echo "Container already started" 41 | container_id=$(cat docker.pid) 42 | echo "Stopping container $container_id..." 43 | docker stop $container_id 44 | docker rm $container_id 45 | rm -f docker.pid 46 | fi 47 | 48 | # Start the JBoss jBPM Server Full docker container 49 | echo "Starting $CONTAINER_NAME docker container using:" 50 | echo "** Container name: $CONTAINER_NAME" 51 | image_jbpm_workbench=$(docker run -P -d --name $CONTAINER_NAME $IMAGE_NAME:$IMAGE_TAG) 52 | ip_jbpm_workbench=$(docker inspect $image_jbpm_workbench | grep -m 1 \"IPAddress\" | awk '{print $2}' | tr -d '",') 53 | echo $image_jbpm_workbench > docker.pid 54 | 55 | # End 56 | echo "" 57 | echo "Server starting in $ip_jbpm_workbench" 58 | echo "You can access the server root context in http://$ip_jbpm_workbench:8080" 59 | echo "jBPM Workbench is running at http://$ip_jbpm_workbench:8080/business-central" 60 | echo "KIE Server Swagger documentation is running at http://$ip_jbpm_workbench:8080/kie-server/docs" 61 | echo "jBPM Case Management Showcase is running at http://$ip_jbpm_workbench:8080/jbpm-casemgmt" 62 | 63 | exit 0 64 | -------------------------------------------------------------------------------- /showcase/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################################# 2 | # Dockerfile that provides the image for JBoss jBPM Workbench 7.18.0.Final Showcase 3 | ################################################################################# 4 | 5 | ####### BASE ############ 6 | FROM jboss/jbpm-workbench:7.18.0.Final 7 | 8 | ####### MAINTAINER ############ 9 | MAINTAINER "Michael Biarnes Kiefer" "mbiarnes@redhat.com" 10 | 11 | ####### ENVIRONMENT ############ 12 | # Use demo and examples by default in this showcase image (internet connection required). 13 | ENV KIE_SERVER_PROFILE standalone 14 | ENV JAVA_OPTS -Xms256m -Xmx2048m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 15 | 16 | ####### jBPM Workbench CUSTOM CONFIGURATION ############ 17 | ADD etc/application-users.properties $JBOSS_HOME/standalone/configuration/application-users.properties 18 | ADD etc/application-roles.properties $JBOSS_HOME/standalone/configuration/application-roles.properties 19 | ADD etc/jbpm-custom.cli $JBOSS_HOME/bin/jbpm-custom.cli 20 | 21 | # Added files are chowned to root user, change it to the jboss one. 22 | USER root 23 | RUN chown jboss:jboss $JBOSS_HOME/standalone/configuration/application-users.properties && \ 24 | chown jboss:jboss $JBOSS_HOME/standalone/configuration/application-roles.properties 25 | 26 | # Switchback to jboss user 27 | USER jboss 28 | RUN $JBOSS_HOME/bin/jboss-cli.sh --file=$JBOSS_HOME/bin/jbpm-custom.cli && \ 29 | rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/current 30 | 31 | ####### RUNNING JBPM-WB ############ 32 | WORKDIR $JBOSS_HOME/bin/ 33 | CMD ["./start_jbpm-wb.sh"] 34 | -------------------------------------------------------------------------------- /showcase/README.md: -------------------------------------------------------------------------------- 1 | jBPM Workbench Showcase Docker image 2 | ===================================== 3 | 4 | JBoss jBPM Workbench Showcase [Docker](http://docker.io/) image. 5 | 6 | Table of contents 7 | ------------------ 8 | 9 | * Introduction 10 | * Usage 11 | * Users and roles 12 | * Logging 13 | * GIT internal repository access 14 | * Persistent configuration 15 | * Experimenting 16 | * Troubleshooting 17 | * Notes 18 | * Release notes 19 | 20 | Introduction 21 | ------------ 22 | 23 | The image contains: 24 | 25 | * JBoss Wildfly 14.0.1.Final 26 | * jBPM Workbench 7.18.0.Final 27 | 28 | This image inherits from `jboss/jbpm-workbench:latest` and provides some additional configurations: 29 | 30 | * Default users and roles 31 | * Some examples 32 | 33 | This is a **ready to run Docker image for jBPM Workbench**. Just run it and try the jBPM Workbench! 34 | 35 | Usage 36 | ----- 37 | 38 | To run a container: 39 | 40 | docker run -p 8080:8080 -p 8001:8001 -d --name jbpm-workbench jboss/jbpm-workbench-showcase:latest 41 | 42 | Once container and web applications started, you can navigate to it using one of the users described in section `Users and roles`, using the following URL: 43 | 44 | http://localhost:8080/business-central 45 | 46 | 47 | Users and roles 48 | ---------------- 49 | 50 | This showcase image contains default users and roles: 51 | 52 | USER PASSWORD ROLE 53 | ************************************************* 54 | admin admin admin,analyst,kiemgmt 55 | krisv krisv admin,analyst 56 | john john analyst,Accounting,PM 57 | sales-rep sales-rep analyst,sales 58 | katy katy analyst,HR 59 | jack jack analyst,IT 60 | 61 | Logging 62 | ------- 63 | 64 | You can see all logs generated by the `standalone` binary running: 65 | 66 | docker logs [-f] 67 | 68 | You can attach the container by running: 69 | 70 | docker attach 71 | 72 | The jBPM Workbench web application logs can be found inside the container at path: 73 | 74 | /opt/jboss/wildfly/standalone/log/server.log 75 | 76 | Example: 77 | sudo nsenter -t $(docker inspect --format '{{ .State.Pid }}' $(docker ps -lq)) -m -u -i -n -p -w 78 | -bash-4.2# tail -f /opt/jboss/wildfly/standalone/log/server.log 79 | 80 | GIT internal repository access 81 | ------------------------------ 82 | 83 | The workbench stores all the project artifacts in an internal GIT repository. By default, the protocol available for accessing the GIT repository is `SSH` at port `8001`. 84 | 85 | As an example, if you import the `IT_Orders` sample project, you can clone it by running: 86 | 87 | git clone ssh://admin@localhost:8001/MySpace/IT_Orders 88 | 89 | By default, the GIT repository is created when the application starts for first time at `$WORKING_DIR/.niogit`, considering `$WORKING_DIR` as the current directory where the application server is started. 90 | 91 | You can specify a custom repository location by setting the following Java system property to your target file system directory: 92 | 93 | -Dorg.uberfire.nio.git.dir=/home/youruser/some/path 94 | 95 | NOTE: This directory can be shared with your docker host and with another containers using shared volumes when running the container, if you need so. 96 | 97 | If necessary you can make GIT repositories available from outside localhost using the following Java system property: 98 | 99 | -org.uberfire.nio.git.ssh.host=0.0.0.0 100 | 101 | You can set this Java system properties permanent by adding the following lines in your `standalone-full.xml` file as: 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | NOTE: Users and password for ssh access are the same that for the web application users defined at the realm files. 112 | 113 | Persistent configuration 114 | ------------------------ 115 | 116 | As Docker defaults, once a container has been removed, the data within that container is removed as well. 117 | 118 | At first glance this should not imply any issues as the assets authored on your workbench containers are not lost if you don't remove the container, you can stop and restart it 119 | as many times as you need, and have different kie execution server container's consuming those assets, the problem comes if you need to remove and create new workbench containers. 120 | 121 | In the case you need to create a persistent environment you can use an approach based on [Docker Volumes](https://docs.docker.com/engine/tutorials/dockervolumes/). Here are two ways of doing it. 122 | 123 | **Using default GIT root directory** 124 | 125 | By default, the internal GIT root directory for the workbench container is located at `/opt/jboss/wildfly/bin/.niogit`, so you can make this directory persistent in your docker host by running the container using a docker shared volume as: 126 | 127 | # Use -v : 128 | docker run -p 8080:8080 -p 8001:8001 -v /home/myuser/wb_git:/opt/jboss/wildfly/bin/.niogit:Z -d --name jbpm-workbench jboss/jbpm-workbench-showcase:latest 129 | 130 | Please create `/home/myuser/wb_git` before running the docker container and ensure you have set the right permissions. 131 | As the above command, now your workbench git repository will be persistent at your host filesystem's path `/home/myuser/wb_git`. So if you remove this container and start a new one just by using same shared volume, you'll find all your assets on the new workbench's container as well. 132 | 133 | **Using custom GIT root directory** 134 | 135 | Considering this showcase module as the base for this example, follow the next steps: 136 | 137 | 1.- Edit the [jbpm-custom.cli](./etc/jbpm-custom.cli) and uncomment the default GIT repository location for your favourite one: 138 | 139 | # Make GIT repositories root directory at /opt/jboss/wildfly/mygit. 140 | # if (outcome != success) of /system-property=org.uberfire.nio.git.dir:read-resource 141 | # /system-property=org.uberfire.nio.git.dir:add(value="/opt/jboss/wildfly/mygit") 142 | # else 143 | # /system-property=org.uberfire.nio.git.dir:write-attribute(name=value,value="/opt/jboss/wildfly/mygit") 144 | # end-if 145 | 146 | 2.- Edit the [Dockerfile](./Dockerfile) and add these lines: 147 | 148 | USER root 149 | RUN mkdir -p $JBOSS_HOME/mygit 150 | RUN chown jboss:jboss $JBOSS_HOME/mygit 151 | USER jboss 152 | 153 | 3.- Create your Docker image: 154 | 155 | docker build --rm -t jboss/jbpm-workbench-showcase:MY_TAG 156 | 157 | At this point, the default GIT root directory for the workbench will be located inside the Docker container at `/opt/jboss/wildfly/mygit/`. So all your assets will be stored in the underlying git structure on this path. 158 | 159 | In order to keep the git repositories between different containers you can just start the container by configuring a new host volume as: 160 | 161 | # Use -v : 162 | docker run -p 8080:8080 -p 8001:8001 -v /home/myuser/wb_git:/opt/jboss/wildfly/mygit:Z -d --name jbpm-workbench jboss/jbpm-workbench-showcase:MY_TAG 163 | 164 | As the above command, now your workbench git repository will be persistent at your local filesystem path `/home/myuser/wb_git`. So if you remove this container and start a new one just by using same shared volume, you'll find all your assets on the new workbench's container as well. 165 | 166 | Experimenting 167 | ------------- 168 | 169 | To spin up a shell in one of the containers try: 170 | 171 | docker run -t -i -p 8080:8080 -p 8001:8001 jboss/jbpm-workbench-showcase:latest /bin/bash 172 | 173 | You can then noodle around the container and run stuff & look at files etc. 174 | 175 | Troubleshooting 176 | --------------- 177 | 178 | If the application can't be accessed via browser (http://localhost:8080/business-central) please run the container in [host network mode](https://docs.docker.com/engine/reference/run/#network-settings). It seems that latest docker versions have some restrictions on the networking side. Using an older daemon version this does not happen. 179 | Try: 180 | 181 | docker run ... --network="host" ... 182 | 183 | Notes 184 | ----- 185 | 186 | * The context path for jBPM Workbench web application is `business-central` 187 | * jBPM Workbench version is `7.18.0.Final` 188 | * jBPM Workbench requires running JBoss Wildfly 14.0.1 using the `full` server profile 189 | * Examples and demos are always available, also when not connected to internet 190 | * No support for clustering 191 | * Use of embedded H2 database server by default 192 | * No support for Wildfly domain mode, just standalone mode 193 | * This image is not intended to be run on cloud environments such as RedHat OpenShift or Amazon EC2, as it does not meet all the requirements. 194 | * Please give us your feedback or report a issue at [jBPM Setup](https://groups.google.com/forum/#!forum/jbpm-setup) or [jBPM Usage](https://groups.google.com/forum/#!forum/jbpm-usage) Google groups. 195 | 196 | Release notes 197 | -------------- 198 | 199 | **7.18.0.Final** 200 | 201 | * See release notes for [jBPM](http://docs.jboss.org/jbpm/release/7.18.0.Final/jbpm-docs/html_single/#_jbpmreleasenotes) 202 | -------------------------------------------------------------------------------- /showcase/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # *************************************************** 4 | # jBPM Workbench Showcase - Docker image build script 5 | # *************************************************** 6 | 7 | IMAGE_NAME="jboss/jbpm-workbench-showcase" 8 | IMAGE_TAG="latest" 9 | 10 | 11 | # Build the container image. 12 | echo "Building the Docker container for $IMAGE_NAME:$IMAGE_TAG.." 13 | docker build --rm -t $IMAGE_NAME:$IMAGE_TAG . 14 | echo "Build done" 15 | -------------------------------------------------------------------------------- /showcase/etc/application-roles.properties: -------------------------------------------------------------------------------- 1 | admin=admin,analyst,kiemgmt,rest-all 2 | krisv=admin,analyst 3 | john=analyst,Accounting,PM 4 | sales-rep=analyst,sales 5 | jack=analyst,IT 6 | katy=analyst,HR 7 | -------------------------------------------------------------------------------- /showcase/etc/application-users.properties: -------------------------------------------------------------------------------- 1 | #admin=admin 2 | admin=207b6e0cc556d7084b5e2db7d822555c 3 | 4 | #krisv=krisv 5 | krisv=7b21a03b9918f9c629a46e119a9b8714 6 | 7 | #john=john 8 | john=afda4373c6021f3f5841cd6c0a027244 9 | 10 | #sales-rep=sales-rep 11 | sales-rep=b79a6ff72056e86c70eaa2922585ef25 12 | 13 | #katy=katy 14 | katy=fd37b5d0b82ce027bfad677a54fbccee 15 | 16 | #jack=jack 17 | jack=984ba30e11dda7b9ed86ba7b73d01481 18 | -------------------------------------------------------------------------------- /showcase/etc/jbpm-custom.cli: -------------------------------------------------------------------------------- 1 | embed-server --server-config=standalone.xml 2 | 3 | if (outcome != success) of /subsystem=security/security-domain=other/authentication=classic/login-module=org.kie.security.jaas.KieLoginModule:read-resource 4 | /subsystem=security/security-domain=other/authentication=classic/login-module=org.kie.security.jaas.KieLoginModule:add(code=org.kie.security.jaas.KieLoginModule, flag=required, module=deployment.business-central.war) 5 | end-if 6 | 7 | if (outcome != success) of /system-property=org.kie.demo:read-resource 8 | /system-property=org.kie.server.id:add(value="${org.kie.demo:true}") 9 | else 10 | /system-property=org.kie.demo:write-attribute(name=value,value="${org.kie.demo:true}") 11 | end-if 12 | 13 | if (outcome != success) of /system-property=org.kie.example:read-resource 14 | /system-property=org.kie.example:add(value="${org.kie.example:true}") 15 | else 16 | /system-property=org.kie.example:write-attribute(name=value,value="${org.kie.example:true}") 17 | end-if 18 | 19 | if (outcome != success) of /system-property=org.jbpm.designer.perspective:read-resource 20 | /system-property=org.jbpm.designer.perspective:add(value="${org.jbpm.designer.perspective:full}") 21 | else 22 | /system-property=org.jbpm.designer.perspective:write-attribute(name=value,value="${org.jbpm.designer.perspective:full}") 23 | end-if 24 | 25 | if (outcome != success) of /system-property=designerdataobjects:read-resource 26 | /system-property=designerdataobjects:add(value="${designerdataobjects:false}") 27 | else 28 | /system-property=designerdataobjects:write-attribute(name=value,value="${designerdataobjects:false}") 29 | end-if 30 | 31 | if (outcome != success) of /system-property=org.uberfire.nio.git.ssh.host:read-resource 32 | /system-property=org.uberfire.nio.git.ssh.host:add(value="0.0.0.0") 33 | else 34 | /system-property=org.uberfire.nio.git.ssh.host:write-attribute(name=value,value="0.0.0.0") 35 | end-if 36 | 37 | if (outcome != success) of /system-property=appformer.experimental.features:read-resource 38 | /system-property=appformer.experimental.features:add(value="true") 39 | else 40 | /system-property=appformer.experimental.features:write-attribute(name=value,value="true") 41 | end-if 42 | 43 | # Make GIT repositories root directory at /opt/jboss/wildfly/mygit. 44 | # if (outcome != success) of /system-property=org.uberfire.nio.git.dir:read-resource 45 | # /system-property=org.uberfire.nio.git.dir:add(value="/opt/jboss/wildfly/mygit") 46 | # else 47 | # /system-property=org.uberfire.nio.git.dir:write-attribute(name=value,value="/opt/jboss/wildfly/mygit") 48 | # end-if 49 | 50 | stop-embedded-server -------------------------------------------------------------------------------- /showcase/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # *************************************************** 4 | # jBPM Workbench Showcase - Docker image start script 5 | # **************************************************** 6 | 7 | # Program arguments 8 | # 9 | # -c | --container-name: The name for the created container. 10 | # If not specified, defaults to "jbpm-workbench-showcase" 11 | # -h | --help; Show the script usage 12 | # 13 | 14 | CONTAINER_NAME="jbpm-workbench-showcase" 15 | IMAGE_NAME="jboss/jbpm-workbench-showcase" 16 | IMAGE_TAG="latest" 17 | 18 | 19 | function usage 20 | { 21 | echo "usage: start.sh [ [-c ] ] [-h]]" 22 | } 23 | 24 | while [ "$1" != "" ]; do 25 | case $1 in 26 | -c | --container-name ) shift 27 | CONTAINER_NAME=$1 28 | ;; 29 | -h | --help ) usage 30 | exit 31 | ;; 32 | * ) usage 33 | exit 1 34 | esac 35 | shift 36 | done 37 | 38 | # Check if container is already started 39 | if [ -f docker.pid ]; then 40 | echo "Container already started" 41 | container_id=$(cat docker.pid) 42 | echo "Stopping container $container_id..." 43 | docker stop $container_id 44 | rm -f docker.pid 45 | fi 46 | 47 | # Start the JBoss jBPM Workbench docker container 48 | echo "Starting $CONTAINER_NAME docker container using:" 49 | echo "** Container name: $CONTAINER_NAME" 50 | image_jbpm_workbench=$(docker run -P -d --name $CONTAINER_NAME $IMAGE_NAME:$IMAGE_TAG) 51 | ip_jbpm_workbench=$(docker inspect $image_jbpm_workbench | grep \"IPAddress\" | awk '{print $2}' | tr -d '",') 52 | echo $image_jbpm_workbench > docker.pid 53 | 54 | # End 55 | echo "" 56 | echo "Server starting in $ip_jbpm_workbench" 57 | echo "You can access the server root context in http://$ip_jbpm_workbench:8080" 58 | echo "JBoss jBPM Workbench is running at http://$ip_jbpm_workbench:8080/business-central" 59 | 60 | exit 0 61 | --------------------------------------------------------------------------------