2013-10-15 5 views
1

ФоновыеDynamics AX 2009 AIF Таблицы

У меня есть вопрос, где примерно раз в месяц таблица AIFQueueManager заполняемый с ~ 150 записей, которые относятся к сообщениям, которые были отправлены в АХ (где они «успешно прошла» , т.е. ошибка из-за нарушения бизнес-правил, но вернула исключение, как ожидалось) более 6 месяцев назад.


Вопрос

Какие таблицы участвуют в процессе входящих сообщений AIF/что для того, чтобы события происходят в? например XML-файл подбирается и записывается в AifDocumentLog, данные извлекаются и добавляются в таблицы AifQueueManager и AifGatewayQueue, записи отсюда затем вставляются в AifMessageLog и т. Д.

Заранее спасибо.

ответ

4

Есть 4 основных класса AIF, я буду говорить только о входящем и сосредоточиться на прилагаемом файловом системном адаптере и плоских файлах XML. Надеюсь, это делает вещи немного менее туманными.

  1. AIFGatewayReceiveService - Использует адаптеры/каналы для чтения сообщений в из различных источников, и сбрасывает их в таблице AifGatewayQueue
  2. AIFInboundProcessingService - Это обрабатывает данные таблицы AifGatewayQueue и посылает к Ax [Документ] классов
  3. AIFOutboundProcessingService - Это инверсия №2. Он создает XMLs с метаданными уместном
  4. AIFGatewaySendService - это обратный # 1, где он использует адаптеры/каналы для отправки сообщений из в разных местах от AifGatewayQueue

Для # 1

Так что # 1 в основном заполняет AifGatewayQueue, что является просто очередью работы. Он перемещается по всем вашим каналам, а затем находит соответствующий адаптер ClassId. Адаптеры - это классы, которые реализуют AifIntegrationAdapter и AifReceiveAdapter, если вы хотите создать свой собственный. Когда он пересекает разные каналы, он затем перебирает каждое «сообщение» и пытается получить его в очередь.

Если по какой-либо причине он не может обработать файл, он ловит исключения и бросает их в SysExceptionTable [Basic> Periodic> Framework интеграции приложений> Исключения]. Эти сообщения очищаются от infolog, и сообщения генерируются главным образом из адаптера приема, который для моего примера будет AifFileSystemReceiveAdapter.


Для # 2

Так # 2 обрабатывает входящие сообщения, сидя в очереди (готов/InProcess). Работает AifRequestProcessor\processServiceRequest.

С помощью этого метода, он будет вызывать:

  • Различные вызовы к Classes\AifMessageManager, который помещает записи в AifMessageLog и AifDocumentLog.
  • Это ключ линия: responseMessage = AifRequestProcessor::executeServiceOperation(message, endpointActionPolicy);, который фактически делает операцию против Ax [документ] классов по в конце концов добраться до AifDispatcher::callServiceMethod(...)
  • Он получает возвратный XML и пакеты, которые в AifMessage называемые responseMessage и возвращает что там, где это может быть журнал. Он также принимает, что возвращаемое значение, и если есть канал ответа, он утверждает, что обратно в AifGatewayQueue

AifQueueManager фактически очищается и заполняется на лету по телефону AifQueueManager::createQueueManagerData();.