1

背景

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


问题

AIF 入站消息流程涉及哪些表/事件发生的顺序是什么?例如,提取 XML 文件并记录在 AifDocumentLog 中,提取数据并将其添加到 AifQueueManager 和 AifGatewayQueue 表中,然后将来自此处的记录插入到 AifMessageLog 中,等等。

提前致谢。

4

1 回答 1

4

有 4 个主要的AIF类,我将只讨论入站,重点关注包含的文件系统适配器和平面 XML 文件。我希望这能让事情变得不那么模糊。

  1. AIFGatewayReceiveService- 使用适配器/通道从不同来源读取消息并将它们转储到 AifGatewayQueue 表中
  2. AIFInboundProcessingService- 这会处理 AifGatewayQueue 表数据并发送到 Ax[Document] 类
  3. AIFOutboundProcessingService- 这是#2的倒数。它使用相关元数据创建 XML
  4. AIFGatewaySendService- 这是 #1 的逆过程,它使用适配器/通道将消息AifGatewayQueue 发送到不同的位置

对于 #1

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

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


对于 #2

所以#2 正在处理队列中的入站消息(就绪/正在处理)。做这项AifRequestProcessor\processServiceRequest工作。

从这个方法中,它将调用:

  • 对 的各种调用Classes\AifMessageManager,将记录放入AifMessageLog和 中AifDocumentLog
  • 这条关键线:responseMessage = AifRequestProcessor::executeServiceOperation(message, endpointActionPolicy);它实际上对 Ax[Document] 类进行操作,最终到达AifDispatcher::callServiceMethod(...)
  • 它获取返回的 XML 并将其打包到调用的 AifMessageresponseMessage中,并返回可能记录的位置。它还接受该返回值,如果有响应通道,它会将其提交回 AifGatewayQueue

AifQueueManager实际上是通过调用AifQueueManager::createQueueManagerData();.

于 2013-10-15T22:45:28.523 回答