Limpiar (Flush) Cache de AOS o AOT en AX

Cuando tenemos varios AOS en un mismo ambiente, muchas veces cuando realizamos una instalación en producción o realizamos ajustes en el código, estas solo quedan visibles sobre el AOS en el que estamos realizando los ajustes, por ejemplo si tenemos un ambiente de producción de Dynamics AX y realizamos un paso a producción, estos solo son visibles en este AOS, y como es un ambiente de producción no podemos bajar los AOS o servicios de Dynamics AX, para esto debemos limpiar el cache del AOT en todos los AOS, para que tomen los cambios todos los AOS.

Para que se tomen los cambios al instalar un XPO o realizar cambios en el código y que sean tomados todos los AOS, lo que debemos hacer es crear un job y ejecutar el siguiente código para Limpiar el cache del AOT en todos los AOS, este código lo que hace es refrescar el diccionario del AOT y luego actualizarlo en el AOS, lo debemos ejecutar una vez hayamos realizado los cambios de código.

1
2
3
4
5
6
7
8
9
10
static server void refreshAOS(Args _args)
{
    ;
 
    xSession::removeAOC();
    SysTreeNode::refreshAll();
    SysFlushDictionary::doFlush();
    SysFlushAOD::doFlush();
    xSession::updateAOC();
}

Este código es otra opción en caso que sigamos teniendo problemas de cache en el AOT, se recomienda siempre por seguridad ejecutar ambos Jobs para limpiar el cache del AOT en los AOS, y que se tomen los cambios en todos los AOS instalados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public server static void refreshServer()
{
    #AOT ;
    TreeNode::findNode(#TablesPath).AOTrefresh();
    TreeNode::findNode(#TableMapsPath).AOTrefresh();
    TreeNode::findNode(#ViewsPath).AOTrefresh();
    TreeNode::findNode(#ExtendedDataTypesPath).AOTrefresh();
    TreeNode::findNode(#BaseEnumsPath).AOTrefresh();
    TreeNode::findNode(#LicenseCodesPath).AOTrefresh();
    TreeNode::findNode(#ConfigurationKeysPath).AOTrefresh();
    TreeNode::findNode(#SecurityKeysPath).AOTrefresh();
    TreeNode::findNode(#TableCollectionsPath).AOTrefresh();
    TreeNode::findNode(#PerspectivesPath).AOTrefresh();
    TreeNode::findNode(#MacrosPath).AOTrefresh();
    TreeNode::findNode(#ClassesPath).AOTrefresh();
    TreeNode::findNode(#ReportsPath).AOTrefresh();
    TreeNode::findNode(#ReportTemplatesPath).AOTrefresh();
    TreeNode::findNode(#SectionTemplatesPath).AOTrefresh();
    TreeNode::findNode(#QueriesPath).AOTrefresh();
    TreeNode::findNode(#JobsPath).AOTrefresh();
    Dictionary::aodFlush();
    Dictionary::dataFlush();
    flush UtilElements, UtilIdElements;
}

No olvides usar los comentarios, para cualquier duda o inquietud.

Articulos Relacionados

Si te gusto este articulo suscribete a nuestro Blog