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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.08.2010, 17:00   #1  
titov is offline
titov
Участник
 
73 / 87 (3) ++++
Регистрация: 23.12.2005
Адрес: Казань
насколько я понял нужна целостность уникального по ключу процесса, который может быть запущен на нескольких клиентах, при этом если по ключу процесс выполнен, то не запускать процесс на другом клиенте. Тогда:
1. проверять дубликат до запуска процесса - а где-же еще
2. первый клиент может не завершить транзакцию, тогда отказ второго клиента от процесса - ошибка - то есть надо подождать разрешения ситуации
3. нужен некий семафор реальный или виртуальный - имеет статусы - выполняется, завершен - это и есть информация о том, что происходит

алгоритм вырисовывается такой - ключ - уникальный индекс
1. пока чужой семафор есть и статус = выполняется и время < тайм аута - ждем чем все кончится
2 если чужой семафор - завершено - выход
3. если нет чужого семафора - создать свой = выполняется
4. процесс до
5. лог
6. процесс после
7. семафор = завершено

технически наиболее близкое решение - это код выделения номеров по номерным сериям - 3 пункт это и есть выделить номер (ключ), только я имею ввиду не создавать номерную серию, а взять блоки кода по транзакциям - при разноске, например, документов сам процесс разноски еще не закоммичен, а вот номер уже использован и закоммичен!!! и другие клиенты об этом знают, там же есть моменты на предмет разрулить ситуацию, когда два клиента почти одновременно выполнят 3 пункт. Если 6 пункт не достигнут - надо в catch сбросить свой семафор.

семафором можно сделать саму таблицу логов - добавить статус

или - ADOConnection - читать незакомиченные (установить в команде уровень изоляции) записи лога (семафоры) другого клиента - а что?! здесь нет минуса первого варианта, а именно - если выключить комп на пункте 4, то .... семафор придеться чистить ручками или ваять нечто.

по любому главное - проверять процесс на запуск другим клиентом и ждать чем все там завершиться - придеться!

Последний раз редактировалось titov; 25.08.2010 в 17:06.
Теги
try/catch, исключения, как правильно, транзакции

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Множественная вставка записей Белов Владимир DAX: Программирование 9 16.10.2008 14:22
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27
Хранение отмеченных записей Pavel Pustovalov DAX: Программирование 9 17.05.2005 21:56
Вставка записей в аксапту из внешней БД Smith DAX: Программирование 2 20.09.2004 18:30
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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