Introduction

The transition analyzer is mainly used to verify that the transition logic that has been defined within a process definition is valid and comprehensive. It also used to see if the process definition is well layed out, this corresponds to verifying a clean process definition (or if you prefer a clean code).

The list of issues that may be raised are explained hereafter and these are:

By default all these checks are activated by the following line:
analyzers.process.transitions.logic.checks = NPathComplexity, ProcessDefinitionExtremelyConfusing,
        ProcessDefinitionVeryConfusing, ProcessDefinitionConfusing, BranchOutLogicConfusing,
        TransitionFanOutComplexity, TransitionFanInContentionIssue

TransitionFanOutComplexity

Why and When is the issue raised?

This issue is raised when there are too many transitions leaving a given activity of a process definition. As the Business Works Process Engine is not multi-threaded at the job level there is no point in faning out because the activities will be executed one after the other anyway.

How to configure the threshold of this issue?

The limit beyond which this issue will be raised is defined by the property named analyzers.process.transitions.logic.maxFanOut . This property is usually located in the file raccoon.properties .

How to deactivate this issue?

This issue is deactivated by removing the string TransitionFanOutComplexity from the property named analyzers.process.transitions.logic.checks This property is usually located in the file raccoon.properties .

TransitionFanInContentionIssue

Why and When is the issue raised?

This issue is raised when there are too many transitions arriving at a given activity of a process definition. If there are many activities arriving at a single point, you should consider introducing intermediate steps. The intermediate step could very well be a simple checkpoint, so that if the BW engine crashes, you won't have to execute all those activities.

For example, suppose you have twelve activities arriving on a single checkpoint. Well if all of the activities have finished executing, except one, after a long period of time and at that precis point the engine fails. Well, the engine will probably have to re-execute once again, all those 12 activities (not good ...).

How to configure the threshold of this issue?

The limit beyond which this issue will be raised is defined by the property named analyzers.process.transitions.logic.maxFanIn . This property is usually located in the file raccoon.properties .

How to deactivate this issue?

This issue is deactivated by removing the string TransitionFanInComplexity from the property named analyzers.process.transitions.logic.checks This property is usually located in the file raccoon.properties .

BranchOutLogicConfusing

Why and When is the issue raised?

This issue is raised because there are conditional and none conditional transitions leaving a specific activity; usually this is a design flaw.

If this isn't a design flaw one should consider expressing the conditions differently because it may not be easy to maintain and understand such a design.

How to deactivate this issue?

This issue is deactivated by removing the string BranchOutLogicConfusing from the property named analyzers.process.transitions.logic.checks This property is usually located in the file raccoon.properties .

ProcessDefinitionConfusing, ProcessDefinitionVeryConfusing, ProcessDefinitionExtremelyConfusing

Why and When is the issue raised?

The general idea here is to measure the complexity of process definition, the more complexe a process is the harder it will be to understand and maintain. Basically this check tries to identify poorly designed process definitions.

One should understand that it is quite difficult to determine the quality of a process definition with precision. Currently the ProcessDefinitionConfusing issue is to be taken as a notice, whilst the others issues are generally correct.

These issues have clearly room for improvement, however if these issues are raised, in particular, ProcessDefinitionVeryConfusing, ProcessDefinitionExtremelyConfusing you should at least have a look at the process definition.

How to configure the threshold of this issue?

Currently this issue is related to several properties that are statically determined, these being:

ActivityLimit
Explanation The minimal number of activities a process definition has to contain if the check is to be applied. If there are less activities than this value, the quality review is skipped.
Default Threshold 10
Property Name analyzers.process.transitions.logic.activity.limit
BackTrack
Explanation Measures the number of transitions going backwards in the process definition. The idea here is that a process definition is read from left to right, backgoing transitions are viewed as gotos, hence should be avoided.
Default Threshold 3
Property Name analyzers.process.transitions.logic.backtrack.limit
Skew
Explanation Measures the number of transitions that are neither horizontal nor in a 45° angle. The idea here is to measure the layout of the Process Definition and see if the developer defined a neat process definition.
Default Threshold N/A: it is a scoring of the process definition
Property Name N/A
MaxActivityLimit
Explanation The maximal number of activities a process definition has to contain before the process definition is considered too complex to maintain/understand.
Default Threshold 100
Property Name analyzers.process.transitions.logic.activity.max

The different issues are raised if the following condition is true

Nb BackTrack + Skew > Nb Activities

and is based on the rules expressed hereafter:

ProcessDefinitionExtremelyConfusing ProcessDefinitionVeryConfusing ProcessDefinitionConfusing
(Nb_Activities > MaxActivityLimit) AND (Nb_BackTrack > BackTrack) (Nb_Activities > MaxActivityLimit) OR (Nb_BackTrack > BackTrack) Otherwise

How to deactivate this issue?

This issue is deactivated by removing one or all of the following strings: ProcessDefinitionConfusing or ProcessDefinitionVeryConfusing ProcessDefinitionExtremelyConfusing from the property named analyzers.process.transitions.logic.checks This property is usually located in the file raccoon.properties .