Skip to content

Latest commit

Β 

History

History
140 lines (97 loc) Β· 3.71 KB

File metadata and controls

140 lines (97 loc) Β· 3.71 KB

CompileFlow Node Support List

This document details the node types actually supported by the current version of CompileFlow. All listed nodes have been code-verified to ensure complete parser and code generator support.

TBBPM Supported Nodes

Basic Nodes

  • βœ… start - Start node
  • βœ… end - End node
  • βœ… autoTask - Auto task node
  • βœ… scriptTask - Script task node

Gateway Nodes

  • βœ… decision - Decision node (exclusive gateway)
  • βœ… parallel - Parallel gateway
  • βœ… inclusive - Inclusive gateway

Process Control

  • βœ… loopProcess - Loop node
  • βœ… subBpm - Sub-process
  • βœ… continue - Continue node (used within loops)
  • βœ… break - Break node (used within loops)

State Nodes (for stateful processes)

  • βœ… waitTask - Wait task
  • βœ… waitEventTask - Wait event task

Others

  • βœ… note - Note node

BPMN 2.0 Supported Nodes

Events

  • βœ… startEvent - Start event
  • βœ… endEvent - End event

Tasks

  • βœ… serviceTask - Service task
  • βœ… scriptTask - Script task
  • βœ… receiveTask - Receive task

Gateways

  • βœ… exclusiveGateway - Exclusive gateway
  • βœ… parallelGateway - Parallel gateway
  • βœ… inclusiveGateway - Inclusive gateway

Structures

  • βœ… subProcess - Sub-process
  • βœ… callActivity - Call activity

Messages

  • βœ… message - Message definition

Unsupported Nodes

The following nodes are defined in XSD or have parsers, but lack code generators and cannot be executed:

Unsupported TBBPM Nodes

  • ❌ userTask - User task (defined in XSD but no implementation)
  • ❌ timerTask - Timer task
  • ❌ eventTask - Event task
  • ❌ signal - Signal
  • ❌ transaction - Transaction
  • ❌ timeout - Timeout
  • ❌ noop - No operation

Unsupported BPMN Nodes

  • ❌ userTask - User task (has parser but no generator)
  • ❌ manualTask - Manual task
  • ❌ businessRuleTask - Business rule task
  • ❌ sendTask - Send task
  • ❌ signal - Signal (has parser but no generator)
  • ❌ intermediateEvent - Intermediate event
  • ❌ boundaryEvent - Boundary event

Alternative Solutions

Human Task Implementation

To implement human task functionality, the following approach is recommended:

<!-- Use waitTask instead of userTask -->
<waitTask id="approval" name="Wait for Approval" tag="waitForApproval">
    <transition to="afterApproval"/>
</waitTask>
// Complete human task through trigger
ProcessResult<Map<String, Object>> result = engine.trigger(
    ProcessSource.fromCode("approval.flow"),
    "waitForApproval",  // tag
    approvalData        // approval result
);

Scheduled Task Implementation

For scheduled functionality, you can call processes through external scheduling systems (such as Spring Scheduler, Quartz, etc.):

@Scheduled(fixedRate = 60000)
public void scheduledTask() {
    engine.execute(ProcessSource.fromCode("scheduled.flow"), context);
}

Verification Method

To verify whether a node is supported, check for corresponding *Parser.java and *Generator.java files in the following locations:

  1. TBBPM:
    • Parser: compileflow-tbbpm/src/main/java/com/alibaba/compileflow/engine/tbbpm/builder/converter/parser/
    • Generator: compileflow-tbbpm/src/main/java/com/alibaba/compileflow/engine/tbbpm/builder/generator/
  2. BPMN:
    • Parser: compileflow-bpmn/src/main/java/com/alibaba/compileflow/engine/bpmn/builder/converter/parser/
    • Generator: compileflow-bpmn/src/main/java/com/alibaba/compileflow/engine/bpmn/builder/generator/

Only nodes with both a parser and a generator can be executed.

Update Notes

This document is generated based on current codebase analysis. Please update this document promptly if new node support is added.