Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Добрый день, господа! Имеются ли в Sybase ASA 8.0.3 встроенные средства для оповещения других пользователей о произошедшем событии? Если нет, каким образом посоветуете реализовать нечто подобное? Т.е. мне нужен какой-то аналог DMBS_ALERT из Oracle. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2006, 17:48 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Ну, например MESSAGE Останется только реализовать "перехват" сообщений на клиенте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 08:59 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Не о том речь. Есть сессия (пользователь) 1. Он выполняет процесс 1. Есть сессия (пользователь) 2. Он выполняется процесс 2. Сессия 1 должна оповестить сессию 2 о том, что процесс 1 завершен (и соответственно, можно начать процесс 2). Причем, сессия 1 не знает, какую из других сессий нужно оповестить. Поэтому она (в идеале) оповещает все сессии в широковещательном режиме. Сессия 2 регистрируется (подписывается) на прием сообщений определенного типа. Поэтому, когда рассылается широковещательное оповещение этого типа, сессия 2 на него реагирует (потому что подписана на данный тип оповещения), а сессии 3, 4, ... - игнорируют. Затем наоборот, сессия 2 может послать для сессии 1 оповещение другого типа, на прием которых будет подписана именно сессия 1. Вопрос в том, как эту задачу реализовать через СУБД Sybase ASA 8.0.3. Пока не приходит в голову ничего, кроме организации специальной таблицы оповещений (отправитель, время, тип оповещения, доп. информация), которую сессии-получатели будут довольно часто проверять на наличие строк с интересующим их типом оповещений. А сессии-отправители будут в эту таблицу оповещения записывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 13:18 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
A.K. wrote: > Вопрос в том, как эту задачу реализовать через СУБД Sybase ASA 8.0.3. > Пока не приходит в голову ничего, кроме организации специальной таблицы > оповещений (отправитель, время, тип оповещения, доп. информация), > которую сессии-получатели будут довольно часто проверять на наличие > строк с интересующим их типом оповещений. А сессии-отправители будут в > эту таблицу оповещения записывать. Как вариант - швыряй с сервера UDP-пакеты, а клиенты пусть ловят. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 13:23 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, основная проблема - это уведомить клиента, что для него что-то (возможно) есть. И чем MESSAGE не устраивает? Тот же пинок, чтобы клиент просмотрел "почту". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 13:48 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Вопрос на самом деле: о чем оповещать и что с этим оповещением будет делать тот кто его получит? О чем оповещать? Если речь идет о оповещении о каких-то событиях в базе данных с точки зрения просто базы(ошибка при добавлении или ошибка целостности) то это одно. А речь идет, я понимаю, о событиях бизнес-логики и это намного интереснее. Можно реализовать специальную таблицу для хранения событий оповещений. В ней будут описываться случившиеся события с точки зрения бизнес логики(такой-то документ изменен или такой-то товар оприходован). Каждое событие может характеризоваться типом события(изменение документов, изменение товаров и т.д.) Далее создать таблицу для подписки пользователей на оповещения. Может не всем надо принимать оповещения о товарах, а только о документах. Изменяя информацию в этой таблице, мы управляем кого о чем оповещать. Далее пишем в эту таблицу события по факту. А пользователей можно извещать 2 способами 1) Клиентское приложение по таймеру опрашивает эту таблицу и если для текущего пользователя есть события, то выводит их на экран. 2) Посылать по факту события каждому подписанному пользователю сообщение или пакет с кодом, что есть оповещения для него и по этому "пакету" считывать события. Преимущество такого подхода в том, что когда мы считаем событие мы имеем не просто факт(текст) события, а и полную информацию о нем. Например, пользователь получит событие, "документ изменен"+получит код документа и т.д. и по этому коду может сразу в просмотре оповещения открыть документ, а не просто прочитать текст, что событие произошло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 13:59 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
antand.... Можно реализовать специальную таблицу для хранения событий оповещений. В ней будут описываться случившиеся события с точки зрения бизнес логики(такой-то документ изменен или такой-то товар оприходован). Каждое событие может характеризоваться типом события(изменение документов, изменение товаров и т.д.) Далее создать таблицу для подписки пользователей на оповещения. Может не всем надо принимать оповещения о товарах, а только о документах. Изменяя информацию в этой таблице, мы управляем кого о чем оповещать. Далее пишем в эту таблицу события по факту. А пользователей можно извещать 2 способами 1) Клиентское приложение по таймеру опрашивает эту таблицу и если для текущего пользователя есть события, то выводит их на экран. 2) Посылать по факту события каждому подписанному пользователю сообщение или пакет с кодом, что есть оповещения для него и по этому "пакету" считывать события..... Вот, вы мою мысль верно поняли. Речь именно о событиях бизнес-логики. Собственно, я такой вариант как у вас выше сам себе уже и предложил - через таблицу оповещений. Просто была слабая надежда, что не придется изобретать велосипед, а удастся заюзать уже реализованные в СУБД специализированные средства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 14:23 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
A.K. Вот, вы мою мысль верно поняли. Речь именно о событиях бизнес-логики. Собственно, я такой вариант как у вас выше сам себе уже и предложил - через таблицу оповещений. Просто была слабая надежда, что не придется изобретать велосипед, а удастся заюзать уже реализованные в СУБД специализированные средства. Я думаю, что не ошибусь, если скажу, что таких специализированных средств нет ни в одной СУБД, т.к. СУБД не оперирует оповещениями на уровне бизнес-логики ибо ничего о ней не знает. Да это и не ее дело. Средства оповещения конечно есть, но на уровне базы, соединений и т.д. Поэтому везде пишут надстройки именно под бизнес-логику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 14:35 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Да я в принципе то же самое имел ввиду, просто под клиентом я подразумеваю "программу" а не человека ;-), которая получает сообщение от сервера (инициированное другим "процессом"), и считав нужную инфу из таблицы сообщений - выдать конечному пользователю приемлемый результат. Придется "изобретать велосипед". А использование MESSAGE это один из вариантов заставить программу-клиент отреагировать на изменение состояния данных на сервере. И ничего более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 16:23 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
V.V.L.... А использование MESSAGE это один из вариантов заставить программу-клиент отреагировать на изменение состояния данных на сервере. И ничего более. Заходим в BOL, читаем: Код: plaintext Syntax Код: plaintext 1. 2. 3. Я под "клиентом" тоже понимаю программу, а не человека - мне кажется, из моего вопроса это очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 17:01 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
2 A.K. я так понимаю СПРАШИВАЮТ про оповещение не клиентского приложения а серверного процесса. а что делает процесс #2 если не пришел сигнал от процесса #1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 17:03 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
http://www.sybase.com/products/allproductsa-z/realtimedataservices ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 17:20 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
mont2 A.K. я так понимаю СПРАШИВАЮТ про оповещение не клиентского приложения а серверного процесса. Нет, под "процессом" в конктексте моего вопроса подразумевалась "задача". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 17:49 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
A.K.Заходим в BOL, читаем: Код: plaintext Скорее всего никак. В восьмерке - никак. В девятке у message есть возможность посылать сообщения в конкретный коннект или всем активным коннектам разом. Я тоже склоняюсь к ведению "таблицы событий". Такая таблица, кстати, решит еще одну проблему - если некоторое событие требует внимание вполне определенного пользователя (например события для кладовщика или события для главбуха) То эти события смогут висеть до тех пор пока работающий с ними кладовщик или главбух не вернется из отпуска :) А вот как проверять появилось ли событие из уже работающего приложения? Ну в ASA9 я бы действительно использовал message 'check events!' to client for all Но так как в восьмерке for all еще не существует - прийдется пожалуй по таймеру проверять таблицу событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 18:41 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
White OwlА вот как проверять появилось ли событие из уже работающего приложения? Ну в ASA9 я бы действительно использовал message 'check events!' to client for all Но так как в восьмерке for all еще не существует - прийдется пожалуй по таймеру проверять таблицу событий. Да, в восьмерке много чего не существует... Клиент будет проверять по таймеру, конечно, - других вариантов не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 19:05 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
A.K. wrote: > Клиент будет проверять по таймеру, конечно, - других вариантов не видно. Я же написал - UDP. Дёшево и сердито. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 19:32 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Dim2000> Клиент будет проверять по таймеру, конечно, - других вариантов не видно. Я же написал - UDP. Дёшево и сердито.Ага, вот только встроенных средств работы с UDP в БД нету :) Прийдется писать свою собственную dll, а потом вызывать ее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 19:40 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > Ага, вот только встроенных средств работы с UDP в БД нету :) Прийдется > писать свою собственную dll, а потом вызывать ее. На это хватило даже моих знаний С, которые находятся в противозайчаточном состоянии . Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 19:50 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
В 9 вроде есть процедура sa_send_udp А так свою Dll написать не проблема и подключить ее к ASA8 в качестве новой функции или процедуры. Даже красивее механизм получится, чем в цикле опрашивать. Но тут конечно пробовать надо и все продумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2006, 20:04 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо за дискуссию. Буду выбирать между таблицей оповещений + проверка по таймеру и UDP-пакетами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 00:24 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что путь с таблицами гораздо логичнее. UDP тоже имеет право на жизнь, но следует не забывать, что пакеты могут безнаказанно пропадать, обгонять, дублироваться и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 13:34 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Это как сказать, про путь решения с таблицами. Как частный случай решения в конкретном случае может он и проще. Вообще, вопрос, который мы здесь обсуждаем очень интересный, если посмотреть шире. Тут я бы сказал всплывают некоторые "недостаточки" двухзвеной архитектуры. А ведь может такое случиться, что у клиента вообще не будет доступа к базе(он ему и не нужен!), а оповещения надо получать гарантировано! И он может, как тут говорили выше, в момент события не подключен к системе оповещений. А подключится потом и должен все получить. В трехзвенке такие вопросы можно конечно решать более красиво. Я сколько видел реализаций оповещений в трехзвенке, везде примерно одинаково. Есть сервис оповещений (примерно как ICQ), он работает с клиентами независимо от клиента работы базой через сервер приложений. Т.к. все операции с базой идут через сервис приложений, то он и взаимодействует с этим сервисом. А сервис оповещений отслеживает своих клиентов, рассылает им и т.д. База используется им только как хранилище сообщений. Не стоит забывать, что оповещения(сообщения) в такой системе могут быть и не только по событиям в базе. Например, один пользователь другому сообщение короткое переслал. Еще хороший вопрос: в каком виде эти оповещения? Можно оповещать по ICQ, по почте и т.д. Реализовать подобное в сервисе оповещений не проблема, а вот в процедурах базы это весьма неудобно. С ASA наверно такое можно тоже реализовать и без сервера приложений. Только и тут без некого сервиса оповещений не обойтись наверно. Но в каждом конкретном случае нужно конечно смотреть на задачу, может это все лишнее будет. Все это я тут высказал конечно в порядке рассуждений на "тему". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 17:02 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Желание автора темы похоже воплощено например в NativeDB Alerts ( сайт ). Но насколько я знаю там надо взаимодействовать с базой через саму NativeDB и устанавливать специальные хранимые процедуры в базу. Анатолий Анатольевич Иванов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 20:34 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
Анатолий ИвановЖелание автора темы похоже воплощено... Желание автора темы давно воплощено в пакетах DBMS_ALERT и DBMS_PIPE.... но в СУБД Oracle. Исходя из этого я не стал бы категорично утверждать, что таких средств нет ни в одной СУБД. По поводу многозвенок сразу скажу - в данном случае речь идет о реализации задачи на классической двузвенке. Которая имеет не только "недостаточки", но и большие преимущества. Впрочем, надеюсь что углубляться в дискуссии 2-tier vs N-tier мы не будем, - в моей любимой делфийской ветке уже 31 страницу накатали по этой теме :-) Задачи написать "корпоративную ICQ" не ставится (тем более что она уже написана 10 лет назад :-)). Оповещения будут перехватываться клиентскими приложениями, которые, в свою очередь, будут уже необходимым образом на это реагировать (в том числе предлагая пользователю выполнить те или иные задачи, но не только). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2006, 23:02 |
|
||
|
Оповещения в ASA
|
|||
|---|---|---|---|
|
#18+
to A.K. Про средства в Oracle не знал. Cейчас конечно в разных СУБД много чего сделали. Про написание корпоративной ICQ речь не шла абсолютно. В том-то и дело, она написана, только пользуйся. Я имел ввиду, что ICQ может выступать только как одно из средств оповещения наравне с почтой и другими. И согласитесь было бы глупо ими не пользоваться. Но вот напрямую из ASA со всеми этими средствами разом работать не очень будет удобно, да и не его это дело. Гораздо проще в этом случае как раз иметь некий сервис оповещений, с которым будет взаимодействовать ASA (с этим сервисом кстати может взаимодействовать кто и что угодно для посылки оповещений) и который уже далее будет работать с клиентами системы оповещения по ICQ, Почте и т.д. Я конечно говорю про сложный пример системы, с разными средствами оповещений пользователей, с кучей событий бизнес-логики(не только в базе) и т.д. Я конечно зря упомянул выше про "трехзвенку", здесь несколько иное - сервисы. Есть сервис базы, есть сервис оповещений и каждый должен заниматься своим делом. В вашем случае наверно все проще, поэтому и такой сложный подход не требуется. Ну ладно, увлекся немного. Тема уже другим форумом попахивает. Удачно Вам всех оповестить! P.S. А ветку из другого форума даже перечитал, спасибо. Споры действительно жаркие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 02:36 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34177405&tid=2012374]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 398ms |

| 0 / 0 |
