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.
- β
start- Start node - β
end- End node - β
autoTask- Auto task node - β
scriptTask- Script task node
- β
decision- Decision node (exclusive gateway) - β
parallel- Parallel gateway - β
inclusive- Inclusive gateway
- β
loopProcess- Loop node - β
subBpm- Sub-process - β
continue- Continue node (used within loops) - β
break- Break node (used within loops)
- β
waitTask- Wait task - β
waitEventTask- Wait event task
- β
note- Note node
- β
startEvent- Start event - β
endEvent- End event
- β
serviceTask- Service task - β
scriptTask- Script task - β
receiveTask- Receive task
- β
exclusiveGateway- Exclusive gateway - β
parallelGateway- Parallel gateway - β
inclusiveGateway- Inclusive gateway
- β
subProcess- Sub-process - β
callActivity- Call activity
- β
message- Message definition
The following nodes are defined in XSD or have parsers, but lack code generators and cannot be executed:
- β
userTask- User task (defined in XSD but no implementation) - β
timerTask- Timer task - β
eventTask- Event task - β
signal- Signal - β
transaction- Transaction - β
timeout- Timeout - β
noop- No operation
- β
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
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
);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);
}To verify whether a node is supported, check for corresponding *Parser.java and *Generator.java files in the
following locations:
- 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/
- Parser:
- 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/
- Parser:
Only nodes with both a parser and a generator can be executed.
This document is generated based on current codebase analysis. Please update this document promptly if new node support is added.