有 4 个主要的AIF类,我将只讨论入站,重点关注包含的文件系统适配器和平面 XML 文件。我希望这能让事情变得不那么模糊。
AIFGatewayReceiveService
- 使用适配器/通道从不同来源读取消息,并将它们转储到 AifGatewayQueue 表中
AIFInboundProcessingService
- 这会处理 AifGatewayQueue 表数据并发送到 Ax[Document] 类
AIFOutboundProcessingService
- 这是#2的倒数。它使用相关元数据创建 XML
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 并将其打包到调用的 AifMessage
responseMessage
中,并返回可能记录的位置。它还接受该返回值,如果有响应通道,它会将其提交回 AifGatewayQueue
AifQueueManager
实际上是通过调用AifQueueManager::createQueueManagerData();
.