Flowable Design (3.13 and below) Installation Instructions
This is an old version of the Design quick installation guide applicable for Flowable until Version 3.13 and for the Angular-based Flowable Design 3.14/3.15. If you are running the latest version of Flowable Design please check out the new version.
Prerequisites
See the Flowable System Requirements and Supported Software documentation.
Step-by-step Installation
License File
Flowable requires that you have a valid license for the Product.
The license is either stored on the file system or in the database.
If the license is provided as a file then it is typically located in the .flowable
folder of your home directory.
On Unix or macOS the file is ~/.flowable/flowable.license
.
The location of the license file can be changed in the application.properties
file (see below).
flowable.modeler.app.license-location=file:/myCustomLocation/flowable.license
To store the license in the database then the following property must be set in
the applications.properties
file:
flowable.modeler.app.db-store-enabled=true
With the license database store mode enabled a license is uploaded using the Flowable Design application.
WAR File
The Flowable Design WAR file can be either
- downloaded from the Flowable artifactory (com.flowable.design:flowable-ui-design)
- built using the Flowable Design starter (please see here)
If you do not already have access to the Flowable Artifactory and the required dependencies, please contact your Flowable representative.
Copy the file into the Tomcat webapps
folder.
Running Flowable Design in Tomcat
You can download Tomcat from here.
Once you download the package you should unpack it.
The Tomcat is started by running bin/catalina.sh
(bin/catalina.bat
on Windows).
Do not run Tomcat yet; first follow the steps for installing the Flowable WARs.
Application Configuration File
Create a file named application.properties
and place it in to the Tomcat lib
folder.
This file will contain the most common configurations, such as the data source.
By default, an H2 database is created in the ~/flowable-db
folder.
If you want to run with a different database, or use H2 in a different location, follow the instructions in the Using a Different Database section of this guide.
Furthermore, Flowable Design should be connected to the respective Flowable Engage or Flowable Work instance to perform actions over the REST-API such as publishing, unpublishing and retrieving the identity information (users and groups).
For that following properties can be set as part of the application.properties
file:
flowable.modeler.app.deployment-api-url=http://localhost:8090/flowable-engage/app-api
flowable.modeler.app.undeployment-api-url=http://localhost:8090/flowable-engage/platform-api/app-deployments
# Property that can be set with the location to custom palettes on the file system
# The locations should be pointing to a directory where the palette JSON or XML files are located
#flowable.modeler.app.additional-palette-locations=file:/tmp/custom-palettes,file:/tmp/other-custom-palettes
flowable.common.app.idm-url=http://localhost:8090/flowable-engage
flowable.common.app.idm-admin.user=admin
flowable.common.app.idm-admin.password=test
With the properties flowable.common.app.idm-admin.user
and flowable.common.app.idm-admin.password
the user can be set which is used by Flowable Design to perform operations in Flowable Engage/Flowable Work.
Furthermore, following properties can be used when using Flowable Design in a multi-tenant environment:
flowable.modeler.app.multi-tenant-enabled=true
flowable.modeler.app.tenant.default-tenant-id=default
flowable.modeler.app.tenant.list-provider=fixed
flowable.modeler.app.tenant.fixed-tenant-ids=default,flowable,mimacom
With these settings, there will be two tenants: flowable
and mimacom
. There is a 'default' tenant named default
here that can be used for common models.
OAuth2
The out-of-the-box Flowable Design Application comes with OAuth2 support.
There are different OAuth2 providers. Please refer to following guide for the configuration sample for Keycloak OAuth2.
Flowable Design Administration User
Out of the box Flowable Design creates one user with the username admin
and password test
.
The password can be customized (only during first startup of Flowable Design) by setting the following property.
flowable.modeler.app.user-store.password=<your custom password>
Starting Tomcat
You can now start Tomcat by running bin/catalina.sh
(bin/catalina.bat
on Windows).
Alternatively, you can run bin/catalina.sh run
to have it in the foreground.
You should now be able to access the Flowable Design application (if running on localhost):
You can log in with the user admin and password test (or custom password if set). You need to login in every application as the Flowable applications use different user stores by default.
Using a Different Database
The Flowable applications are Spring Boot applications and are
configured in a standard Spring Boot way.
This means that the database can be configured by setting the
following properties to the application.properties
file previously mentioned.
spring.datasource.url=<jdbc URL>
spring.datasource.driver-class-name=<jdbc driver class name>
spring.datasource.username=<username>
spring.datasource.password=<password>
The application.properties
file contains examples for the compatible databases:
H2
MySQL
MariaDB v3.11.0+
PostgreSQL
Oracle
Microsoft SQL Server
DB2
The Flowable applications do not ship with the JDBC drivers for databases
other than H2. Therefore you need to download the appropriate JDBC driver
and copy the jar into the Tomcat lib
folder.
The Flowable applications create the required database and tables when they start. The database user needs database schema read-write permissions (unless the schema is created manually, see further).
For productive usage, Flowable Design shall be backed with a productive database. The usage of a H2 database (file-based or in-memory) is not for productive usage, especially with high usage and concurrent users working on the same data.
It is also possible to disable the schema creation or only perform schema validation.
For this the property flowable.modeler.app.database-schema-udpate
needs to be set.
The possible values for it are:
true
- Default value. A check is performed, and an update of the schema is performed if it is necessary.false
- Checks the version of the DB schema against the library throws an exception if the versions don't match.ignore
- Does nothing. No schema creation, no schema version check.
Deploying to Different Environments
It's possible to define different environments to publish applications to, which allows one Flowable Design instance to deploy to various Flowable runtime systems.
In the configuration, deployment configurations can be added using the flowable.modeler.app.deployment.<id>
pattern (multiple are possible). For example:
flowable.modeler.app.deployment.staging.name=Staging Environment
flowable.modeler.app.deployment.staging.deployment-api-url=http://staging.mydomain.com/app-api
flowable.modeler.app.deployment.staging.undeployment-api-url=http://staging.mydomain.com//platform-api/app-deployments
flowable.modeler.app.deployment.testing.name=Testing Environment
flowable.modeler.app.deployment.testing.deployment-api-url=http://testing.mydomain.com/app-api
flowable.modeler.app.deployment.testing.undeployment-api-url=http://testing.mydomain.com//platform-api/app-deployments
When publishing an application, in Flowable Design the target environment can now be selected:
Flowable Design in Cluster Mode
You can setup multiple Flowable Design instances in a cluster.
This requires setting up two or more instances of Flowable Design, and then adding a loadbalancer in front of them.
All Flowable Design instances in the cluster need to be configured to point to the same database.
Flowable Design has been architected in such a way that the REST api can handle any request. The load balancer does not need to have sticky sessions enabled.
Enable Model Locking
Model locking is a feature that's useful when working with multiple people on the same model(s), and avoids that users can accidentally overwrite changes from somebody else.
Model locking is disabled by default. It can be enabled by setting the following property:
flowable.modeler.app.model-locking.enabled=true
When enabled, users can lock any model. In the UI this will be visible by lock icons and visual cues on the screen.
Additionally: if newly created models should be locked immediately after creation, the following property needs to be set:
flowable.modeler.app.model-locking.auto-lock-on-create=true
Development Environment Setup
This section is relevant when you want to build your own version of Flowable Design, instead of using the out-of-the-box application.
Flowable Design is based on Spring Boot and therefore requires it as a base for any development environment. The easiest way to setup a Flowable development project is to first generate a Spring Boot Project by using the Spring Initializr.
You can import the generated project into the IDE of your choice (like IntelliJ IDEA or Eclipse).
For the 3.14 release to be able to support two Design applications, the Angular-based Design application uses a new group id com.flowable.design.angular
and all Maven or Gradle dependencies need to be updated to use this group id if you plan to keep using the Angular-based Design application.
In addition to the group id the artifact ids for the flowable-platform-palette
and flowable-engage-palette
use new artifact ids flowable-platform-palette-angular
and flowable-engage-palette-angular
respectively.
Below are the dependencies for the releases 3.13 and before.
Flowable Design Dependencies
Flowable Design utilizes multiple Maven dependencies to access the required Flowable services.
Add the following dependencies as children of the existing <dependencies>
tag
of the pom.xml
file to set up Flowable Design:
<dependency>
<groupId>com.flowable.design</groupId>
<artifactId>flowable-spring-boot-starter-design</artifactId>
<version>${com.flowable.design.version}</version>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-log4j2</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
The maven property com.flowable.design.version
can be configured to the Flowable Design version (e. g. 3.x.y
).
Flowable Work Palette Dependencies
When using Flowable Design with Flowable Work you can add the palette configuration by adding following dependency.
<dependency>
<groupId>com.flowable.platform</groupId>
<artifactId>flowable-platform-palette</artifactId>
<version>${com.flowable.platform.version}</version>
</dependency>
Flowable Engage Palettes
When using Flowable Design with Flowable Engage you can add (additionally to the palettes dependencies referred above) the following palette configuration by adding following dependency.
<dependency>
<groupId>com.flowable.engage</groupId>
<artifactId>flowable-engage-palette</artifactId>
<version>${com.flowable.platform.version}</version>
</dependency>
Properties
All available Design specific properties can be found in here