Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
We have an app that runs in Qlik Sense to trigger NPrinting task, which is chained to a main app, meaning once the main app runs finish, this NPrinting trigger API task will then run to trigger the NPrinting tasks. We have been experiencing frequent failures of the NPrinting Trigger Tasks recently. This works well most of the time but once it fails, the NPrinting task has to be recreated.
-Retrieved 0 rows when retrieving task_name from NPrinting tasks
Recreating the task in NPrinting resolved the problem. However, the same issue has continued to occur intermittently on other tasks, and this workaround is not a sustainable solution for us.
QS Script as below:
vURL is being maintained in excel.
LIB CONNECT TO 'NPrinting Rest Login (GET)';
RestConnectorMasterTable:
SQL SELECT
"Set-Cookie",
"__KEY__response_header"
FROM JSON "_response_header" PK "__KEY__response_header";
Let vCookieRaw = Peek('Set-Cookie',0,'cookie_items');
Let vCookie = TextBetween(
vCookieRaw,
'SameSite=None,',
' Path=/',
SubStringCount(vCookieRaw,'SameSite=None')-1
);
LIB CONNECT TO 'NPrinting Rest Login (GET)';
RestNPTasksMasterTable:
SQL SELECT
"__KEY_data",
(SELECT
"id",
"name",
"enabled",
"__FK_items"
FROM "items" FK "__FK_items")
FROM JSON (wrap off) "data" PK "__KEY_data"
WITH CONNECTION(
URL "$(vURL_1)",
HTTPHEADER "cookie" "$(vCookie)"
);
TRACE **$(vURL_1) **;
[task_items]:
LOAD
[id] AS [tasks_taskId],
[name] AS [tasks_taskName]
RESIDENT RestNPTasksMasterTable
WHERE NOT IsNull([__FK_items])
//AND [enabled] = 'True'
AND [name] = 'Sales Report - 01';
LET vTaskCount = NoOfRows('task_items');
IF $(vTaskCount) = 0 THEN
TRACE *** ERROR: NPrinting task not found! ***;
EXIT SCRIPT 1;
ENDIF;
DROP TABLE RestNPTasksMasterTable;
LET vNumberTasks = NoOfRows('task_items');
FOR i = 0 TO vNumberTasks - 1
LET vTaskId = Peek('tasks_taskId', i, 'task_items');
LET vTaskName = Peek('tasks_taskName', i, 'task_items');
TRACE Triggering NPrinting Task: $(vTaskName);
LET vPublishURL =
'$(vURL_1)' &
'$(vTaskId)' &
'/executions';
// REST Connection (POST)
LIB CONNECT TO 'NPrinting Rest Connection (POST)';
RestNPTaskTriggerTable:
SQL SELECT "__KEY_data"
FROM JSON (wrap off) "data" PK "__KEY_data"
WITH CONNECTION(
URL "$(vPublishURL)",
HTTPHEADER "cookie" "$(vCookie)"
);
DROP TABLE RestNPTaskTriggerTable;
NEXT
Drop Table [task_items];
Sleep(180000);
LIB CONNECT TO 'NPrinting Rest Login (GET)';
RestConnectorMasterTable:
SQL SELECT
"Set-Cookie",
"__KEY__response_header"
FROM JSON "_response_header" PK "__KEY__response_header";
Let vCookieRaw = Peek('Set-Cookie',0,'cookie_items');
Let vCookie = TextBetween(
vCookieRaw,
'SameSite=None,',
' Path=/',
SubStringCount(vCookieRaw,'SameSite=None')-1
);
LIB CONNECT TO 'NPrinting Rest Login (GET)';
RestNPTasksMasterTable:
SQL SELECT
"__KEY_data",
(SELECT
"id",
"name",
"enabled",
"__FK_items"
FROM "items" FK "__FK_items")
FROM JSON (wrap off) "data" PK "__KEY_data"
WITH CONNECTION(
URL "$(vURL_1)",
HTTPHEADER "cookie" "$(vCookie)"
);
TRACE **$(vURL_1) **;
[task_items]:
LOAD
[id] AS [tasks_taskId],
[name] AS [tasks_taskName]
RESIDENT RestNPTasksMasterTable
WHERE NOT IsNull([__FK_items])
//AND [enabled] = 'True'
AND [name] = 'Sales Report - 02';
LET vTaskCount = NoOfRows('task_items');
IF $(vTaskCount) = 0 THEN
TRACE *** ERROR: NPrinting task not found! ***;
EXIT SCRIPT 1;
ENDIF;
DROP TABLE RestNPTasksMasterTable;
LET vNumberTasks = NoOfRows('task_items');
FOR i = 0 TO vNumberTasks - 1
LET vTaskId = Peek('tasks_taskId', i, 'task_items');
LET vTaskName = Peek('tasks_taskName', i, 'task_items');
TRACE Triggering NPrinting Task: $(vTaskName);
LET vPublishURL =
'$(vURL_1)' &
'$(vTaskId)' &
'/executions';
// REST Connection (POST)
LIB CONNECT TO 'NPrinting Rest Connection (POST)';
RestNPTaskTriggerTable:
SQL SELECT "__KEY_data"
FROM JSON (wrap off) "data" PK "__KEY_data"
WITH CONNECTION(
URL "$(vPublishURL)",
HTTPHEADER "cookie" "$(vCookie)"
);
DROP TABLE RestNPTaskTriggerTable;
NEXT
Seeking advise from API experts.
Best Regards,
Nelson
Please let me know if you have the solution too