Introduction

This module reviews the usage of the checkpoints within a given process definition. 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.logic.checkpoint.checks = HighCheckPointRatio, UnnecessaryRedundantCheckpoints,
          NoneRepeatableCheckpointExecution, CheckpointFarAfterProcessStart, StarterWithNoCheckpoint, 
          ProcessNotAlwaysCheckpointed, SpawnedWithNoCheckpoint

HighCheckPointRatio

Why is the issue raised?

This issue is raised when there are too many checkpoints in a Process Definition in comparaison to the number of activities.

How to configure this issue?

By default the threshold value is set to 0.25 via the following line:

analyzers.logic.checkpoint.ratio = 0.25

Changing the value within that line will impact the issue. This issue can be deactivated by removing the HighCheckPointRatio from the property analyzers.logic.checkpoint.checks.

UnnecessaryRedundantCheckpoints

Why is the issue raised?

This issue is raised when there are multiple checkpoints that are executed in parallel or in sequence. In both cases, there are too many checkpoints.

How to configure this issue?

This check isn't configurable, you can only deactivate it by removing the UnnecessaryRedundantCheckpoints from the property analyzers.logic.checkpoint.checks.

NoneRepeatableCheckpointExecution

Why is the issue raised?

This issue is raised when a checkpoint is executed in parallel of another activity. As there is no guarantee in which order both activities will be executed by the Process Engine, this could lead to none repeatable behaviour in the event of failure. As a result it will be difficult for a developer to locate a defect identified in production.

How to configure this issue?

This check isn't configurable, you can only deactivate it by removing the NoneRepeatableCheckpointExecution from the property analyzers.logic.checkpoint.checks.

CheckpointFarAfterProcessStart

Why is the issue raised?

This issue is raised when a checkpoint is executed a long time after the process starter. Generally it is not a good idea to have a checkpoint far away from the process starter as the Process Engine may fail in between.

How to configure this issue?

This check isn't configurable, you can only deactivate it by removing the CheckpointFarAfterProcessStart from the property analyzers.logic.checkpoint.checks.

StarterWithNoCheckpoint

Why is the issue raised?

This issue is raised when there is no checkpoint in a process definition that has a process starter. In general you should consider introducing a checkpoint in the event of a failure of a Process Engine.

How to configure this issue?

This check isn't configurable, you can only deactivate it by removing the StarterWithNoCheckpoint from the property analyzers.logic.checkpoint.checks.

ProcessNotAlwaysCheckpointed

Why is the issue raised?

This issue is raised when not all execution paths go through a checkpoint from the start activity to the end activity.

We believe that it is rather exceptional for a Process Definition to have an execution path with no checkpoint.

How to configure this issue?

This check isn't configurable, you can only deactivate it by removing the ProcessNotAlwaysCheckpointed from the property analyzers.logic.checkpoint.checks.

SpawnedWithNoCheckpoint

Why is the issue raised?

This issue is raised when a process is spawned without any checkpoints. In general it is not a good idea to spawn a process without checkpointing it, if the Process Engine fails then the process will not be restarted when the engine restarts.

How to configure this issue?

This check isn't configurable, you can only deactivate it by removing the SpawnedWithNoCheckpoint from the property analyzers.logic.checkpoint.checks.