背景
我遇到的一个问题是,大约每月一次,AIFQueueManager表中填充大约150个记录,这些记录与6个多月前发送给AX的消息有关(其中它们“成功失败”;即由于违反业务规则而出错,但返回了一个异常)。
问题
AIF入站消息处理涉及哪些表/事件发生的顺序是什么?例如,XML文件被拾取并记录在AifDocumentLog中,数据被提取并添加到AifQueueManager和AifGatewayQueue表中,然后从这里的记录插入到AifMessageLog中,等等。
提前谢谢。
发布于 2013-10-15 22:45:28
这里有4个主要的AIF类,我将只讨论入站,重点讨论包含的文件系统适配器和平面文件。我希望这能让事情少一点模糊。
AIFGatewayReceiveService --使用适配器/通道从不同来源读取中的消息(),并将它们转储到AifGatewayQueue表中。AIFInboundProcessingService -它处理AifGatewayQueue表数据并发送给AxDocument类AIFOutboundProcessingService --与#2相反。它使用相关元数据创建XML。AIFGatewaySendService --与#1相反,它使用适配器/通道将消息从发送到来自AifGatewayQueue的不同位置。表示#1
所以#1基本上是填充了AifGatewayQueue,它只是一个工作队列。它遍历所有的通道,然后通过ClassId找到相关的适配器。适配器是实现AifIntegrationAdapter和AifReceiveAdapter的类,如果您想自己定制适配器的话。当它在不同的通道上循环时,它会遍历每个“消息”并尝试将其接收到队列中。
如果由于某种原因无法处理该文件,则会捕获异常并将它们抛到SysExceptionTable Basic>Periodic>Application Integration Framework>Exceptions中。这些消息是从infolog中抓取的,这些消息主要是从接收适配器生成的,我的例子就是AifFileSystemReceiveAdapter。
用于#2
因此,第二种方法是处理队列中的入站消息(就绪/进程内)。AifRequestProcessor\processServiceRequest负责这项工作。
通过此方法,它将调用:
Classes\AifMessageManager的各种调用,它将记录放在AifMessageLog和AifDocumentLog中。responseMessage = AifRequestProcessor::executeServiceOperation(message, endpointActionPolicy);,它通过最终到达AifDispatcher::callServiceMethod(...)对AxDocument类进行实际操作responseMessage中,并返回它可能被记录的位置。它还接受返回值,如果存在响应通道,则将其提交回AifGatewayQueue中。实际上,AifQueueManager是通过调用AifQueueManager::createQueueManagerData();动态清除和填充的。
https://stackoverflow.com/questions/19377142
复制相似问题