Показать сообщение отдельно
Старый 22.04.2010, 11:53   #5  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от gr_nik@mail.ru Посмотреть сообщение
Я использую Navision 4.0 SP2. Проверку по времени я делаю, но... это не помогает(вернее помогает не всегда). Так как я могу знать только время отправки сообщения NAS серверу, если я считываю сообщение после этого, то оно может принадлежать другому потоку, который NAS сервер обрабатывал в момент отправки сообщения.
Каким образом сервер обрабатывает новое сообщение до отправки ответа по предыдущему?
У Вас пул из нескольких NAS или особый многопоточный NAS (мне до 2009 попадались только однопоточные)?
Алгоритм организации обработки запросов для корректного поиска ошибки:
1. При приеме XML первым делом ищем необработанные записи из лога Нава (нет метки что запрос завершился успешно, нет метки что ощибка обработана).
2. Если запись есть (согласно алгоритму всегда будет не более одной) - ищем последнюю ошибку в логе Винды. Сопоставляем ошибку (лог Винды) и пользователя (лог Навижна). В запись лога Нава дописываем текст ошибки и ставим метку что ошибку обработана.
3. Перед обработкой запроса пишем в лог Нава и коммитим. После обработки в лог Нава пишем что запрос завершился успешно.

Техническая реализация обработки на стороне клиентской части в данном случае не имеет значения - ошибку в XML можно выдать при любом следущем запросе от пользователя, либо диспетчер на стороне клиентской части может специальным запрос спросить текст последней ошибки при получении XML без метки "запрос обработан успешно".