- based on PatterFly to provide same look and feel as entire jBPM tooling - it's the default renderer
- based on Bootstrap to provide a simple alternative that utilises well established framework for building web and mobile UIs
Create project with dependencies
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.kie.server.samples</groupId>
<artifactId>custom-form-renderer</artifactId>
<version>1.0.0</version>
<name>Custom Form Renderer</name>
<properties>
<version.org.kie>7.14.0.Final</version.org.kie>
</properties>
<dependencies>
<dependency>
<groupId>org.kie.server</groupId>
<artifactId>kie-server-services-jbpm-ui</artifactId>
<version>${version.org.kie}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Create configuration folders
Create folders in the project that will configure the renderer - all should be done src/main/resources- form-templates-providers - folder that will contain templates, css and java script files used to render the form
- META-INF/services/org.kie.server.services.jbpm.ui.form.render.FormRenderer - an empty file that will be used as discovery mechanism to find and register the renderer - it will be edited a bit later to provide actual implementation details
Create form renderer implementation
- getName - provide the name of the template that shall be used as reference when rendering
- loadTemplates - main implementation that loads different types of templates to be used by renderer
- default constructor
- master - main template that builds the HTML page
- header - header template that creates header of the form
- form-group - form input fields template
- case-layout - layout for case forms
- process-layout - layout for process forms
- task-layout - layout for user task forms
- table - table to be build for multi subforms
package org.kie.server.samples;
import org.kie.server.services.jbpm.ui.form.render.AbstractFormRenderer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CustomFormRenderer extends AbstractFormRenderer {
private static final Logger logger = LoggerFactory.getLogger(CustomFormRenderer.class);
public CustomFormRenderer() {
super(null, null);
}
public CustomFormRenderer(String serverPath, String resources) {
super(serverPath, resources);
}
public String getName() {
return "custom";
}
@Override
protected void loadTemplates() {
loadTemplate(MASTER_LAYOUT_TEMPLATE, this.getClass().getResourceAsStream("/form-templates-providers/custom/master-template.html")); loadTemplate(PROCESS_LAYOUT_TEMPLATE, this.getClass().
getResourceAsStream("/form-templates-providers/custom/process-layout-template.html")); loadTemplate(TASK_LAYOUT_TEMPLATE, this.getClass().
getResourceAsStream("/form-templates-providers/custom/task-layout-template.html")); loadTemplate(FORM_GROUP_LAYOUT_TEMPLATE, this.getClass().
getResourceAsStream("/form-templates-providers/custom/input-form-group-template.html")); loadTemplate(HEADER_LAYOUT_TEMPLATE, this.getClass().
getResourceAsStream("/form-templates-providers/custom/header-template.html")); loadTemplate(CASE_LAYOUT_TEMPLATE, this.getClass().
getResourceAsStream("/form-templates-providers/custom/case-layout-template.html")); loadTemplate(TABLE_LAYOUT_TEMPLATE, this.getClass().
getResourceAsStream("/form-templates-providers/custom/table-template.html")); logger.info("Custom Form renderer templates loaded successfully."); } }
Customise your templates
Build and deploy renderer to KIE Server
- Build the project with maven - mvn clean package
- Deploy the project to KIE Server by coping the jar file to kie-server.war/WEB-INF/lib
That's it, you have now your custom form renderer. The sample described in this article can be found in GitHub.



