AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.08.2016, 10:36   #1  
MazZzDaI is offline
MazZzDaI
Участник
Аватар для MazZzDaI
 
44 / 35 (2) +++
Регистрация: 19.09.2013
Спасибо!

\Classes\AifRequestProcessor\handleProcessingException

X++:
static private AifXml handleProcessingException(AifMessage message, AifInfoLog aifInfoLog)
{
    SysExceptionLog         exceptionLog;
    AifXml                  faultXml;
    AifMessage              originalMessage;

    //<#AIF infolog fix>
    str infoLogStr(InfologData _infologData)
    {
        str                         ret;
        SysInfoLogEnumerator        infoLogEnum = SysInfoLogEnumerator::newData(_infologData);
        SysInfologMessageStruct     infoMessageStruct;
    ;
        while(infoLogEnum.moveNext())
        {
            infoMessageStruct = SysInfologMessageStruct::construct(infoLogEnum.currentMessage());

            if (ret)
            {
                ret += '\r\n';
            }

            ret += strFmt('%1: %2',
            infoMessageStruct.preFixTextElement(infoMessageStruct.prefixDepth()),
            infoMessageStruct.message());
        }

        return ret;
    }
    //</#AIF infolog fix>

    // We have to get the faultXml first, otherwise doing a infolog.cut() will clear
    // the fault object from infolog.

    //<#AIF infolog fix>
    //if( message && AifEndpoint::propagateErrors(message.sourceEndpointId()) )
    //{
    //    faultXml = AifFault::faultXml(aifInfoLog.getLastMessage());
    //}
    //else
    //{
    //    faultXml = AifFault::faultXml("@SYS94277");
    //}
    faultXml = AifFault::faultXml(infoLogStr(aifInfoLog.getInfoLogData()));
    //</#AIF infolog fix>

    //Write entries to the Exception Log
    exceptionLog = new SysExceptionLog();
    exceptionLog.writeInfoLogData(strfmt("@SYS95172"), aifInfoLog.getInfoLogData());
    aifInfoLog.clearLast();

    // Set message status to Error if not processed yet
    // The message will exist only if the message has been created, if
    // any exception was thrown from processInboundMessage() before the message was created,
    // the below call (AifMessageManager::update()) will fail, so we have additional check here.
    if(    message
        && message.messageId()
        && (!AifMessageManager::isNewMessage(message.messageId())))
    {
        originalMessage = AifMessageManager::read(message.messageId());
        // If message in already in processed or error state, then leave it as is.
        if ((originalMessage.status() != AifMessageStatus::Processed) && (originalMessage.status() != AifMessageStatus::Error))
        {
            originalMessage.status(AifMessageStatus::Error);
            AifMessageManager::update(originalMessage, classstr(AifRequestProcessor), true);
        }
    }

    return faultXml;
}
Теги
aif, infolog, сообщение

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dave: AIF Configuration and Additional Findings Blog bot DAX Blogs 1 04.11.2009 17:29
Channel9: Microsoft Dynamics AX 2009 AIF Web Services Screencast Blog bot DAX Blogs 0 17.06.2009 17:05
Dianne Siebold: AIF Top Ten Blog bot DAX Blogs 1 22.04.2008 11:19
Dave: Followup to AIF Configuration Entry Blog bot DAX Blogs 0 28.10.2006 19:01
Pokluda: Outbound web service (AIF) Blog bot DAX Blogs 0 28.10.2006 17:43

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:21.