LEGACY CONTENT
This article refers to legacy products, components or features. Therefore, the content in this article is offered "as is" and will no longer be updated. This content does not infer that the product, component or feature is supported, or that the product, component or feature will continue to function as described herein.

Introduction
Developing processes may result in recursive processes which if deployed to the server and instantiated could severely impact on the K2 Server. A feature enhancement has been implemented to warn the K2 Process Developer that the process or a portion of the process is potentially recursive.
The feature enhancement will not prevent the process deployment, but will warn the developer of the potentially pending issue.

Error Scenario

Shown below are two example processes, the first is non – recursive and the second recursive. A recursive process is one where two successive server events run back to back and the last server event’s outcome loops back to the first server event. 

Note: If two events, both server events have the potential to be executed back to back as a result of their outcomes, with the second process looping back to the first this will be considered a recursive process

Image

The first (4 step) workflow represents a non-recursive process because there is a client event between the two server events. In this case the server events do not execute back-to-back like in the second, 3-step workflow.

How it works
When the deployment is in process, the process is evaluated in terms of the outcomes of a Task Item / User Task or a Default Client Event. When the process encounters a Task Item / User Task or Default Client Event which has been encountered before this is flagged as a potentially recursive process and the warning message is displayed.

Managing Recursive Processes
If the deployment wizard warning is ignored and a recursive process is deployed, it may happen that process instances of the recursive process will go into an infinite recursive loop at runtime. If this should happen, users with Admin rights on the process can use the process administration tools in K2 Workspace or K2 Process Portal to delete these recursive process instances.
If recursive process instances are encountered at runtime, it is highly recommended that the infinite loop is addressed in the process design and the process  redeployed to prevent new process instances going into the same infinite recursive cycle.

This issue has been resolved in the latest K2 4.5 Update KB001420 (4.10060.1.1420)