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:
analyzers.process.transitions.logic.checks = NPathComplexity, ProcessDefinitionExtremelyConfusing, ProcessDefinitionVeryConfusing, ProcessDefinitionConfusing, BranchOutLogicConfusing, TransitionFanOutComplexity, TransitionFanInContentionIssue
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.
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
.
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
.
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 ...).
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
.
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
.
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.
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
.
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.
Currently this issue is related to several properties that are statically determined, these being:
ActivityLimit |
|
||||||
---|---|---|---|---|---|---|---|
BackTrack |
|
||||||
Skew |
|
||||||
MaxActivityLimit |
|
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 |
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
.