Вставленная цепочка команд не выполняется в правильном порядке

Я вставляю пользовательскую команду в цепочку "BundleClose" перед командой "GetAttachedDataInformationUCS", но она выполняет команду после команды "Закрыть". Я пытался вставить его до, после и с командами, отличными от "GetAttachedDataInformationUCS", но он всегда выполняется после команды "Закрыть". Как я могу заставить его работать как задумано?

_commandManager.InsertCommandToChainOfCommandAfter("BundleClose", "GetAttachedDataInformationUCS",
    new List<CommandActivator>
    {
        new CommandActivator
        {
            CommandType = typeof(UpdateDispositionDateCommand),
            Name = "UpdateDispositionDateCommand"
        }
    });

Вот пользовательская команда:

public class UpdateDispositionDateCommand : IElementOfCommand
{
    public UpdateDispositionDateCommand()
    {
        Name = "UpdateDispositionDateCommand";
    }

    public bool Execute(IDictionary<string, object> parameters, IProgressUpdater progressUpdater)
    {
        return false;
    }

    public string Name { get; set; }
}

Вот сокращенная версия журнала, который показывает неправильное выполнение команды:

Exe CoC BundleClose -> Name:GetAttachedDataInformationUCS
Exe CoC BundleClose -> Name:UpdateNotePadForVoice 
Exe CoC BundleClose -> Name:ResetInteractionChatConsultation 
Exe CoC BundleClose -> Name:IsContactModified 
Exe CoC BundleClose -> Name:SipEndpointAskClearSEPCalls 
Exe CoC BundleClose -> Name:IsPossibleToClose 
Exe CoC BundleClose -> Name:CompleteDispositionCodeOnBundle 
Exe CoC BundleClose -> Name:ValidateEditableDataBundle 
Exe CoC BundleClose -> Name:Close 
Exe CoC InteractionVoiceBeforeClose -> Name:DoNotCallOutboundChain
Exe CoC InteractionVoiceBeforeClose -> Name:SetCallResultOutboundRecord
Exe CoC InteractionVoiceBeforeClose -> Name:RescheduleOutboundRecord
Exe CoC InteractionVoiceBeforeClose -> Name:UpdateRecordCommand
Exe CoC InteractionVoiceBeforeClose -> Name:MarkProcessedOutboundChainCommand
Exe CoC InteractionVoiceBeforeClose -> Name:RescheduleGMECallback
Exe CoC InteractionVoiceBeforeClose -> Name:SetGMECallbackDisposition
Exe CoC InteractionVoiceBeforeClose -> Name:ClearSessionCommand
Exe CoC InteractionVoiceBeforeClose -> Name:IsContactModified
Exe CoC InteractionVoiceBeforeClose -> Name:SipEndpointClearSEPCalls
Exe CoC InteractionVoiceBeforeClose -> Name:Close
Exe CoC BundleClose -> Name:UpdateDispositionDateCommand
Exe CoC BundleClose -> Name:StopInteractionVoiceUCS
Exe CoC BundleClose -> Name:GetOutboundPreviewRecord

2 ответа

Решение

В этом SDK есть ошибка. Я могу гарантировать это. Я отправляю много билетов о IWS/WDE SDK. Там ошибка использования команды из-за Unity Container. Лучший способ сделать это, используя это.

Как вы можете видеть в нижней части страницы есть команда GetAttachedDataInformationUCS "0" из цепочки. Если вы введете 0, ваша команда будет первой. Если вы вставите "1", будет; getattach. -> ваша команда -> обновить......

PS при выполнении метода вашей команды, false - это продолжение следующей команды, true - разрыв цепочки команд.

PS Это решение предоставлено Официальным Genesys.

this.commandManager.CommandsByName["BundleClose"].Insert(0,
                    new CommandActivator() { CommandType = typeof(InteractionChatDisconnectChatEx) });

ChainBundleClose 

0 GetAttachedDataInformationUCS
1 UpdateNotePadForVoice 
2 ResetInteractionChatConsultation 
3 IsContactModified 
4 IsPossibleToClose 
5 CompleteDispositionCodeOnBundle 
6 Close 
7 StopInteractionVoiceUCS 
8 GetOutboundPreviewRecord 

Не знаю почему, но добавление его до того, как сработала команда "Закрыть".

Другие вопросы по тегам