19.12.2002, 11:53 | #1 |
Участник
|
Автоматическое отображение изменений данных
Автоматическое отображение изменений данных, сделанных одним пользователем, в гриде другого, который просматривает или работает с этим же набором данных.
Используется трехзвенная архитектура с тонким клиентом. Кто-нибудь решал подобную задачу? |
|
19.12.2002, 12:44 | #2 |
Moderator
|
Даже не применительно к Аксапте этот вопрос задается регулярно на всех форумах, касающихся работы с базой данных.
Как правило все варианты ответов сводятся к следующему: 1. Переодическому обновлению набора данных. Период времени обновления надо выбирать как можно больше, дабы не нагружать понапрасно сервер. На самом деле, по моему дурацкое решение - наоткрывает пользователь формочек с таблицами и уйдет обедать, а остальные мучаются. 1а. Сделать это обновление в тот момент, когда этого захочет пользователь. То есть добавляем на формочку кнопку, при нажатию на которую происходит обновление набора данных. Плюс - небольшая нагрузка на сервер, минус - пользователь не всегда знает, когда лучше жать эту кнопочку. Кроме того это уже не RunTime. 1б. Перечитывать не весь набор данных, а только те строки, которые сейчас отображаются на визуальных контролах. Сложное в реализации решение - надо определить, какие данные сейчас отображаются(что уже само по себе не тривиально). Плюс к этому обновление не всего набора данных, а только выбранного диапазона как правило вызывает трудности. 1в. Особо талантливые пробуют/предлагают попробовать сочетание двух предыдущих подходов. 2. Некоторые быза данных (например Interbase) поддерживают рассылку событий клиентам. Не знаю как в Oracle, но для MS SQL это не актуально так что пропустим этот вариант. 3. С помощью триггеров(или метода update для Аксапты). Заподим вспомогательную табличку (назовем ее monitoring) например следующей структуры: table_id modufyTime Суть в том, что при изменении какой либо изменяемой таблицы в monitoring заностится информация о том, что такая-то таблица (table_id) изменилась в такой-то момент времени (modifyTime). Этого можно достичь перекрыв один из методов Аксапты. Все остальные формы и клиенты работающие с этой таблице регулярно(опять же проблема выбора интервала времени) смотрят таблицу monitoring и если с момента их последнего обновления значение modifyTime изменилось для данной таблице, то они запрашивают данные из основной таблицы. Плюс - вместо регулярного обращения к большой таблице, мы регулярно обращаемся к небольшой таблице. P.S. Не смотря на предложенное многообразие подходов, не разу не видел удачной реализации этой идеи. Поэтому 10 раз подумай - а нужно ли оно. Не проще открыть и закрыть форму. |
|
19.12.2002, 13:11 | #3 |
Участник
|
Цитата:
3. С помощью триггеров(или метода update для Аксапты). Заподим вспомогательную табличку (назовем ее monitoring) например следующей структуры:
***************** далее поскипано *************** И эта табличка резко становится bottleneck -ом... |
|
19.12.2002, 13:18 | #4 |
Moderator
|
Цитата:
И эта табличка резко становится bottleneck -ом...
Хотя с учетом: Цитата:
Используется трехзвенная архитектура с тонким клиентом.
|
|
19.12.2002, 13:30 | #5 |
Участник
|
Можно при обновлении грида использовать 1)расписание +2)отслеживание активности на форме, чтобы не делать лишних запросов.
|
|
19.12.2002, 13:34 | #6 |
сибиряк
|
Прежде всего: Согласен, что удачные решения здесь трудно придумать.
Но, если уж сильно хочется, то можно делать обновления по timeOut. Посмотреть можно в форме sysUserOnline.
__________________
С уважением, Вячеслав. |
|
19.12.2002, 18:10 | #7 |
Участник
|
Цитата:
Изначально опубликовано Андре
Суть в том, что при изменении какой либо изменяемой таблицы в monitoring заностится информация о том, что такая-то таблица (table_id) изменилась в такой-то момент времени (modifyTime). Также согласен, что это гарантированный гемор для разработчика и потенциально узкое место. А может кто знает для чего еще можно использовать modifyTransactionID? |
|
20.12.2002, 10:52 | #8 |
Участник
|
Кто нибудь знает как автоматическое отображение изменений данных реализованно в 1С?
|
|
20.12.2002, 12:08 | #9 |
Участник
|
Цитата:
Кто нибудь знает как автоматическое отображение изменений данных реализованно в 1С?
|
|