I was trying to deal with this as well. We have scheduled tasks that we need to be alerted about when they fail. At first I was going the route of a method directive, but those tables are extremely important and creating a customization on them can be costly.
What we did to solve the issue was create a report that queries the Ice.SysTask table and returns rows that have a SysTask.TaskStatus = Error in the past 61 minutes. We inner joined the Ice.SysTask table to Ice.SysAgentSched so that the report only had rows where the task was linked to a schedule. We then scheduled the report on a schedule that repeats every 60 minutes. We excluded this schedule number from the Ice.SysAgentSched table so that this report wouldn’t fire off itself when it had No Rows. Please see the screenshots of the BAQ created, the System Agent Schedule, the Report RDL, and the pdf that we occasionally get when it fails.
When you see the BAQ, the sys task log is only included for a calculated field where we are checking to see if the error was due to No records selected. In this case we would not want to report these errors and send out the report because they are harmless. Your sales order acknowledgement process might error out due to no records depending on how you have that set up.
This report has its quirks, but at the very least it alerts of errors with very little impact on the sys task tables like a BPM or Data directive.