Операторы SHOWDEP, SHOWREC
Операторы SHOWDEP и SHOWREC создают диагностические действия над списком свойств и действий: SHOWDEP выводит их статический граф зависимостей, SHOWREC включает отслеживание рекурсивного срабатывания событий в работающей системе.
Синтаксис
SHOWDEP [scope] [propertyId1, ..., propertyIdN]
SHOWREC [propertyId1, ..., propertyIdN]
Описание
Оператор SHOWDEP создаёт действие, которое строит текстовое представление графа зависимостей перечисленных свойств и действий и записывает его в системное свойство System.showResult (класса TEXT).
Оператор SHOWREC создаёт действие, которое включает отслеживание для перечисленных действий: каждое из списка помечается, все остальные — отмечаются как не отслеживаемые. Пока идёт применение транзакции, платформа отслеживает множество строк, на которых сработало бы помеченное действие, и записывает строку в системный лог при каждом изменении этого множества — благодаря чему сразу видно, какое именно изменение перезапускает то же событие. Повторный вызов SHOWREC заменяет отслеживаемый набор; вызов с пустым списком полностью выключает отслеживание.
Параметры
-
scopeВыбор ключевого слова, задающий область графа зависимостей. Если не указан, используется
GLOBAL.GLOBAL— Ключевое слово, при указании которого в граф включаются все зависимости, в том числе достижимые через события времени применения. Используется по умолчанию.LOCAL— Ключевое слово, при указании которого в граф включаются только зависимости в рамках сессии.
-
propertyId1, ..., propertyIdNСписок идентификаторов свойств и действий, разделённых запятыми. Список может быть пустым. Для
SHOWDEPпустой список даёт пустой дамп зависимостей. ДляSHOWRECимеют эффект только идентификаторы действий — идентификаторы свойств в списке игнорируются, — а пустой список снимает отслеживание со всех действий.
Примеры
// вывести глобальный граф зависимостей двух свойств
diagnoseDeps() {
SHOWDEP customer, orderSum;
}
// вывести зависимости одного свойства только в рамках сессии
diagnoseLocal() {
SHOWDEP LOCAL customer;
}
// начать отслеживание двух событий-действий
traceOrderEvents() {
SHOWREC recalculateBalance, syncStock;
}
// остановить всё отслеживание
stopTracing() {
SHOWREC;
}