首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定何时从AIF插入/更新记录?

如何确定何时从AIF插入/更新记录?
EN

Stack Overflow用户
提问于 2014-11-09 04:46:20
回答 1查看 1.8K关注 0票数 1

我有一个客户同步构建,使AX客户与外部系统的客户同步。

在外部系统上执行update/insert时,它会转储要处理的AIF文件。

我想在表方法CustTable.insert()CustTable.update()中加入一些逻辑,这样当插入/更新任何东西时,它就会推高外部系统,这样就可以正常工作。

问题是,当用户在外部系统中进行更改时,它会生成AIF文件,该文件随后在AX中插入/更新,然后将更改推送回外部系统。

如何确定何时从AIF进程执行custTable插入/更新?我正在寻找的伪代码在Tables\CustTable\Methods\insert()中应该是这样的

代码语言:javascript
复制
// Pseudo code
if (this.isFromAIF() == false)
{
   this.syncRecordToExternalSystem();
}
EN

回答 1

Stack Overflow用户

发布于 2014-12-03 04:53:21

这是一个非常困难的问题。正如@ian_socho所说,您可以创建一个仅由AIF设置的自定义标志。"createdby“用户无法工作,因为AIF执行模拟。

我做了实验,发现了一些有趣的属性。AIF操作似乎是作为辅助线程在CIL中执行的,但是辅助线程似乎是由AOS启动的,所以我无法断定masterSessionId

此代码将告诉您是否已从AIF调用了某些内容。我用SysOpFramework测试了工作线程,它们都有一个主线程。我用一个visual studio项目进行了测试,它有一个主会话。

代码语言:javascript
复制
xSession    xSession = new xSession(sessionId());

if (xSession.masterSessionId()  == 0        &&
    xSession.isWorkerThread()   == true     &&
    xSession.clientKind()       == ClientType::WorkerThread)
{
    // Appears to have been called from AIF
    return true; // AIF call
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26821904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档