Зміни до роботи imapClient.SyncImapFolder(UserConnection);

При завантаженні листів якимось чином завантажуються і вкладені файли.
Але типи цих файлів не визначаються, в результаті не спрацьовує плашка "Просмотр".

Спробував розібратися.

На BPMonline 5.4 є процес [LoadImapEmailsProcess].
В ньому у скрипті [ScriptTask2] (Загрузить Email Сообщения) виконується наступний код:

var serverCredentials = GetMailServerUserCredentials(CurrentUserMailboxSynchronizationSettingsUId).Value;
try {
        using (var imapClient = new ImapClient(UserConnection, serverCredentials, true)) {
                imapClient.SyncImapFolder(UserConnection);
        }
} catch (ImapException e) {    
        var messagePanel = GetMainPageMessagePanel();
        var warningCaption = new QuestionUserTask(UserConnection).WarningCaption;
        messagePanel.AddMessage(warningCaption, e.Message, MessageType.Warning);
}

Це максимум з деталізації процесу завантаження активностей типу Email, що я знайшов.

Запитання: чи можна внести зміни в роботу процесу синхронізації і як це зробити ?

Нравится

13 комментариев

Конечно. Если я не ошибаюсь, то ImapClient - это конфигурационный класс. Вы можете найти его исходники в конфигурации и модифицировать метод SyncImapFolder на свое усмотрение.

В описанні класу є такий рядок:

private static readonly ILog _log = LogManager.GetLogger(typeof(ImapClient)); 

Що це за [ILog] такий, куди він пише записи, що на нього відправляють ?

Игорь, это сторонняя утилита логирования - log4net. Подробное руководство есть тут:
http://logging.apache.org/log4net/
или тут:
http://www.codeproject.com/Articles/140911/log-net-Tutorial
или тут:
http://megadarja.blogspot.com/2008/04/log4net.html

Конфиг файл (log4net.config) лежит в каталоге ..\Terrasoft.WebApp

Є такий собі процес: LoadImapEmailsProcess (Загрузить e-mail сообщения из почтового ящика)

В ньому три скрипта:
ScriptTask1
ScriptTask2
ScriptTask3

В кожному з них я проставив по коду для тестування:
string logString = @"
[" + System.DateTime.Now.ToString() + @"]: LoadImapEmailsProcess.ScriptTask1Execute [0]
" + (char)13 + (char)10;
System.IO.File.AppendAllText("C:\\inetpub\\wwwroot\\BPMOnline\\ServiceRequestCardOpenLog\\Log.txt", logString);

(З циферками відповідними)

Даний процес використовується двома способами:
1) через інтерфейс BPMonline
2) через зовнішній запуск за допомогою
C:\inetpub\wwwroot\BPMOnline\ProcessExecutor54.exe http://bpmonline.local Login Password LoadImapEmailsProcess

Так от у випадку
1) у вказаний файл Log.txt інформація пишеться,
а при
2) не пишеться.

Хоча email-и завантажуються в обох випадках, але є і відмінності:
1) після завантаження email-повідомлень йде їх обробка і відповідні звернення відображаються в нових зверненнях і типи файлів успішно зафіксовані;
2) //--//--//-- звернення не відображаються в нових, хоча відображаються в усіх. Типи файлів не зафіксовані.

Треба забезпечити фіксацію типів файлів для всіх випадків використання, але ніяк не можу розібратися з зовнішнім запуском.

Добрый день!
Что просиходит в утилите ProcessExecutor54 я могу только догадаться, потому что у меня исходников нет. Возможно, есть проблема там. Например, авторизация происходит под каким-либо пользователем, "зашитым" в коде.
Попробуйте прямо в браузере выполнить GET-запрос к ProcessEngineService, например:

http://localhost:7508/0/ServiceModel/ProcessEngineService.svc/{PROCESSSCHEMANAME}/Execute

Элемент {LoadImapEmailsProcess} не найден

Вы его в фигурные скобки взяли? Нужно без них.

О, те, що треба :)
Дякую

Тепер треба із стартом процесу через шедулер розібратися - стартує і не зупиняється (цикл 3 хв.)

Як правильно налаштувати шедулер для запуску процесу раз на 3 хвилини ?

Если речь о планировщике Windows, то Вам сюда:
https://technet.microsoft.com/ru-ru/library/cc721931.aspx

Если Вы про Quartz, то сюда:
http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/cron…

Як взагалі користуватися планувальником я в курсі. Незрозуміло, як забезпечити циклічний запуск веб-сервісу. Раніше використовувалась утилітка ProcessExecutor54 для запуску бпм-сервісу, але ця утилітка некоректно відпрацьовує

Игорь, напишите свою утилитку, которая будет отправлять запрос.
Пример есть на SDK.

Показать все комментарии