Fluent Builder API中是否存在终止事件?如何代码建模?
Camunda Fluent Builder API 中终止事件的建模方法
嘿,终止事件(Terminate Event)当然是存在的!可能你在文档里没找到专门的高亮章节,但它确实是Camunda Fluent Builder API支持的BPMN标准元素——它和普通结束事件的核心区别是:终止事件会直接终止整个流程实例(或指定的子流程),而普通结束事件仅结束当前的执行路径。
下面给你几种常见场景的代码实现:
1. 在流程中添加基础终止事件
直接使用terminateEvent()方法即可创建,这会生成一个终止结束事件,触发后终止整个流程:
BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("order-process") .startEvent() .userTask("review-order") .terminateEvent() // 这里就是终止事件 .done();
如果需要给终止事件设置ID、名称等属性,可以链式调用相关方法:
BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("order-process") .startEvent() .userTask("reject-order") .terminateEvent("terminate-order-flow") .name("终止整个订单流程") .done();
2. 为调用子流程添加终止边界事件
如果你需要在特定条件下终止调用子流程(而非整个主流程),可以给调用子流程绑定终止边界事件:
BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("main-process") .startEvent() .callActivity("handle-payment") .calledElement("payment-subprocess") // 添加终止边界事件 .boundaryEvent("terminate-payment") .terminate() // 标记为终止类型的边界事件 .endEvent() .done();
这个边界事件触发后,只会终止绑定的调用子流程,主流程会继续执行后续步骤。
其实这个API的命名很直观,只是文档没有单独把终止事件作为一个小节展开,所以容易被忽略。只要记住terminateEvent()(用于结束式终止事件)和.terminate()(用于边界终止事件)这两个核心方法就能轻松建模啦。
内容的提问来源于stack exchange,提问作者Matúš Krška
相关产品推荐
相关产品推荐

