snow-flow 10.0.1-dev.474 → 10.0.1-dev.476
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1148,101 +1148,125 @@ async function getFlowTriggerInfo(
|
|
|
1148
1148
|
var tableLabel = '';
|
|
1149
1149
|
var debug: any = {};
|
|
1150
1150
|
|
|
1151
|
+
// PRIMARY: Read flow via ProcessFlow REST API (same endpoint as Flow Designer UI)
|
|
1152
|
+
// This is how the UI loads the flow — returns JSON/XML with full trigger data
|
|
1151
1153
|
try {
|
|
1152
|
-
|
|
1153
|
-
var
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
)
|
|
1178
|
-
|
|
1154
|
+
debug.processflow_api = 'attempting';
|
|
1155
|
+
var pfResp = await client.get('/api/now/processflow/flow/' + flowId);
|
|
1156
|
+
var pfData = pfResp.data?.result || pfResp.data;
|
|
1157
|
+
debug.processflow_api = 'success';
|
|
1158
|
+
debug.processflow_type = typeof pfData;
|
|
1159
|
+
debug.processflow_keys = pfData && typeof pfData === 'object' ? Object.keys(pfData).slice(0, 20) : null;
|
|
1160
|
+
|
|
1161
|
+
// The ProcessFlow API returns the flow with trigger instances
|
|
1162
|
+
// Try multiple possible structures for trigger data
|
|
1163
|
+
var pfTriggers = pfData?.triggerInstances || pfData?.trigger_instances || pfData?.triggers || [];
|
|
1164
|
+
if (!Array.isArray(pfTriggers) && pfData?.model?.triggerInstances) {
|
|
1165
|
+
pfTriggers = pfData.model.triggerInstances;
|
|
1166
|
+
}
|
|
1167
|
+
if (!Array.isArray(pfTriggers) && pfData?.definition?.triggerInstances) {
|
|
1168
|
+
pfTriggers = pfData.definition.triggerInstances;
|
|
1169
|
+
}
|
|
1170
|
+
debug.processflow_triggers = Array.isArray(pfTriggers) ? pfTriggers.length : typeof pfTriggers;
|
|
1171
|
+
|
|
1172
|
+
if (Array.isArray(pfTriggers) && pfTriggers.length > 0) {
|
|
1173
|
+
var pfTrig = pfTriggers[0];
|
|
1174
|
+
debug.processflow_trigger_keys = Object.keys(pfTrig);
|
|
1175
|
+
debug.processflow_trigger_name = pfTrig.name;
|
|
1176
|
+
triggerName = pfTrig.name || pfTrig.triggerName || '';
|
|
1177
|
+
if (pfTrig.inputs && Array.isArray(pfTrig.inputs)) {
|
|
1178
|
+
for (var pfi = 0; pfi < pfTrig.inputs.length; pfi++) {
|
|
1179
|
+
if (pfTrig.inputs[pfi].name === 'table') {
|
|
1180
|
+
table = pfTrig.inputs[pfi].value?.value || str(pfTrig.inputs[pfi].value) || '';
|
|
1181
|
+
break;
|
|
1182
|
+
}
|
|
1179
1183
|
}
|
|
1180
1184
|
}
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
// If trigger not found in expected structure, search recursively in the response
|
|
1188
|
+
if (!triggerName && pfData) {
|
|
1189
|
+
var searchForTrigger = function (obj: any, depth: number): void {
|
|
1190
|
+
if (depth > 4 || triggerName) return;
|
|
1191
|
+
if (!obj || typeof obj !== 'object') return;
|
|
1192
|
+
// Look for objects that have triggerDefinitionId or triggerType + name
|
|
1193
|
+
if (obj.triggerDefinitionId && obj.name) {
|
|
1194
|
+
triggerName = obj.name;
|
|
1195
|
+
debug.processflow_trigger_found_at = 'recursive_search';
|
|
1196
|
+
if (obj.inputs && Array.isArray(obj.inputs)) {
|
|
1197
|
+
for (var ri = 0; ri < obj.inputs.length; ri++) {
|
|
1198
|
+
if (obj.inputs[ri].name === 'table') {
|
|
1199
|
+
table = obj.inputs[ri].value?.value || str(obj.inputs[ri].value) || '';
|
|
1200
|
+
break;
|
|
1201
|
+
}
|
|
1194
1202
|
}
|
|
1195
1203
|
}
|
|
1204
|
+
return;
|
|
1205
|
+
}
|
|
1206
|
+
if (Array.isArray(obj)) {
|
|
1207
|
+
for (var ai = 0; ai < obj.length; ai++) searchForTrigger(obj[ai], depth + 1);
|
|
1196
1208
|
} else {
|
|
1197
|
-
|
|
1209
|
+
for (var key of Object.keys(obj)) searchForTrigger(obj[key], depth + 1);
|
|
1198
1210
|
}
|
|
1199
|
-
}
|
|
1200
|
-
|
|
1201
|
-
debug.payload_raw = 'null_or_empty';
|
|
1211
|
+
};
|
|
1212
|
+
searchForTrigger(pfData, 0);
|
|
1202
1213
|
}
|
|
1203
|
-
} catch (
|
|
1204
|
-
debug.
|
|
1214
|
+
} catch (pfErr: any) {
|
|
1215
|
+
debug.processflow_api = 'error: ' + pfErr.message;
|
|
1205
1216
|
}
|
|
1206
1217
|
|
|
1207
|
-
// Fallback:
|
|
1218
|
+
// Fallback 1: Read version payload (legacy approach)
|
|
1208
1219
|
if (!triggerName || !table) {
|
|
1209
|
-
debug.
|
|
1220
|
+
debug.version_fallback = 'attempting';
|
|
1210
1221
|
try {
|
|
1211
|
-
var
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1222
|
+
var resp = await client.get('/api/now/table/sys_hub_flow_version', {
|
|
1223
|
+
params: {
|
|
1224
|
+
sysparm_query: 'flow=' + flowId + '^ORDERBYDESCsys_created_on',
|
|
1225
|
+
sysparm_fields: 'sys_id,payload',
|
|
1226
|
+
sysparm_limit: 1
|
|
1227
|
+
}
|
|
1228
|
+
});
|
|
1229
|
+
var payload = resp.data.result?.[0]?.payload;
|
|
1230
|
+
if (payload) {
|
|
1231
|
+
var parsed = typeof payload === 'string' ? JSON.parse(payload) : payload;
|
|
1232
|
+
debug.version_payload_keys = Object.keys(parsed);
|
|
1233
|
+
var trigInst = parsed.triggerInstances || parsed.trigger_instances || [];
|
|
1234
|
+
if (Array.isArray(trigInst) && trigInst.length > 0) {
|
|
1235
|
+
if (!triggerName) triggerName = trigInst[0].name || trigInst[0].triggerName || '';
|
|
1236
|
+
if (!table && trigInst[0].inputs) {
|
|
1237
|
+
for (var vi = 0; vi < trigInst[0].inputs.length; vi++) {
|
|
1238
|
+
if (trigInst[0].inputs[vi].name === 'table') {
|
|
1239
|
+
table = trigInst[0].inputs[vi].value?.value || '';
|
|
1240
|
+
break;
|
|
1241
|
+
}
|
|
1225
1242
|
}
|
|
1226
1243
|
}
|
|
1227
1244
|
}
|
|
1228
1245
|
}
|
|
1229
|
-
} catch (
|
|
1230
|
-
debug.fallback_graphql = 'error: ' + gqlErr.message;
|
|
1231
|
-
}
|
|
1246
|
+
} catch (_) {}
|
|
1232
1247
|
}
|
|
1233
1248
|
|
|
1234
|
-
// Fallback 2:
|
|
1235
|
-
if (!triggerName) {
|
|
1236
|
-
debug.
|
|
1249
|
+
// Fallback 2: query sys_hub_flow for table + trigger definition for name
|
|
1250
|
+
if (!triggerName || !table) {
|
|
1251
|
+
debug.flow_record_fallback = 'attempting';
|
|
1237
1252
|
try {
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
var trigResp = await client.get('/api/now/table/sys_hub_flow', {
|
|
1241
|
-
params: { sysparm_query: 'sys_id=' + flowId, sysparm_fields: 'sys_id,name,table', sysparm_limit: 1 }
|
|
1253
|
+
var flowResp = await client.get('/api/now/table/sys_hub_flow', {
|
|
1254
|
+
params: { sysparm_query: 'sys_id=' + flowId, sysparm_fields: 'sys_id,name,table,trigger_type', sysparm_limit: 1 }
|
|
1242
1255
|
});
|
|
1243
|
-
var flowRec =
|
|
1244
|
-
debug.
|
|
1245
|
-
if (
|
|
1256
|
+
var flowRec = flowResp.data.result?.[0];
|
|
1257
|
+
debug.flow_record = { table: str(flowRec?.table), trigger_type: str(flowRec?.trigger_type) };
|
|
1258
|
+
if (!table && flowRec?.table) table = str(flowRec.table);
|
|
1259
|
+
var trigTypeId = str(flowRec?.trigger_type);
|
|
1260
|
+
if (!triggerName && trigTypeId) {
|
|
1261
|
+
try {
|
|
1262
|
+
var trigDefResp = await client.get('/api/now/table/sys_hub_trigger_definition', {
|
|
1263
|
+
params: { sysparm_query: 'sys_id=' + trigTypeId, sysparm_fields: 'name,type', sysparm_limit: 1 }
|
|
1264
|
+
});
|
|
1265
|
+
var trigDef = trigDefResp.data.result?.[0];
|
|
1266
|
+
if (trigDef?.name) triggerName = str(trigDef.name);
|
|
1267
|
+
debug.trigger_def = { name: str(trigDef?.name), type: str(trigDef?.type) };
|
|
1268
|
+
} catch (_) {}
|
|
1269
|
+
}
|
|
1246
1270
|
} catch (_) {}
|
|
1247
1271
|
}
|
|
1248
1272
|
|