Using one of the chained property views, cyclic chained properties can be created. These properties are invalid and will cause a runtime error.
A cyclic chained property relationship is one in which a graph cycle exists between two or more tasks based on chained property relationships. That is, task A imports a chained property from task B, and task B also imports a chained property from task A. This situation is illegal because one of the tasks will not be able to import the cyclic chained property as the data will not exist at the time the import is required.
Graph cycles can also exist between more than two tasks. If A imports from B which imports from C, and C imports from A, a cycle exists.
If a chained property cycle exists in your project, you may receive an error message at runtime such as the following:
[ERROR] {renst118.KivatiProject1.exe.Execution Error} (4/26/2008 5:08:52 PM): System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
[ERROR] {renst118.KivatiProject1.exe.Execution Error} (4/26/2008 5:08:52 PM): at System.ThrowHelper.ThrowKeyNotFoundException()
[ERROR] {renst118.KivatiProject1.exe.Execution Error} (4/26/2008 5:08:52 PM): at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
[ERROR] {renst118.KivatiProject1.exe.Execution Error} (4/26/2008 5:08:52 PM): at KivatiProject1.__ChainedProperties.GetVal(String )
[ERROR] {renst118.KivatiProject1.exe.Execution Error} (4/26/2008 5:08:52 PM): at KivatiProject1._CtxKivati59effc56-82bf-474c-9588-2d1451e63e9f._pLog_B(Object )
[LOG] {Execution} (4/26/2008 5:08:52 PM): Execution complete
[LOG] {Execution} (4/26/2008 5:08:52 PM): 5 error(s), 0 warning(s)
This behavior is by design in this version of Kivati, although a future version will improve detection and error reporting for this specific situation.