<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://bpmnbox.org/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://bpmnbox.org/feed.php">
        <title>BPMNbox - en:rule</title>
        <description>Best BPMN Practices</description>
        <link>https://bpmnbox.org/</link>
        <image rdf:resource="https://bpmnbox.org/_media/wiki/logo.png" />
       <dc:date>2026-04-18T08:10:56+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/align_tasks_with_process?rev=1724871546&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/alternative_paths?rev=1724588006&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/attached_timer?rev=1732718879&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/avoid_mixed_gateways?rev=1724347104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/business_exception_error?rev=1724503843&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/check_subprocess_results?rev=1724346734&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/collapsed_subprocess?rev=1711294790&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/conditional_event_collaboration?rev=1724867798&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/connect_flows_to_any_side?rev=1723990498&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/control_branch?rev=1730543781&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/diagram_should_fit_one_page?rev=1724766538&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/different_rhytms?rev=1730544892&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/disconnected-flows?rev=1724265109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/do_not_save_on_gateways?rev=1732715070&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/do_not_use_conditional_flows?rev=1707295516&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/do_not_use_converging_inclusive_gateway?rev=1706164943&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/dont_overuse_black_box?rev=1724778335&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/dont_play_with_elements_size?rev=1724162288&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/double_negation?rev=1707301187&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/end_event_naming?rev=1732710431&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/end-to-end?rev=1724760679&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/event_gateway_warning?rev=1724503772&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/explicit_parallel_merge?rev=1727348098&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/explicit_parallel_split?rev=1724507046&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/external_event?rev=1724850928&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/handover_is_sequence_flow?rev=1723990263&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/happy_path?rev=1724674324&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/horizontal_diagram?rev=1724351305&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/human_decision?rev=1705137900&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/intermediate_event_naming?rev=1724695944&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/keep_it_short?rev=1724341770&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/micromanagement?rev=1705004927&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/overlapped_flows?rev=1724510242&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/overuse_terminate?rev=1724677555&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/process_naming?rev=1724754046&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/single_process?rev=1724868056&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/start_and_end_of_process?rev=1732714958&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/start_event_naming?rev=1724693643&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/start?rev=1705255272&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/structured_diagram?rev=1732711707&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/subprocess_naming?rev=1724779829&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/subprocess_start_event?rev=1724348712&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/task_naming?rev=1724680417&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/time_flows_left_to_right?rev=1724503736&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/use-default-flow-only-in-executable-models?rev=1743495922&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/v_shaped_flow?rev=1724348618&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/veto?rev=1736356163&amp;do=diff"/>
                <rdf:li rdf:resource="https://bpmnbox.org/en/rule/work_is_activity?rev=1724346620&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://bpmnbox.org/_media/wiki/logo.png">
        <title>BPMNbox</title>
        <link>https://bpmnbox.org/</link>
        <url>https://bpmnbox.org/_media/wiki/logo.png</url>
    </image>
    <item rdf:about="https://bpmnbox.org/en/rule/align_tasks_with_process?rev=1724871546&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-28T18:59:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Align process and activities instances</title>
        <link>https://bpmnbox.org/en/rule/align_tasks_with_process?rev=1724871546&amp;do=diff</link>
        <description>Align process and activities instances

loop

Leverage multi-instance loop if a process deals with a set of objects.

✔ How to

✘ How NOT to

Notes

A BPMN diagram should be treated literally: what you model is what you run.
The task “Check pallets integrity</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/alternative_paths?rev=1724588006&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-25T12:13:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Model alternative paths with splitting and merging gateways</title>
        <link>https://bpmnbox.org/en/rule/alternative_paths?rev=1724588006&amp;do=diff</link>
        <description>Model alternative paths with splitting and merging gateways

exclusive_gateway

Don&#039;t be tempted to skip merging or splitting (by using conditional sequence flows) gateway.

✔ How to

✘ How NOT to

Notes

Combinatoin of splitting gateway, merging gateway and alternative paths between form an easily perceivable and error-prone structural block.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/attached_timer?rev=1732718879&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-27T14:47:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t use timer event to depict expected activity duration</title>
        <link>https://bpmnbox.org/en/rule/attached_timer?rev=1732718879&amp;do=diff</link>
        <description>Don&#039;t use timer event to depict expected activity duration

