使用多个AOS时,如何确保方法可以访问最新数据?

时间:2014-11-18 20:33:06

标签: transactions axapta dynamics-ax-2012 dynamics-ax-2012-r2

我们的环境包括5个运行AX2012 R2 CU6的AOS。

在当前场景中,用户使用新记录填充许多表。在特定AOS上设置WebService以检索数据。

好像是"新" WebService永远不会获取数据(除非重新调整AOS),因为这些记录是在另一个AOS上创建的。

确保WS可以访问最新数据的最佳方法是什么?我想要一个服务器端解决方案(尝试在WS代码中实现一些appl.globalCache().clear()方法,但到目前为止没有任何成功。)

填充的数据结构中的所有表都具有其属性" CacheLookup"设置为" NotInTTS"。

此外,使用工具时 - >缓存 - > WS AOS上的Refresh Elements菜单项,我们的Web服务立即返回正确的数据......

3 个答案:

答案 0 :(得分:1)

当您使用NotInTTS缓存表时,可以将数据检索放入事务中:

ttsbegin;
select ...
ttscommit;
return ...

如果这不起作用,您可能会认为它是内核错误,应该报告。

冲洗现金可能有效,但会破坏他们的目的。

答案 1 :(得分:0)

刷新表缓存

YoutTableName cachedBuffer;
flush YoutTableName;

替代方案,您可以致电Dictionary::dataFlush

Dictionary::dataFlush(tableNum(YourTableName));

或者你可以调用所有表格

SysFlushData::doFlush();

答案 2 :(得分:0)

您还可以尝试在记录缓冲区上disableCache