{
  "productInfo" : {
    "company" : "HighByte",
    "product" : "IntelligenceHub",
    "version" : "4.3.1",
    "build" : "2025.11.17.5",
    "stage" : "Release"
  },
  "project" : {
    "version" : 12,
    "connections" : [ {
      "name" : "Files",
      "uri" : "file://Files",
      "tags" : [ "FileChanges", "LastUpdateTime" ],
      "writes" : {
        "flattenModeledValues" : false
      },
      "subscriptions" : { },
      "storeForward" : {
        "enabled" : false,
        "maxEntries" : 100,
        "waitOnFailureInterval" : {
          "duration" : 1,
          "units" : "Seconds"
        }
      },
      "settings" : {
        "communicationProtocol" : {
          "type" : "FILE_PROTOCOL",
          "options" : { }
        },
        "directory" : "C:\\Temp"
      }
    } ],
    "inputs" : [ {
      "name" : "Browse",
      "connection" : "Files",
      "type" : "file",
      "qualifier" : {
        "type" : "Browse",
        "fileName" : "(.+)",
        "encoding" : "Binary",
        "timeFilterType" : "None",
        "indexFile" : false,
        "recursive" : false,
        "startTime" : "2023-02-21T17:11:56.579Z",
        "relativePath" : "/"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "Browser",
      "connection" : "Files",
      "type" : "file",
      "qualifier" : {
        "type" : "Browse",
        "fileName" : "(.+)",
        "encoding" : "Binary",
        "timeFilterType" : "Updated",
        "startTime" : "{{this.LastUpdateTime}}",
        "indexFile" : false
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "inline",
        "model" : {
          "name" : "params",
          "tags" : [ ],
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "LastUpdateTime",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "defaultValue" : "{{this.LastUpdateTime}}",
            "internalType" : "String"
          } ]
        }
      }
    }, {
      "name" : "File",
      "connection" : "Files",
      "type" : "file",
      "qualifier" : {
        "type" : "File",
        "encoding" : "Auto",
        "timeFilterType" : "None",
        "indexFile" : false,
        "includeMetadata" : false,
        "regex" : "Sample.xml",
        "searchType" : "fileRegexSearch"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "EmptyParameters"
      }
    }, {
      "name" : "FileWithParameter",
      "connection" : "Files",
      "type" : "file",
      "qualifier" : {
        "type" : "File",
        "encoding" : "Auto",
        "timeFilterType" : "None",
        "indexFile" : false,
        "includeMetadata" : false,
        "regex" : "{{this.FileName}}",
        "searchType" : "fileRegexSearch"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "inline",
        "model" : {
          "name" : "params",
          "tags" : [ ],
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "FileName",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "defaultValue" : "{{this.FileName}}",
            "internalType" : "String"
          } ]
        }
      }
    }, {
      "name" : "GetFile",
      "connection" : "Files",
      "type" : "file",
      "qualifier" : {
        "type" : "File",
        "encoding" : "Auto",
        "timeFilterType" : "None",
        "indexFile" : false,
        "includeMetadata" : false,
        "regex" : "{{this.FileName}}",
        "searchType" : "fileRegexSearch"
      },
      "cacheLifetime" : {
        "enabled" : false
      },
      "template" : {
        "type" : "Off"
      },
      "parameters" : {
        "type" : "inline",
        "model" : {
          "name" : "params",
          "tags" : [ ],
          "attributes" : [ {
            "attributeType" : "Internal",
            "name" : "FileName",
            "nullable" : false,
            "required" : false,
            "array" : false,
            "defaultValue" : "{{this.FileName}}",
            "internalType" : "String"
          } ]
        }
      }
    } ],
    "outputs" : [ ],
    "modeling" : {
      "models" : [ ],
      "instances" : [ ]
    },
    "conditions" : [ ],
    "functions" : [ ],
    "tags" : [ {
      "name" : "LastUpdateTime"
    } ],
    "pipelines" : [ {
      "name" : "ReadFilesInSequenceBasedOnUpdateTime",
      "tags" : [ "LastUpdateTime" ],
      "inputStages" : [ "GetLastUpdateTime" ],
      "stages" : [ {
        "name" : "GetFile",
        "display" : {
          "position" : {
            "x" : 2490,
            "y" : 0
          }
        },
        "config" : {
          "type" : ".ReadConfig",
          "failureOutputs" : [ ],
          "reference" : {
            "type" : "Input",
            "name" : "GetFile",
            "path" : "",
            "params" : {
              "FileName" : "{{event.value.name}}"
            },
            "connectionName" : "Files"
          }
        },
        "outputs" : [ "SetLastUpdateTime" ]
      }, {
        "name" : "GetLastUpdateTime",
        "display" : {
          "position" : {
            "x" : 240,
            "y" : 0
          }
        },
        "config" : {
          "type" : ".JavaScriptTransformConfig",
          "transformExpression" : "let lastUpdateTime = state.pipeline.get(\"LastUpdateTime\", \"2025-03-01T00:00:00.000Z\");\r\nstage.setMetadata(\"LastUpdateTime\", lastUpdateTime);\r\nstage.setValue(event.value);"
        },
        "outputs" : [ "Browser" ]
      }, {
        "name" : "GetFirstFileAtZeroIndex",
        "display" : {
          "position" : {
            "x" : 1590,
            "y" : 0
          }
        },
        "config" : {
          "type" : ".JSONataTransformConfig",
          "transformExpression" : "event.value[0]"
        },
        "outputs" : [ "LastUpdateTime" ]
      }, {
        "name" : "LastUpdateTime",
        "display" : {
          "position" : {
            "x" : 2040,
            "y" : 0
          }
        },
        "config" : {
          "type" : ".AttributeFilterConfig",
          "filterOption" : "exclude",
          "filterList" : [ {
            "filterType" : "exactPathFilter",
            "filterText" : "updateTime"
          } ],
          "retainAsMetadata" : true,
          "metadataKey" : "filtered"
        },
        "outputs" : [ "GetFile" ]
      }, {
        "name" : "SetLastUpdateTime",
        "display" : {
          "position" : {
            "x" : 2940,
            "y" : 0
          }
        },
        "config" : {
          "type" : ".JavaScriptTransformConfig",
          "transformExpression" : "state.pipeline.set(\"LastUpdateTime\", event.metadata.filtered.updateTime);\r\n\r\nstage.setValue(event.value);"
        },
        "outputs" : [ ]
      }, {
        "name" : "Browser",
        "display" : {
          "position" : {
            "x" : 690,
            "y" : 0
          }
        },
        "config" : {
          "type" : ".ReadConfig",
          "failureOutputs" : [ ],
          "reference" : {
            "type" : "Input",
            "name" : "Browser",
            "path" : "",
            "params" : {
              "LastUpdateTime" : "{{event.metadata.LastUpdateTime}}"
            },
            "connectionName" : "Files"
          }
        },
        "outputs" : [ "ReadFilesInSequenceBasedOnUpdateTime" ]
      }, {
        "name" : "ReadFilesInSequenceBasedOnUpdateTime",
        "display" : {
          "position" : {
            "x" : 1140,
            "y" : 0
          }
        },
        "config" : {
          "type" : ".JSONataTransformConfig",
          "transformExpression" : "$sort(event.value[type='File'], function($l, $r) { $l.updateTime > $r.updateTime })"
        },
        "outputs" : [ "GetFirstFileAtZeroIndex" ]
      } ],
      "trackActivity" : false,
      "triggers" : [ ],
      "errorHandler" : {
        "type" : "default"
      }
    } ],
    "namespace" : [ ]
  },
  "network" : {
    "groups" : [ ],
    "hubs" : [ ]
  }
}