Font Size:
Ask Joget AI

Process Composer

Process Composer Overview

The Process Composer is built into the Joget Process Builder. Instead of dragging activities, drawing transitions, and clicking through property panels, you describe the workflow you want, and the composer builds it for you.

Everything it produces is standard Joget process configuration, the same output as the visual builder. Every process it builds is immediately editable in the Process Builder canvas.

The Process Builder is organised around participants (swim lanes), activities (user tasks), tools (automated steps), routes (decision gateways), and transitions (arrows connecting them). The Composer works across all of these elements.

Getting Started

Open any process in the Process Builder. Look for the blue chat bubble icon at the bottom right of the screen. Click it to open the composer panel.

There are two ways to start:

Describe it: describe the workflow, participants, activities, routing logic, and form assignments in plain language. The composer builds the structure.

Show it: upload a screenshot of an existing process diagram, a flow sketch, or a whiteboard photo. The composer replicates it as a Joget process.

Try this as your first prompt:

Build an expense approval process with three participants: Claimant, Approver, and Finance. 

Claimant submits the form. Approver reviews and can approve or reject. If approved, Finance verifies. 

If rejected at any stage, notify the Claimant. Use email tools for notifications.

Two Modes of Composing

Targeted Edit

Select any activity, participant, route, or transition in the Process Builder, and it appears at the top of the composer panel with its name. The composer uses this context to apply changes only to that specific element. This is best for quick, precise updates like renaming an activity, adjusting a route condition, or updating a form assignment.

Full Composition

Use the main composer panel to describe the process as a whole. The composer can build or modify multiple elements at once, adding participants, activities, transitions, approval flows, and routing logic. This is ideal when creating a process from scratch or making broader structural changes.

Tip
Selecting an element helps with precision, but the composer can still interpret broader intent and update multiple parts of the process when needed.

Reviewing Composer Output

After the composer runs, three options appear at the bottom of the panel.

Apply: saves the change to your process.

Cancel: discards everything and returns the process to its previous state.

Nothing is saved until you click Apply.

What You Can Build

Activity and Flow

  • Add and connect Start and End nodes
  • Add participants (swim lanes), create, rename, remove
  • Add user tasks with form assignments
  • Add approval activities with status buttons: Approved, Rejected, Clarification, Reassignment, Withdrawal, Completed
  • Add decision routes with variable == value conditions and a default/else path
  • Add and label transitions between any elements
  • Rename and remove activities

For complex routing logic and other limitations, refer to the Current Behaviour and Tips section.

Tool Plugin Activities

  • Email Tool
  • JSON API Tool
  • Database Update Tool
  • BeanShell Script Tool
  • AI Agent Process Tool
  • Multi Tools. Chain multiple tools in one activity
  • Update Form Data Tool, Preset Form Data Tool, SOAP Tool, CSV Import Tool for Enterprise Edition
  • Custom and third-party plugins installed in your instance

Tool activities are automatically wired into the flow. No floating unconnected tools.

For tool plugin prompting tips, refer to the Prompting Guide and Current Behaviour and Tips sections.

Prompting Guide

To get the best results, describe the full flow with participant names, activity names, routing logic, and form assignments clearly upfront.

Describe the full flow in one prompt

The composer builds a better structure when they have the complete picture. Piecemeal prompts produce disconnected results.

Bad: Add an approval step

Good: Add an HOD Approve activity under the Approver participant. If approved, connect to

Finance Verify. If rejected, connect to a Notify Claimant Rejected email tool and end the process.

Set the route condition: status === 'Rejected by HOD' for the rejection path.

Name participants, activities, and forms explicitly

Bad: Assign the form to the activity

Good: Assign the Expense Claim form (form ID: expense_claim) to the Claimant Edit activity

Specify route conditions exactly

The composer supports simple variable == value conditions. Write them out clearly.

Bad: Route based on status

Good: Add a route after HOD Approve. If status === 'Rejected by HOD', go to Notify Claimant Rejected.

Otherwise (approved), go to Notify Finance.

Name tool plugins explicitly when adding tool activities

Bad: Add an email notification

Good: Add an Email Tool activity called Notify Approver under the Approver participant.

Connect it from the Update Status tool. 

Current Behaviour and Tips

New activities are placed towards the right of the canvas: When the composer adds a new activity or tool, it is placed on the right side of the canvas. If you do not see it immediately, zoom out — it will be there. Drag it into position once located. Functionality is correct; it is purely a placement behaviour.

Tool plugin activities may need the className for accurate wiring (Known Behaviour): In most cases, the composer will configure standard tool activities correctly. If a tool does not wire as expected, try re-prompting with the plugin className explicitly included. For example:

Add an Email Tool activity called Notify Approver. Use className: org.joget.apps.app.lib.EmailTool

Add an AI Agent tool called AI Review. Use className: org.joget.ai.agent.lib.AgentProcessTool

For any other tool, the className can be found inside the Process Builder under Advanced Tools, then JSON Definition.

When approval statuses like Clarification or Reassignment are added, the activity mappings may not be wired correctly by the composer. Review these manually in the Process Builder after applying and confirm the mappings are correct.

Complex route conditions require manual configuration: The composer supports simple single-condition routes (variable == value). AND / OR logic across multiple conditions is not supported. Set these up manually in the Route properties panel.

Two routes may be added after the start of new process creation: When starting a new process, the composer may add two routes by default. Try re-prompting with “Remove duplicate routes after start” or delete via builder any extras that are not needed before building further.

Sub-processes and parallel gateways are not supported: These must be configured manually in the Process Builder.

Prompt Playbook

Use Case

Prompt

Full approval process

Build an expense approval process with three participants: Claimant, Approver, and Finance. Claimant submits via Claimant Edit activity. Approver reviews via HOD Approve. Route: if status === 'Rejected by HOD', go to Notify Claimant Rejected and end. Otherwise, go to Finance Verify. Finance routes: if verified, go to Notify Claimant Finance Verified and end. If status === 'Rejected by Finance', go to Notify Claimant Finance Rejected and end. Use the Email Tool for all notifications.

Add a participant

Add a new participant called Finance below the Approver lane.

Add a user task with form

Add a user task called Manager Review under the Approver participant. Assign the Leave Request form (form ID: leave_request) to it.

Add approval plugin

Update the HOD Approve activity to use the approval plugin with Approved and Rejected as the two status options.

Add approval statuses

Add Clarification and Reassignment as additional statuses to the HOD Approve activity.

Add a route with conditions

Add a route after HOD Approve. If status === 'Rejected by HOD', transition to Notify Claimant Rejected. Otherwise (approved), transition to Notify Finance.

Add email tool

Add an Email Tool activity called Notify Approver under the Approver participant. Connect it from the Update Status tool using org.joget.apps.app.lib.EmailTool.

Add database update tool

Add a Database Update Tool activity called Update Status under the Approver participant. Use org.joget.apps.app.lib.DatabaseUpdateTool. Connect it from the Claimant Edit activity.

Video Tutorial

Created by Debanraj Ravindran Last modified by Nurkhairini Fitrah on May 25, 2026