首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AX 2009 AIF表

AX 2009 AIF表
EN

Stack Overflow用户
提问于 2013-10-15 09:00:43
回答 1查看 1.7K关注 0票数 1

背景

我遇到的一个问题是,大约每月一次,AIFQueueManager表中填充大约150个记录,这些记录与6个多月前发送给AX的消息有关(其中它们“成功失败”;即由于违反业务规则而出错,但返回了一个异常)。

问题

AIF入站消息处理涉及哪些表/事件发生的顺序是什么?例如,XML文件被拾取并记录在AifDocumentLog中,数据被提取并添加到AifQueueManager和AifGatewayQueue表中,然后从这里的记录插入到AifMessageLog中,等等。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-15 22:45:28

这里有4个主要的AIF类,我将只讨论入站,重点讨论包含的文件系统适配器和平面文件。我希望这能让事情少一点模糊。

  1. AIFGatewayReceiveService --使用适配器/通道从不同来源读取中的消息(),并将它们转储到AifGatewayQueue表中。
  2. AIFInboundProcessingService -它处理AifGatewayQueue表数据并发送给AxDocument类
  3. AIFOutboundProcessingService --与#2相反。它使用相关元数据创建XML。
  4. AIFGatewaySendService --与#1相反,它使用适配器/通道将消息从发送到来自AifGatewayQueue的不同位置。

表示#1

所以#1基本上是填充了AifGatewayQueue,它只是一个工作队列。它遍历所有的通道,然后通过ClassId找到相关的适配器。适配器是实现AifIntegrationAdapterAifReceiveAdapter的类,如果您想自己定制适配器的话。当它在不同的通道上循环时,它会遍历每个“消息”并尝试将其接收到队列中。

如果由于某种原因无法处理该文件,则会捕获异常并将它们抛到SysExceptionTable Basic>Periodic>Application Integration Framework>Exceptions中。这些消息是从infolog中抓取的,这些消息主要是从接收适配器生成的,我的例子就是AifFileSystemReceiveAdapter

用于#2

因此,第二种方法是处理队列中的入站消息(就绪/进程内)。AifRequestProcessor\processServiceRequest负责这项工作。

通过此方法,它将调用:

  • Classes\AifMessageManager的各种调用,它将记录放在AifMessageLogAifDocumentLog中。
  • 这条行:responseMessage = AifRequestProcessor::executeServiceOperation(message, endpointActionPolicy);,它通过最终到达AifDispatcher::callServiceMethod(...)对AxDocument类进行实际操作
  • 它获取返回的XML和包,这些包被放入一个名为AifMessage的responseMessage中,并返回它可能被记录的位置。它还接受返回值,如果存在响应通道,则将其提交回AifGatewayQueue中。

实际上,AifQueueManager是通过调用AifQueueManager::createQueueManagerData();动态清除和填充的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19377142

复制
相关文章

相似问题

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