From RunaWFE
Jump to navigation Jump to search

BPMN implementation

RunaWFE Free Workflow System (BPMS) Version 4.4.2

© 2015-2021, "Process Technologies" Ltd, this document is available under GNU FDL license. RunaWFE Free is an open source system distributed under a LGPL license (http://www.gnu.org/licenses/lgpl.html).

# Start event

Differences from specification

  • It must have a correspondent lane
  • It can have a start form
  • It can be executed by explicit start of business process

# Lane

Corresponds to BPMN (Lane element).

# User task

Corresponds to BPMN (User Task element).

# Text annotation

Corresponds to BPMN.

# Script task

Corresponds to BPMN (Script Task element). Script is a handler in the system.

# Timer

Corresponds to BPMN.

# Parallel gateway

Corresponds to BPMN.

# Exclusive gateway

Corresponds to BPMN.

# Subprocess

Corresponds to BPMN. (Only Reusable SubProcess).

# Multisubprocess

It differs from specification (Multiple Instances Activity)

  • in a way the subprocess number calculated:
    • by variable of List type
    • by users in given group
    • by users of given relation
  • subprocesses always are run in parallel (simultaneously)

# Send message, receive message

Simular signals and messages in BPMN

For sending and receiving messages JMS (Jboss Messaging) is used.

The order of message processing in business process is irrelevant.

Send message note never waits (unless there's an error) while receive message node waits for message and control flow may stay in this node indefinitely long time.

The message contains:

- routing data in key:value form

- variables of business process in key:value form

- TTL (optional)

Routing data defines the message receiver

One message can be processed by several receivers.

Routing data is processed by strict match of values on receiver end.


Sender: (type="1",action="add")

This message will be processed by any receiver with any of following routing setting

Receiver: (type="1")

Receiver: (type="1",action="add")

Receiver: ()

And it will not be processed by

Receiver: (type="1",action="delete")

Receiver: (type="1",action="add",waiting="yes")

Receiver: (waiting="yes")

In parameters configurator the following values are preset:

by current definition name ( ${currentDefinitionName} )

by current node name ( ${currentNodeName} )

by current instance id ( ${currentInstanceId} )

It's possible to use variables in routing property value (use ${variableName})

Data structure and processing enables to set correspondance between variables of sender and receiver on any or on both sides.

TTL helps to remove message from the system if no receivers for this message exist. It can happen if mistakes are made during process development.

# Message rollback handling)

- Sender node will not send message and process will rollback to the previous state. It ensures that one and only one message is send by sender node.

- Receiver node will return the message into the queue and it will be processed during next attempt (default timeout 1 minute)

# Multithreading message handling

# Before 4.1.0

All messages are processed simultaniously, it causes transactions conflicts if messages are sent into the same process, more so if into the same node.

# In 4.1.0

New setting receive.message.handle.in.sequence.enabled is added to system.properties (default value is true).

Messages in receive message nodes will be received in sequence (that handles multithreading issue which occurs when several messages come simultaneously into one and the same process node.).

# Since 4.1.1

All messaged are processed with synchronization by process instances. It means that messages to different process instances are processed simultaneously while within one process instance the are processed in sequence.

# End token

Similar to None End Event in BPMN.

# End

Similar to “terminate” End Event in BPMN.

# Business exception


Several elements in business process diagram can be put into Activity region. A business exception is attached to the region boundary. A new menu is added to the system interface. In it user (with certain permissions granted) can select a business process instance, available business exception and trigger this business exception generation for the selected business process instance. The list of the available business exceptions is created from the set of activity regions of the business process instance where the control flows are currently located. From the business exception element it's possible to make a transition to other business process elements.