А обязательно вашу задачу решать через форму?
Например, такой джобик закеширует объекты АОТа из узла классов.
#AOT
static void glibs()
{
TreeNode treeNode;
TreeNodeIterator treeNodeIterator;
;
treeNode = TreeNode::findNode(#ClassesPath);
treeNodeIterator = treeNode.AOTiterator();
treeNode = treeNodeIterator.next();
while (treeNode)
{
treeNode.AOTload();
treeNode = treeNodeIterator.next();
}
}
Для других узлов его переделать несложно.
Только он память жрет прилично. Возможно, вам будет достаточно прогнать его без вызова treeNode.AOTload().
Я вот что заметил. После запуска джоба, остановки клиента и АОСа и последующего их запуска узел АОТа открывается быстро.
Посему я не уверен, но, возможно, при открытии узла АОТа анализируется не кэш АОСа, а читается какой-нибудь axapd.aoi (или что-то в этом роде) с диска. А после перезапуска АОСа файлы приложения живут в файловом кэше, и поэтому узел уже быстро открывается. Иначе пока я не знаю, как объяснить этот эффект.
Но джоб и в этом случае должен обеспечить кэширование файлов приложения.
Попробую проверить завтра. А то м.б. джоб нужно запускать время от времени в процессе работы, т.к. файловый кэш имеет свойство освобождаться.
А вообще, по-моему, надуманная проблема насчет того, что узел открывается неприемлемо долго. Это один раз происходит. После перезапуска сервера. И не так уж долго и терпеть приходится.
__________________
С уважением,
glibs®
|