From 57a839e86ba9ef6a29fdedc977d285956c915161 Mon Sep 17 00:00:00 2001 From: shivamvish160 <108731648+shivamvish160@users.noreply.github.com> Date: Wed, 1 Oct 2025 20:15:02 +0530 Subject: [PATCH 1/3] Create README.md --- .../README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./README.md diff --git a/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./README.md b/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./README.md new file mode 100644 index 0000000000..35ae0579ae --- /dev/null +++ b/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./README.md @@ -0,0 +1,17 @@ +# Detect Circular Reference in Task Dependencies + +## Overview + +This Script Include helps identify **circular dependencies** in task relationships within ServiceNow. Circular references can cause workflow issues, reporting errors, and logic failures in project management or task tracking modules. + +## What It Does + +- Traverses task dependencies recursively. +- Detects if a task is indirectly dependent on itself. +- Returns `true` if a circular reference is found, `false` otherwise. + +## Use Case + +Imagine Task A depends on Task B, and Task B depends on Task A. This creates a circular loop that can break automation or cause infinite recursion. This script helps prevent such configurations. + + From 9d9a7f2c94c6044f9e6a0fec84b301070f100a7c Mon Sep 17 00:00:00 2001 From: shivamvish160 <108731648+shivamvish160@users.noreply.github.com> Date: Wed, 1 Oct 2025 20:15:49 +0530 Subject: [PATCH 2/3] Create code.js --- .../code.js | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./code.js diff --git a/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./code.js b/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./code.js new file mode 100644 index 0000000000..960cef1ddb --- /dev/null +++ b/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./code.js @@ -0,0 +1,26 @@ +var DependencyChecker = Class.create(); +DependencyChecker.prototype = { + initialize: function() {}, + + hasCircularReference: function(taskId) { + var visited = {}; + return this._check(taskId, visited); + }, + + _check: function(taskId, visited) { + if (visited[taskId]) return true; + visited[taskId] = true; + + var gr = new GlideRecord('task_dependency'); + gr.addQuery('dependent_task', taskId); + gr.query(); + + while (gr.next()) { + if (this._check(gr.task.toString(), visited)) return true; + } + + return false; + }, + + type: 'DependencyChecker' +}; From a53f016360ee82b3d2fb941c4ad621133d4463b4 Mon Sep 17 00:00:00 2001 From: shivamvish160 <108731648+shivamvish160@users.noreply.github.com> Date: Wed, 1 Oct 2025 21:18:55 +0530 Subject: [PATCH 3/3] Update README.md --- .../README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./README.md b/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./README.md index 35ae0579ae..10993d90f3 100644 --- a/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./README.md +++ b/Server-Side Components/Script Includes/Prevent circular dependencies in task relationships./README.md @@ -1,5 +1,7 @@ # Detect Circular Reference in Task Dependencies + + ## Overview This Script Include helps identify **circular dependencies** in task relationships within ServiceNow. Circular references can cause workflow issues, reporting errors, and logic failures in project management or task tracking modules. @@ -14,4 +16,14 @@ This Script Include helps identify **circular dependencies** in task relationshi Imagine Task A depends on Task B, and Task B depends on Task A. This creates a circular loop that can break automation or cause infinite recursion. This script helps prevent such configurations. +Tables and modules it would be usefull +It is used for Table: planned_task_rel_planned_task +This table is used to define task dependencies between project tasks in ServiceNow's Strategic Portfolio Management (SPM) or Project Portfolio Management (PPM) modules. It stores relationships such as: + +Predecessor Task +Successor Task +Dependency Type (e.g., Finish-to-Start) + + +