event timer_event attached_event

Use text annotation and/or task properties to show expected activity duration.

Use attached timer to show what should be done if the activity lasts longer than allowed.

✔ How to

✘ How NOT to</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/avoid_mixed_gateways?rev=1724347104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-22T17:18:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t use mixed gateways</title>
        <link>https://bpmnbox.org/en/rule/avoid_mixed_gateways?rev=1724347104&amp;do=diff</link>
        <description>Don&#039;t use mixed gateways

gateway mixed_gateway

Gateways classification:

	*  diverging (split) - one incoming flow, several outgoing flows
	*  converging (join) - several incoming flows, one outgoing flow
	*  mixed - several incoming flows and several outgoing flows

Although mixed gateways are allowed it&#039;s better to avoid them.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/business_exception_error?rev=1724503843&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-24T12:50:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Error event may be used to model business exceptions</title>
        <link>https://bpmnbox.org/en/rule/business_exception_error?rev=1724503843&amp;do=diff</link>
        <description>Error event may be used to model business exceptions

event error_event attached_event end_event subprocess

End the normal (or deisrable) end of a process by the none event and the business exception (or unwanted end) by the error event. Use the attached event at the above level of the model.

✔ How to</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/check_subprocess_results?rev=1724346734&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-22T17:12:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Check subprocess result on exit</title>
        <link>https://bpmnbox.org/en/rule/check_subprocess_results?rev=1724346734&amp;do=diff</link>
        <description>Check subprocess result on exit

subprocess gateway

✔ How to

✘ How NOT to

Notes

	*  If a subprocess isn&#039;t followed by a gateway then it is assumed that the subprocess is always successful which usually isn&#039;t the case. A subprocess not followed by a gateway may be not a mistake but should raise question whether we anticipate the possibility of unsuccessful subprocess completion.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/collapsed_subprocess?rev=1711294790&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-24T15:39:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Use collapsed subprocesses</title>
        <link>https://bpmnbox.org/en/rule/collapsed_subprocess?rev=1711294790&amp;do=diff</link>
        <description>Use collapsed subprocesses

subprocess visual_style

Primary purpose of subprocesses is process diagram simplification by decomposition. Depicting subprocess expanded makes the diagram more complicated, hence it&#039;s usually better to use collapsed representation.

✔ How to

✔ How NOT To</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/conditional_event_collaboration?rev=1724867798&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-28T17:56:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Use conditional event to model collaboration</title>
        <link>https://bpmnbox.org/en/rule/conditional_event_collaboration?rev=1724867798&amp;do=diff</link>
        <description>Use conditional event to model collaboration

collaboration conditional_event message_event intermediate_event

The message event creates a tight connection between processes: the sender process must know the internals of the receiver.
The conditional event allows more practical loosely coupled process architecture.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/connect_flows_to_any_side?rev=1723990498&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-18T14:14:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Attach a sequence flow to any side of the activity box</title>
        <link>https://bpmnbox.org/en/rule/connect_flows_to_any_side?rev=1723990498&amp;do=diff</link>
        <description>Attach a sequence flow to any side of the activity box

sequence_flow legacy visual_style

Feel free to attach control flow to the most convinient side of the activity box to make a diagram compact and visually attractive.

✔ How to

✘ How NOT to

Notes

	*  IDEF0 prescribes the control flows to get out from right side of the source box and get into the left side of the destination so analysts with a heavy IDEF0 background tend to follow this rule when switching to BPMN. However there is no such…</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/control_branch?rev=1730543781&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-02T10:36:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A subprocess and a control branch may be used as an alternative to the attached event</title>
        <link>https://bpmnbox.org/en/rule/control_branch?rev=1730543781&amp;do=diff</link>
        <description>A subprocess and a control branch may be used as an alternative to the attached event

subprocess event attached_event terminate_event

Use a subprocess containing the control branch to implement versatile event processing logic.

✔ How to

Let&#039;s assume that we need to obtain payment from the client, watch the payment due date and talk with the customer in case of delay. Use the following technique:</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/diagram_should_fit_one_page?rev=1724766538&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T13:48:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Diagram should fit one page</title>
        <link>https://bpmnbox.org/en/rule/diagram_should_fit_one_page?rev=1724766538&amp;do=diff</link>
        <description>Diagram should fit one page

