Brief Overview of Debugging the Blueprint/Uniprint Tracker
The ComTaskMaster is the controlling process. It uses the config file CTskMstr.exe.config. This specifies the list of sub components it should load.
The components lists depend on the type of install. Full Blueprint, Minimal install for Uniprint Popups, or both Blueprint and Uniprint installed.
The ProfilerControlTask creates 4 threads.
Page Count, Forward, Update and Network Resolution.
Only the Update thread is used by the Uniprint installation
The Update thread scans the list of printers every so often, looking for changes, adds and removals.
Uniprint Popups requires the spool files generated by the Profiler. To avoid issues regarding who is responsible for the deletion of the spool files, the Profiler generates two copies of the spool file. One for the ProfilerControlTask/PageCounter the other for the Popup client.
The Profiler handles the renaming of the JobFileName within the PrintJob xml.
The Popup client is responsible for deleting its copy of the spool file, and the Profiler Control Task will either pass the file onto the PageCounter, or will delete the file if it is running a minimal install.
The Profiler places the Uniprint Popups copy of the spool file in the Temp directory under the Uniprint root directory.
What to look for in the logs:
The ComTaskMaster.log will show the successful loading and starting of all tasks.
For a Uniprint install this is the AppTrackerTask and ProfilerControlTask
For Blueprint this is the ProfilerControlTask, SettingsTask, DistributionTask and StoreNForwardTask.
The PrintProfiler shows the enumerating of the installed printers, and whether they have been successfully hooked or unhooked.
The ProfilerControlTask will show the starting of its threads. (only the CUpdateThread for a minimal install)
For a Uniprint only install, the line:
“Blueprint components not installed, running in Minimal Uniprint Installation mode”
should appear in the ProfilerControlTask log
On printing a job:
The PrintProfiler will make calls such as PP::StartDocPrinter and PP::StartDocPrinterHdlrB. The exact calls will depend on the print path, but should indicate that the profiler has begun the capture of the document.
There will be a call to SPrintInfo::LogJobStart. This will retrieve a handle to the ProfilerControlTask, via the ComTaskMaster. The RetrieveTask lines should appear in the ComTaskMaster log
The ProfilerControlTask will call CXmlLogger::LogPrintJobStart. At this point the Popup client is called, and it talks to the popup server to find out if there are any questions to ask the patron. It then asks the questions, collects the answers, and stores them until the print job is completed.
You should see the xml of the PrintJob, and the LogicalPrinter. The information is not complete at this stage.
The print job will be printed, and the profiler will capture it. You may see various PM::WritePort calls being made here.
You will see the Profiler make calls such as PP::EndDocPrinterHdlrA and PP::EndDocPrinterHdlrB, again depending on the print path.
Then again via the ComTaskMaster to the ProfilerControlTask, you will see CXmlLogger::LogPrintJobEnd, and the Xml for the PrintJob
The ProfilerControlTask receives the xml, validates it, processes logical printer information, resolves printer GUIDs, network info, persists the logical printer in the logical printer store, and delivers the printjob to the PageCount store.
For a Uniprint install, the following lines should appear in the Profiler log.
“Calling PopupLogger LogPrintJobEnd”.
“Copying spool file to 'C:\Program Files\Pharos\Temp\PSP00839.SPL' for Popups Logger”
“Logged job end”
This makes the call to the Popups client. The spool file should be at the location indicated. At this point, the Uniprint popup contacts the LPD server and sends the answers that were collected at the LogPrintJobStart event and the spool file to the print server.
The PageCounter (if running) picks up the print job from its store, processes the spool file, and posts the print job into the Outbound Jobs store.
The StoreNForward task (if running) sends jobs in batches from the Outbound Jobs store to the Blueprint Collector, or Analyst.