Axapta Dynamics AX 2009 AIF表格
背景 我有一个问题,大约每月一次,AIFQUEManager表中会填充约150条记录,这些记录与6个月前发送到AX的消息有关(这些消息“成功失败”;即,由于违反业务规则而出错,但按预期返回异常)Axapta Dynamics AX 2009 AIF表格,axapta,dynamics-ax-2009,microsoft-dynamics,aif,Axapta,Dynamics Ax 2009,Microsoft Dynamics,Aif,背景 我有一个问题,大约每月一次,AIFQUEManager表中会填充约150条记录,这些记录与6个月前发送到AX的消息有关(这些消息“成功失败”;即,由于违反业务规则而出错,但按预期返回异常) 问题 AIF入站消息流程中涉及哪些表/事件发生的顺序是什么?e、 g.XML文件被提取并记录在AifDocumentLog中,数据被提取并添加到aifquemanager和AifGatewayQueue表中,然后将此处的记录插入到AifMessageLog中,等等 提前感谢。共有4个主要的AIF类,我
问题 AIF入站消息流程中涉及哪些表/事件发生的顺序是什么?e、 g.XML文件被提取并记录在AifDocumentLog中,数据被提取并添加到aifquemanager和AifGatewayQueue表中,然后将此处的记录插入到AifMessageLog中,等等
提前感谢。共有4个主要的AIF类,我将只讨论入站类,重点介绍包含的文件系统适配器和平面XML文件。我希望这能让事情变得不那么模糊不清
AIFGatewayReceiveService
-使用适配器/通道从不同来源读取中的消息,并将其转储到AifGatewayQueue表中AIFInboundProcessingService
-这将处理AifGatewayQueue表数据并发送到Ax[Document]类AIFOutboundProcessingService
-这是#2的倒数。它使用相关元数据创建XMLAIFGatewaySendService
-这与#1相反,它使用适配器/通道将消息发送到aifGatewaySequeue的不同位置For#1 因此#1基本上填充了
AifGatewayQueue
,这只是一个工作队列。它在所有通道中循环,然后按ClassId查找相关适配器。这些适配器是实现aifintegorationadapter
和AifReceiveAdapter
的类,如果您想创建自己的自定义适配器。当它在不同的通道上循环时,它会在每个“消息”上循环,并尝试将其接收到队列中
如果由于某种原因无法处理该文件,它会捕获异常并将其抛出到SysExceptionTable
[Basic>Periodic>Application Integration Framework>exceptions]中。这些消息是从信息日志中刮取的,并且这些消息主要是从接收适配器生成的,例如,AifFileSystemReceiveAdapter
For#2 因此#2正在处理队列中的入站消息(ready/inprocess)。
AifRequestProcessor\processServiceRequest
完成这项工作
通过此方法,它将调用:
- 对
的各种调用,将记录放入Classes\AifMessageManager
和AifMessageLog
中AifDocumentLog
- 此键行:
通过最终访问responseMessage=AifRequestProcessor::executeServiceOperation(消息,endpointActionPolicy)
AifDispatcher::callServiceMethod(…)
- 它获取返回XML并将其打包到名为
的AifMessage中,然后返回可能记录它的位置。它还接受该返回值,如果存在响应通道,则将其提交回AifGatewayQueueresponseMessage
AifQueueManager
实际上是通过调用AifQueueManager::createQueueManagerData()动态清除和填充的代码>有4个主要的AIF类,我将只讨论入站类,并重点介绍包含的文件系统适配器和平面XML文件。我希望这能让事情变得不那么模糊不清
AIFGatewayReceiveService
-使用适配器/通道从不同来源读取中的消息,并将其转储到AifGatewayQueue表中
AIFInboundProcessingService
-这将处理AifGatewayQueue表数据并发送到Ax[Document]类
AIFOutboundProcessingService
-这是#2的倒数。它使用相关元数据创建XML
AIFGatewaySendService
-这与#1相反,它使用适配器/通道将消息发送到aifGatewaySequeue的不同位置
For#1
因此#1基本上填充了AifGatewayQueue
,这只是一个工作队列。它在所有通道中循环,然后按ClassId查找相关适配器。这些适配器是实现aifintegorationadapter
和AifReceiveAdapter
的类,如果您想创建自己的自定义适配器。当它在不同的通道上循环时,它会在每个“消息”上循环,并尝试将其接收到队列中
如果由于某种原因无法处理该文件,它会捕获异常并将其抛出到SysExceptionTable
[Basic>Periodic>Application Integration Framework>exceptions]中。这些消息是从信息日志中刮取的,并且这些消息主要是从接收适配器生成的,例如,AifFileSystemReceiveAdapter
For#2
因此#2正在处理队列中的入站消息(ready/inprocess)。AifRequestProcessor\processServiceRequest
完成这项工作
通过此方法,它将调用:
- 对
Classes\AifMessageManager
的各种调用,将记录放入AifMessageLog
和AifDocumentLog
中
- 此键行:
responseMessage=AifRequestProcessor::executeServiceOperation(消息,endpointActionPolicy)
通过最终访问AifDispatcher::callServiceMethod(…)
- 它获取返回的XML和包,并将其打包到名为