Overview

Joget Workflow v3 Cloud Edition is an enhanced version of Joget Workflow v3 Enterprise that supports multi-tenancy, allowing for multiple accounts (tenants) to be hosted on one webapp. Each account appears to be a separate installation.

The architecture is based on a shared webapp connecting to separate databases or schemas. This allows for more cost-effective delivery of services, since many accounts can be hosted on a single app server. At the same time, each account has its own separate database and file upload directory to preserve data isolation.

Installation

Prerequisites

Installation Steps

The installation steps are similar to the installation for the standard Joget Workflow v3.

Refer to the Knowledge Base at Installation using the Linux Bundle for more detailed instructions.

Basic steps to follow:

1. Create a new directory (e.g., /opt/joget) and extract the tar.gz bundle into that directory.

2. Install Java Runtime Environment (JRE) or Java Development Kit (JDK) version 6 and above.

    Example in Ubuntu: sudo apt-get install sun-java6-jdk

3. Install MySQL Server version 5 and above.

    Example in Ubuntu: sudo apt-get install mysql-server

4. Create an empty database 'jwdb' in the MySQL server.

5. Execute the setup script to create the required database tables: ./setup.sh.

    Alternatively, manually create the database tables as follows:

    5.1 Populate the jwdb database with the SQL script in data/jwdb-empty.sql.

    5.2 Edit wflow/app_datasource-default.properties to match your database settings.

6. Execute the bundled Apache Tomcat application server: ./cloud-tomcat.sh run.

7. Access the home page at http://localhost:8080.

8. Access the default Workflow Management Console at http://localhost:8080/jw.

Configuration

DNS Configuration

Each account / tenant is identified by a domain name, so the DNS needs to be configured to point desired domains to Joget. For convenience, it is recommended to use a wildcard DNS record (http://en.wikipedia.org/wiki/Wildcard_DNS_record). For example:

*.example.com

In this case, requests to all subdomains of example.com (e.g. account1.example.com, account2.example.com, account3.example.com) are directed to Joget.

For local testing purposes, it is possible to just modify the local hosts file http://en.wikipedia.org/wiki/Hosts_(file) . Please note that typically, hosts file configuration does not support wildcards so it will be necessary to add separate entries for each subdomain (e.g., account1.example.com, account2.example.com, etc.).

Profile Configuration

Each account (tenant) is tied to a datasource profile. More info on profiles can be found at Custom Database Configuration.

In v3 Community or Enterprise Edition, only 1 profile is selected at a time. In the Cloud Edition, this is enhanced such that all accounts and profiles are enabled concurrently.

Open the file (joget.home)/wflow/app_datasource.properties. Here's an example of the file content:

account1.example.com=jwc_account1
account2.example.com=jwc_account2
currentProfile=default

Account Provisioning

There are a few approaches to provision (create) an account.

Manual Provisioning

As described in the previous Accounts Configuration section, each account is essentially a datasource profile. So an account can be manually created as follows:

  1. Create a new Joget Workflow database using the script provided in (joget.home)/data/jwdb-cloud.sql, or any other custom scripts.
  2. Create a new profile file (joget.home)/wflow/app_datasource-(profile).properties by copying from app_datasource-default.properties and changing the values accordingly.
  3. Add an entry into (joget.home)/wflow/app_datasource.properties. The entry would be (domain name)=(profile).
  4. The profile is active immediately, and no restart is necessary.

Scripted Provisioning

There is also an Ant build file and script available that simplifies account creation.

  1. Execute the file (joget.home)/cloud-provision-account.sh.
  2. When prompted for Account Profile Name, enter the required account name (e.g., demo).
  3. The next prompt is for the Main Domain Name.  Enter the main domain (e.g., example.com).
  4. Subsequent inputs will have default values that you can just enter and accept, or change before submitting. 
  5. Upon submission of all the inputs, the script will create the database and perform the necessary configuration for the account. The inputs are as follows:

Account Profile Name

Desired account name (e.g., demo) 

Main Domain

Main domain (e.g., example.com) 

Account Domain Name

Account domain (e.g., demo.example.com) 

Account Database Name

Database name for the account (e.g., jwc_demo) 

Account Database User

Database user for the account (e.g., jwc_demo) 

Account Database Password

Database password for the account (e.g., jwc_demo) 

Home Directory

Joget home directory; defaults to current directory 

wflow Directory

Joget configuration directory; defaults to ./wflow

MySQL host name

Database server host name

MySQL port

Database port

MySQL username

Database admin user (with permission to create database)

MySQL password

Database admin password

Cloud Admin App

For convenience, a simple Joget app is provided to automate the account request approval and provisioning process.

  1. Import the app in (joget.home)/lib/APP_cloud-xxxx.zip into Joget.
  2. Go to Properties & Export and set the “domain” to the appropriate value for the main domain (e.g., example.com).
  3. Publish the app.
  4. Access the app at http://localhost:8080/jw/web/userview/cloud/admin/.
  5. Login to view the Account List.
  6. Select New Account from the drop-down menu to request for a new account.
  7. When a request is submitted, it needs to be approved. Approve the request; a BeanShell tool will be executed to provision the account.
  8. Verify that the account is created at the requested domain (e.g., demo.example.com).
  9. Modify the app where necessary:

In a production environment, it is recommended for security purposes that this app be installed on a specific profile instead of the default profile.

Account Removal

Manual Removal

To disable an account, perform the following:

To fully delete the account:

Maintenance

Logging

As with a standard Joget installation on Apache Tomcat, the log file is at (joget.home)/apache-tomcat-6.0.18/logs/catalina.out.

Updates

Updates to WAR files are done as per standard Joget Workflow installation.

Backup

Backups should be done for all MySQL databases as well as configuration and data files in (joget.home)/wflow.