flowable/flowable-engine · error · FlowableException

this activity isn't waiting for a trigger for

Error message

this activity isn't waiting for a trigger for ${execution}

What it means

A trigger() was invoked on an execution whose current activity is not in a waiting state; signaling only applies to activities paused for a trigger (e.g. receive task, intermediate catch event), so this indicates a signaling protocol violation.

Solutions

  1. Only signal executions actually waiting at the activity
  2. Query signal/event subscriptions to find valid targets instead of guessing execution ids
  3. Check execution state before calling runtimeService.trigger
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/behavior/FlowNodeActivityBehavior.java:56 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/46d007136de14645. Report an issue: GitHub.

Appendix: source

Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/behavior/FlowNodeActivityBehavior.java:56

    public void execute(DelegateExecution execution) {
        leave(execution);
    }

    /**
     * Default way of leaving a BPMN 2.0 activity: evaluate the conditions on the outgoing sequence flow and take those that evaluate to true.
     */
    public void leave(DelegateExecution execution) {
        bpmnActivityBehavior.performDefaultOutgoingBehavior((ExecutionEntity) execution);
    }

    public void leaveIgnoreConditions(DelegateExecution execution) {
        bpmnActivityBehavior.performIgnoreConditionsOutgoingBehavior((ExecutionEntity) execution);
    }

    @Override
    public void trigger(DelegateExecution execution, String signalName, Object signalData) {
        // concrete activity behaviours that do accept signals should override this method;
        throw new FlowableException("this activity isn't waiting for a trigger for " + execution);
    }

    protected String parseActivityType(FlowNode flowNode) {
        String elementType = flowNode.getClass().getSimpleName();
        elementType = elementType.substring(0, 1).toLowerCase() + elementType.substring(1);
        return elementType;
    }
}

View on GitHub (pinned to d6d39ce1c6)