Passer au contenu
← All validator rules
WarningEvents

noStartEvent

Executable top-level <process> should have at least one start event.

Why it matters

An executable process needs a way to start. Without at least one `<startEvent>`, the engine has nowhere to spawn the first token — the model imports cleanly but cannot be triggered through any standard means (REST, BPMN message, timer cron). The result is a deployed but unreachable workflow, which is harder to spot than an import failure because the engine never complains.

What triggers it

The validator inspects every top-level `<process isExecutable="true">` and reports when it contains zero `<startEvent>` direct children. Non-executable processes (those with `isExecutable="false"` or unset) are silently skipped — they are commonly used as descriptive skeletons in collaboration diagrams and should not be flagged.

How to fix

Add a single `<startEvent id="start">` as a direct child of the `<process>`, then connect it to your first activity with a `<sequenceFlow>`. If the process is meant to be a documentation-only collaboration partner (no execution intended), set `isExecutable="false"` on the process and the warning disappears. For event sub-processes triggered by message or timer, place the start event inside the `<subProcess triggeredByEvent="true">` rather than at the process root.

Examples

TriggerExecutable process with no start event — unreachable at runtime.
<process id="P" isExecutable="true">
  <task id="t" name="Do something" />
  <endEvent id="e" />
  <sequenceFlow id="f" sourceRef="t" targetRef="e" />
</process>
FixAdd a start event and wire it to the first activity.
<process id="P" isExecutable="true">
  <startEvent id="s" />
  <task id="t" name="Do something" />
  <endEvent id="e" />
  <sequenceFlow id="f1" sourceRef="s" targetRef="t" />
  <sequenceFlow id="f2" sourceRef="t" targetRef="e" />
</process>

In-depth documentation. • Browse all 113 rules