subprocess

A good BPMN disgram should fit one A4 paper sheet or one computer screen without scroll and still be readable.

✔ How to

✘ How NOT to



Notes

Recommended number of activities on a diagram is up to 7, the maximum is 10.
If there are more you either have to print it on several sheets and glue them together or scale it down to one page which makes the diagram unreadable.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/different_rhytms?rev=1730544892&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-02T10:54:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Activities performed in different rhytms belong to different processes</title>
        <link>https://bpmnbox.org/en/rule/different_rhytms?rev=1730544892&amp;do=diff</link>
        <description>Activities performed in different rhytms belong to different processes

process collaboration

If one activity is performed once per month and another every time a client&#039;s order received then there are two different processes.

✔ How to



✘ How NOT to

Notes

From performers&#039; (organizational, functional) point of view, they update the price list first, then develop the sales plan and finally fulfill the deal.
Yet BPMN diagram should be treated literally so if we depict the process this way (se…</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/disconnected-flows?rev=1724265109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-21T18:31:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Disconnected sequence flows not allowed</title>
        <link>https://bpmnbox.org/en/rule/disconnected-flows?rev=1724265109&amp;do=diff</link>
        <description>Disconnected sequence flows not allowed

sequence_flow pool

Pool (if not a “black box”) depicts a non-breaking activities flow of a single process.

✔ How to

✘ How NOT to

Notes

Although BPMN 2.0 specification does allow disconnected flows, this is a bad practice that should be avoided.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/do_not_save_on_gateways?rev=1732715070&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-27T13:44:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t save on gateways</title>
        <link>https://bpmnbox.org/en/rule/do_not_save_on_gateways?rev=1732715070&amp;do=diff</link>
        <description>Don&#039;t save on gateways

gateway

Gateways make the diagram clear at first glance.

✔ How to

✘ How NOT to

Notes

Some authors recommend using gateways when absolutely necessary only.
They argue that reducing the number of elements makes a diagram more understandable.
For example, Bruce Silver in his</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/do_not_use_conditional_flows?rev=1707295516&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-07T08:45:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t use &quot;flows with diamonds&quot;</title>
        <link>https://bpmnbox.org/en/rule/do_not_use_conditional_flows?rev=1707295516&amp;do=diff</link>
        <description>Don&#039;t use &quot;flows with diamonds&quot;

gateway flow conditional_flow

Avoid conditional flows outgoing from activities, use gateways instead.

✔ How to

✘ How NOT to

Notes

	*  It&#039;s sometimes argued that conditional flows saves one element (the gateway) and hence makes the diagram simpler. This argument is hardly acceptable because the gateway adds value to the diagram by making process execution logic clear.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/do_not_use_converging_inclusive_gateway?rev=1706164943&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-25T06:42:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t use converging inclusive gateways without a paired exclusive gateway</title>
        <link>https://bpmnbox.org/en/rule/do_not_use_converging_inclusive_gateway?rev=1706164943&amp;do=diff</link>
        <description>Don&#039;t use converging inclusive gateways without a paired exclusive gateway

gateway inclusive_gateway

The use of a converging inclusive gateway without a paired diverging one is redundant and is not recommended.

✔ How to

✘ How NOT to

Notes

According to  BPMN specification (p. 291),

	&quot; A converging Inclusive Gateway is used to merge a combination of alternative and parallel paths. A control flow token arriving at an Inclusive Gateway MAY be synchronized with some other tokens that arrive la…</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/dont_overuse_black_box?rev=1724778335&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T17:05:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t overuse black box pools</title>
        <link>https://bpmnbox.org/en/rule/dont_overuse_black_box?rev=1724778335&amp;do=diff</link>
        <description>Don&#039;t overuse black box pools

pool message_flow

Communications with external partipants may be modeled with a task alone.

✔ How to

✘ How NOT to

Notes

Black box pools and message flows may overload the diagram.

Exceptions

Black box pool and attached message flows shows complete customer&#039;s journey within the process.
It&#039;s value is disputable because the customer journey usuall assumes wider context than a single process.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/dont_play_with_elements_size?rev=1724162288&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-20T13:58:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t play with elements size</title>
        <link>https://bpmnbox.org/en/rule/dont_play_with_elements_size?rev=1724162288&amp;do=diff</link>
        <description>Don&#039;t play with elements size

naming

It doesn&#039;t pay to change elements size trying to fit to labels.

✔ How to

✘ How NOT to



Notes

If task or other element&#039;s label doesn&#039;t fit to the text block provided by default, try to find a shorter wording, use abbreviations but don&#039;t be tempted to increase it&#039;s size - it produces visual clutter and worsen diagram readability.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/double_negation?rev=1707301187&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-07T10:19:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Avoid double negations</title>
        <link>https://bpmnbox.org/en/rule/double_negation?rev=1707301187&amp;do=diff</link>
        <description>Avoid double negations

gateway

Double negations make business logic confusing.

✔ How to



✘ How NOT to



Author(s)

 --- Anatoly Belaychuk 2024-01-17 20:59</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/end_event_naming?rev=1732710431&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-27T12:27:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>End event name should answer the question &quot;how did the case end?&quot;</title>
        <link>https://bpmnbox.org/en/rule/end_event_naming?rev=1732710431&amp;do=diff</link>
        <description>End event name should answer the question &quot;how did the case end?&quot;

naming end_event

End event shows the resulting status of the process.

✔ How to

✘ How NOT to

Notes

Condsider a summary table for a process in the format “status - quantity”.
What you would like to see in the</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/end-to-end?rev=1724760679&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T12:11:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Model processes end-to-end</title>
        <link>https://bpmnbox.org/en/rule/end-to-end?rev=1724760679&amp;do=diff</link>
        <description>Model processes end-to-end

process

End-to-end means covering all phases, from the very beginning to the end.
End-to-end process tends to be cross-functional yet these are two different aspects.

✔ How to

✘ How NOT to

Notes

Take legal cases is a good model:</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/event_gateway_warning?rev=1724503772&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-24T12:49:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Use event gateways with caution</title>
        <link>https://bpmnbox.org/en/rule/event_gateway_warning?rev=1724503772&amp;do=diff</link>
        <description>Use event gateways with caution

gateway parallel_gateway event_gateway

Event gateway immediately interrupts all catching events when any single one occurs.
For more versatile logic consider the combination of parallel gateway and terminating event.

✔ How to

✘ How NOT to

Notes

Mind the difference between the diagrams below: while</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/explicit_parallel_merge?rev=1727348098&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-26T10:54:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Make parallel merge explicit</title>
        <link>https://bpmnbox.org/en/rule/explicit_parallel_merge?rev=1727348098&amp;do=diff</link>
        <description>Make parallel merge explicit

parallel_gateway sequence_flow terminate_event

Use parallel gateway to merge parallel flows.

✔ How to

✘ How NOT to

Task with two incoming flows will be executed twice.
Probably this wasn&#039;t your intention.

Executing this model by BPMS would lead to misreporting - doubled number of end events.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/explicit_parallel_split?rev=1724507046&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-24T13:44:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Make parallel split explicit</title>
        <link>https://bpmnbox.org/en/rule/explicit_parallel_split?rev=1724507046&amp;do=diff</link>
        <description>Make parallel split explicit

parallel_gateway sequence_flow

Avoid multiple sequence flows outgoing from an activity or event.

✔ How to

✘ How NOT to

According to  BPMN spec, the process depicted below does exactly what the “to do” process does: both are executed in parallel. The difference is this: parallel exectution is explicit in the diagram above and implicit in the diagram below. The explicit way should be preferred indeed.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/external_event?rev=1724850928&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-28T13:15:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Use a dedicated process to catch the event initiated by external participant</title>
        <link>https://bpmnbox.org/en/rule/external_event?rev=1724850928&amp;do=diff</link>
        <description>Use a dedicated process to catch the event initiated by external participant

process collaboration

When an event initiated by external participant occurs (e.g. ordered goods are delivered by supplier), it isn&#039;t tied to the context (specific purchase order) yet.
It means it&#039;s impossible to process such event withing a running instance of a process (we have more than one purchase order awaiting delivery).
Therefore it should be processed by a dedicated event process (not to be confused with even…</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/handover_is_sequence_flow?rev=1723990263&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-18T14:11:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Model handover by a sequence flow</title>
        <link>https://bpmnbox.org/en/rule/handover_is_sequence_flow?rev=1723990263&amp;do=diff</link>
        <description>Model handover by a sequence flow

sequence_flow task event

Model routine handover in course of a process by a sequence flow.

✔ How to



✘ How NOT to





Exceptions

	*  Sequence flow is sufficient when routine communcation means is used like interdepartment paper mail, email, ERP or workflow software. If a non-trivial communication is used (e.g. sending documents with courier) then it&#039;s OK to model it by a task.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/happy_path?rev=1724674324&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-26T12:12:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Show the happy path</title>
        <link>https://bpmnbox.org/en/rule/happy_path?rev=1724674324&amp;do=diff</link>
        <description>Show the happy path

happy_path

Highlight the happy path visually at the diagram.

✔ How to

1.
Diagram without swimlines.
Happy path goes directly left to right, exceptions turn up or down.

2.
Diagram with swimlanes.
Happy path colored green, acceptable exceptions (exctra work) marked yellow, unacceptable exceptions (defects, rework) marked red.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/horizontal_diagram?rev=1724351305&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-22T18:28:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Arrange diagrams horizontally</title>
        <link>https://bpmnbox.org/en/rule/horizontal_diagram?rev=1724351305&amp;do=diff</link>
        <description>Arrange diagrams horizontally

pool lane visual_style

Although BPMN spec allows both horizontal and vertical orientation the horizontal style should be preferred.

✔ How to



✘ How NOT to



Notes

Most business people view the process diagrams horizontally while IT people generally prefer vertical orientation - this is a common example of</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/human_decision?rev=1705137900&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-13T09:25:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Use task plus gateway to model human-made decisions</title>
        <link>https://bpmnbox.org/en/rule/human_decision?rev=1705137900&amp;do=diff</link>
        <description>Use task plus gateway to model human-made decisions

task gateway

There is no BPMN dedicated to depict a human decision. Use a human task followed by exclusive gateway.

✔ How to

✘ How NOT to

See also

	*  Check subprocess result on exit
	*  Don&#039;t use &quot;flows with diamonds&quot;
	*  Model work by activity

Author(s)

 --- Anatoly Belaychuk 2024-01-13 10:59</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/intermediate_event_naming?rev=1724695944&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-26T18:12:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Intermediate event name should answer the question &quot;what happened?&quot;</title>
        <link>https://bpmnbox.org/en/rule/intermediate_event_naming?rev=1724695944&amp;do=diff</link>
        <description>Intermediate event name should answer the question &quot;what happened?&quot;

naming intermediate_event

This rule is applied to all kinds of intermediate events - throwing, catching and attached.

✔ How to

✘ How NOT to

Notes

In case of message or signal the names of paired events must match.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/keep_it_short?rev=1724341770&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-22T15:49:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Keep activities names short</title>
        <link>https://bpmnbox.org/en/rule/keep_it_short?rev=1724341770&amp;do=diff</link>
        <description>Keep activities names short

naming

Mind the difference between activity name and activity description. Activity name should be short to fit into the activity box.

✔ How to

✘ How NOT to



Notes

Don&#039;t try to put detailed activity description into activity label. Use swimlanes, custom artifacts, data objects and data stores to show who performs the task and which tools and data should be used.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/micromanagement?rev=1705004927&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-11T20:28:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Avoid micromanagement</title>
        <link>https://bpmnbox.org/en/rule/micromanagement?rev=1705004927&amp;do=diff</link>
        <description>Avoid micromanagement

task subprocess

Activities executed by a single performer at a single workplace and within a limited timeframe should be modelled as a sinlge task, not as a series of tasks or a subprocess.

✔ How to

✘ How NOT To

Notes

Questions that face anyone who models processes in BPMN: to what level should the process be decomposed? Is it worth to depict how the task is performed?</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/overlapped_flows?rev=1724510242&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-24T14:37:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Avoid sequence flows overlapping</title>
        <link>https://bpmnbox.org/en/rule/overlapped_flows?rev=1724510242&amp;do=diff</link>
        <description>Avoid sequence flows overlapping

sequence_flow exclusive_gateway

Merge sequence flows with exclusive gateways.

✔ How to

✘ How NOT to

Notes

While not affecting the process logic, merging sequence flows into gateways make the diagram easier to understand.

See also

	*  Don&#039;t save on gateways

Author(s)</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/overuse_terminate?rev=1724677555&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-26T13:05:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t overuse terminate event</title>
        <link>https://bpmnbox.org/en/rule/overuse_terminate?rev=1724677555&amp;do=diff</link>
        <description>Don&#039;t overuse terminate event

terminate_event error_event

Don&#039;t use the terminate event if the none end event suffices.

✔ How to

✘ How NOT to

Notes

Use the terminate event if there are several parallel paths and you need to stop them all.

Don&#039;t use terminate the terminate event if you need to highlight the unwanted process end, use the none end event instead.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/process_naming?rev=1724754046&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T10:20:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Name process as a service</title>
        <link>https://bpmnbox.org/en/rule/process_naming?rev=1724754046&amp;do=diff</link>
        <description>Name process as a service

process naming

Process name should present it to the consumer.

✔ How to

✘ How NOT to

Notes

	*  Don&#039;t use the task name template for a process name
	*  Don&#039;t use the word «process» in a process name
	*  Acceptable alternative naming style is</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/single_process?rev=1724868056&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-28T18:00:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Don&#039;t place more than one expanded pool at one diagram</title>
        <link>https://bpmnbox.org/en/rule/single_process?rev=1724868056&amp;do=diff</link>
        <description>Don&#039;t place more than one expanded pool at one diagram

process

Don&#039;t place several expanded processes at one diagram.

✔ How to

Diagram 1:

Diagram 2:

To show bird&#039;s eye perspective of several collaborating processes, use “black box” pools only and then expand each pool on a separate diagram:</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/start_and_end_of_process?rev=1732714958&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-27T13:42:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Make process start and end explicit</title>
        <link>https://bpmnbox.org/en/rule/start_and_end_of_process?rev=1732714958&amp;do=diff</link>
        <description>Make process start and end explicit

event start_event end_event

Always depict start and end events.

✔ How to

✘ How NOT to

Notes

According to  BPMN spec start and end events aren&#039;t obligatory -
an activity without incoming sequence flows is treated as implicit process start, activity without outgoing sequence flows is implicit end.
However it&#039;s better to avoid such diagrams because they may be misunderstood.</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/start_event_naming?rev=1724693643&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-26T17:34:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Start event name should answer the question &quot;what happened?&quot;</title>
        <link>https://bpmnbox.org/en/rule/start_event_naming?rev=1724693643&amp;do=diff</link>
        <description>Start event name should answer the question &quot;what happened?&quot;

naming start_event

Event must be named as event, not as activity or condition.

✔ How to

✘ How NOT to

Exceptions

See also

	*  End event name should answer the question &quot;how did the case end?&quot;
	*  Intermediate event name should answer the question &quot;what happened?&quot;

Author(s)

 --- Anatoly Belaychuk 2024-08-22 21:03</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/start?rev=1705255272&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-14T18:01:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Rules of &quot;Good&quot; BPMN</title>
        <link>https://bpmnbox.org/en/rule/start?rev=1705255272&amp;do=diff</link>
        <description>Rules of &quot;Good&quot; BPMN


	* A subprocess and a control branch may be used as an alternative to the attached event
	* Activities performed in different rhytms belong to different processes
	* Align process and activities instances
	* Arrange diagrams horizontally
	* Attach a sequence flow to any side of the activity box
	* Avoid double negations
	* Avoid micromanagement
	* Avoid sequence flows overlapping
	* Check subprocess result on exit
	* Diagram should fit one page
	* Disconnected sequence flo…</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/structured_diagram?rev=1732711707&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-27T12:48:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Follow structured modeling rules</title>
        <link>https://bpmnbox.org/en/rule/structured_diagram?rev=1732711707&amp;do=diff</link>
        <description>Follow structured modeling rules

subprocess gateway loop

Leverage structured blocks and subprocesses.

✔ How to

Sequence:

Selection, parallel, conditionally parallel:

Cycles - explicit, loop, multi-instance:

Subprocess, call activity:

✘ How NOT to

Process will hang out at the parallel merge:</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/subprocess_naming?rev=1724779829&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-27T17:30:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Use the same naming templates for processes and subprocesses</title>
        <link>https://bpmnbox.org/en/rule/subprocess_naming?rev=1724779829&amp;do=diff</link>
        <description>Use the same naming templates for processes and subprocesses

naming process subprocess

Name subprocesses as processes, not as tasks.

✔ How to

✘ How NOT to

Notes

A subprocess has similarities to a task (both are actions within a process) and a process (both contain a flow of activities), 
but</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/subprocess_start_event?rev=1724348712&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-22T17:45:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Subprocess must be started by none event</title>
        <link>https://bpmnbox.org/en/rule/subprocess_start_event?rev=1724348712&amp;do=diff</link>
        <description>Subprocess must be started by none event

event start_event subprocess

✔ How to



✘ How NOT to



Notes

	*  A subprocess is started by a call from the upper-level subprocess or process: “now proceed to work, it&#039;s your turn”. Therefore a subprocess should not begin with an exeternal start event like timer or message. (Exeternal start event is a qualified property of a process.)</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/task_naming?rev=1724680417&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-26T13:53:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Task name should answer the question &quot;what should we do?&quot;</title>
        <link>https://bpmnbox.org/en/rule/task_naming?rev=1724680417&amp;do=diff</link>
        <description>Task name should answer the question &quot;what should we do?&quot;

naming task

Use template verb noun.

✔ How to

✘ How NOT to

See also

	*  Name process as a service
	*  Use the same naming templates for processes and subprocesses

Author(s)

 --- Anatoly Belaychuk 2024-08-26 16:43</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/time_flows_left_to_right?rev=1724503736&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-24T12:48:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Time should flow left to right</title>
        <link>https://bpmnbox.org/en/rule/time_flows_left_to_right?rev=1724503736&amp;do=diff</link>
        <description>Time should flow left to right

pool sequence_flow link_event visual_style

Avoid sequence flows running right to left.

✔ How to

It&#039;s OK to wrap the process flow if it becomes too wide:

or to utilize link events:

If swimlanes are used, it&#039;s OK for sequence flows to go up or down:

✘ How NOT to</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/use-default-flow-only-in-executable-models?rev=1743495922&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-01T08:25:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Use default flow only in executable models</title>
        <link>https://bpmnbox.org/en/rule/use-default-flow-only-in-executable-models?rev=1743495922&amp;do=diff</link>
        <description>Use default flow only in executable models

default_flow

Use default flow outgoing from the exclusive gateway only if the model to be executed by a process engine.

✔ How to

Executable model:

Non-executable model:

Notes

	*  When used in the executable model, the default flow guarantees that the process will continue even if there is a mistake in the flow conditions. E.g. there may be a gateway controlled by a boolean attribute stored in a database. Process designer may define flow condition…</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/v_shaped_flow?rev=1724348618&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-22T17:43:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Main process flow in a properly organized diagram tends to be V-shaped</title>
        <link>https://bpmnbox.org/en/rule/v_shaped_flow?rev=1724348618&amp;do=diff</link>
        <description>Main process flow in a properly organized diagram tends to be V-shaped

sequence_flow lane visual_style

It&#039;s typical for a process diagram to run from top-left corner down (involving more participants) and right (following the time axis) and then return back to the initiator.

✔ How to</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/veto?rev=1736356163&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-08T17:09:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Use a subprocess with a terminate or error error event to model veto power</title>
        <link>https://bpmnbox.org/en/rule/veto?rev=1736356163&amp;do=diff</link>
        <description>Use a subprocess with a terminate or error error event to model veto power

subprocess terminate_event error_event

✔ How to

See also

	*  Error event may be used to model business exceptions

Author(s)

 --- Anatoly Belaychuk 2025-01-08 20:03</description>
    </item>
    <item rdf:about="https://bpmnbox.org/en/rule/work_is_activity?rev=1724346620&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-22T17:10:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Model work by activity</title>
        <link>https://bpmnbox.org/en/rule/work_is_activity?rev=1724346620&amp;do=diff</link>
        <description>Model work by activity

task

A work to be performed in a course of a process must be modelled by the activity - task (atomic activity) or subprocess (complex activity).

✔ How to

✘ How NOT to

Notes

	*  Work is depicted by a rounded box, not a circle neither a diamond shape.</description>
    </item>
</rdf:RDF>
