powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Оповещения в ASA
25 сообщений из 25, страница 1 из 1
Оповещения в ASA
    #34173097
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, господа!
Имеются ли в Sybase ASA 8.0.3 встроенные средства для оповещения других пользователей о произошедшем событии?
Если нет, каким образом посоветуете реализовать нечто подобное?
Т.е. мне нужен какой-то аналог DMBS_ALERT из Oracle.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34173645
V.V.L.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, например MESSAGE
Останется только реализовать "перехват" сообщений на клиенте
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34174544
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не о том речь.
Есть сессия (пользователь) 1. Он выполняет процесс 1.
Есть сессия (пользователь) 2. Он выполняется процесс 2.

Сессия 1 должна оповестить сессию 2 о том, что процесс 1 завершен (и соответственно, можно начать процесс 2).

Причем, сессия 1 не знает, какую из других сессий нужно оповестить. Поэтому она (в идеале) оповещает все сессии в широковещательном режиме.
Сессия 2 регистрируется (подписывается) на прием сообщений определенного типа. Поэтому, когда рассылается широковещательное оповещение этого типа, сессия 2 на него реагирует (потому что подписана на данный тип оповещения), а сессии 3, 4, ... - игнорируют.

Затем наоборот, сессия 2 может послать для сессии 1 оповещение другого типа, на прием которых будет подписана именно сессия 1.

Вопрос в том, как эту задачу реализовать через СУБД Sybase ASA 8.0.3.
Пока не приходит в голову ничего, кроме организации специальной таблицы оповещений (отправитель, время, тип оповещения, доп. информация), которую сессии-получатели будут довольно часто проверять на наличие строк с интересующим их типом оповещений. А сессии-отправители будут в эту таблицу оповещения записывать.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34174562
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A.K. wrote:

> Вопрос в том, как эту задачу реализовать через СУБД Sybase ASA 8.0.3.
> Пока не приходит в голову ничего, кроме организации специальной таблицы
> оповещений (отправитель, время, тип оповещения, доп. информация),
> которую сессии-получатели будут довольно часто проверять на наличие
> строк с интересующим их типом оповещений. А сессии-отправители будут в
> эту таблицу оповещения записывать.

Как вариант - швыряй с сервера UDP-пакеты, а клиенты пусть ловят.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34174683
V.V.L.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понял, основная проблема - это уведомить клиента, что для него что-то (возможно) есть. И чем MESSAGE не устраивает? Тот же пинок, чтобы клиент просмотрел "почту".
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34174737
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос на самом деле: о чем оповещать и что с этим оповещением будет делать тот кто его получит?
О чем оповещать?
Если речь идет о оповещении о каких-то событиях в базе данных с точки зрения просто базы(ошибка при добавлении или ошибка целостности) то это одно.
А речь идет, я понимаю, о событиях бизнес-логики и это намного интереснее.
Можно реализовать специальную таблицу для хранения событий оповещений. В ней будут описываться случившиеся события с точки зрения бизнес логики(такой-то документ изменен или такой-то товар оприходован). Каждое событие может характеризоваться типом события(изменение документов, изменение товаров и т.д.) Далее создать таблицу для подписки пользователей на оповещения. Может не всем надо принимать оповещения о товарах, а только о документах. Изменяя информацию в этой таблице, мы управляем кого о чем оповещать.
Далее пишем в эту таблицу события по факту.
А пользователей можно извещать 2 способами
1) Клиентское приложение по таймеру опрашивает эту таблицу и если для текущего пользователя есть события, то выводит их на экран.
2) Посылать по факту события каждому подписанному пользователю сообщение или пакет с кодом, что есть оповещения для него и по этому "пакету" считывать события.

Преимущество такого подхода в том, что когда мы считаем событие мы имеем не просто факт(текст) события, а и полную информацию о нем. Например, пользователь получит событие, "документ изменен"+получит код документа и т.д. и по этому коду может сразу в просмотре оповещения открыть документ, а не просто прочитать текст, что событие произошло.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34174846
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antand....
Можно реализовать специальную таблицу для хранения событий оповещений. В ней будут описываться случившиеся события с точки зрения бизнес логики(такой-то документ изменен или такой-то товар оприходован). Каждое событие может характеризоваться типом события(изменение документов, изменение товаров и т.д.) Далее создать таблицу для подписки пользователей на оповещения. Может не всем надо принимать оповещения о товарах, а только о документах. Изменяя информацию в этой таблице, мы управляем кого о чем оповещать.
Далее пишем в эту таблицу события по факту.
А пользователей можно извещать 2 способами
1) Клиентское приложение по таймеру опрашивает эту таблицу и если для текущего пользователя есть события, то выводит их на экран.
2) Посылать по факту события каждому подписанному пользователю сообщение или пакет с кодом, что есть оповещения для него и по этому "пакету" считывать события.....
Вот, вы мою мысль верно поняли. Речь именно о событиях бизнес-логики.
Собственно, я такой вариант как у вас выше сам себе уже и предложил - через таблицу оповещений. Просто была слабая надежда, что не придется изобретать велосипед, а удастся заюзать уже реализованные в СУБД специализированные средства.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34174898
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A.K.
Вот, вы мою мысль верно поняли. Речь именно о событиях бизнес-логики.
Собственно, я такой вариант как у вас выше сам себе уже и предложил - через таблицу оповещений. Просто была слабая надежда, что не придется изобретать велосипед, а удастся заюзать уже реализованные в СУБД специализированные средства.

Я думаю, что не ошибусь, если скажу, что таких специализированных средств нет ни в одной СУБД, т.к. СУБД не оперирует оповещениями на уровне бизнес-логики ибо ничего о ней не знает. Да это и не ее дело.
Средства оповещения конечно есть, но на уровне базы, соединений и т.д. Поэтому везде пишут надстройки именно под бизнес-логику.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175364
V.V.L.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я в принципе то же самое имел ввиду, просто под клиентом я подразумеваю "программу" а не человека ;-), которая получает сообщение от сервера (инициированное другим "процессом"), и считав нужную инфу из таблицы сообщений - выдать конечному пользователю приемлемый результат.
Придется "изобретать велосипед". А использование MESSAGE это один из вариантов заставить программу-клиент отреагировать на изменение состояния данных на сервере. И ничего более.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175503
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V.V.L.... А использование MESSAGE это один из вариантов заставить программу-клиент отреагировать на изменение состояния данных на сервере. И ничего более.
Заходим в BOL, читаем:
Код: plaintext
MESSAGE
Use this statement to display a message.
Syntax
Код: plaintext
1.
2.
3.
MESSAGE expression, ...
[ TYPE { INFO | ACTION | WARNING | STATUS } ]
[ TO { CONSOLE | CLIENT | LOG }]
И как мне передать оповещение от одного клиента другому клиенту с его помощью?
Я под "клиентом" тоже понимаю программу, а не человека - мне кажется, из моего вопроса это очевидно.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175511
mont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 A.K. я так понимаю СПРАШИВАЮТ про оповещение не клиентского приложения а серверного процесса.

а что делает процесс #2 если не пришел сигнал от процесса #1?
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175578
just me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.sybase.com/products/allproductsa-z/realtimedataservices
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175679
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mont2 A.K. я так понимаю СПРАШИВАЮТ про оповещение не клиентского приложения а серверного процесса.
Нет, под "процессом" в конктексте моего вопроса подразумевалась "задача".
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175811
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A.K.Заходим в BOL, читаем:
Код: plaintext
MESSAGE
И как мне передать оповещение от одного клиента другому клиенту с его помощью?
Скорее всего никак. В восьмерке - никак. В девятке у message есть возможность посылать сообщения в конкретный коннект или всем активным коннектам разом.

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

А вот как проверять появилось ли событие из уже работающего приложения? Ну в ASA9 я бы действительно использовал message 'check events!' to client for all Но так как в восьмерке for all еще не существует - прийдется пожалуй по таймеру проверять таблицу событий.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175852
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА вот как проверять появилось ли событие из уже работающего приложения? Ну в ASA9 я бы действительно использовал message 'check events!' to client for all Но так как в восьмерке for all еще не существует - прийдется пожалуй по таймеру проверять таблицу событий.
Да, в восьмерке много чего не существует...
Клиент будет проверять по таймеру, конечно, - других вариантов не видно.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175900
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A.K. wrote:

> Клиент будет проверять по таймеру, конечно, - других вариантов не видно.

Я же написал - UDP. Дёшево и сердито.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175920
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000> Клиент будет проверять по таймеру, конечно, - других вариантов не видно.
Я же написал - UDP. Дёшево и сердито.Ага, вот только встроенных средств работы с UDP в БД нету :) Прийдется писать свою собственную dll, а потом вызывать ее.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175936
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl wrote:

> Ага, вот только встроенных средств работы с UDP в БД нету :) Прийдется
> писать свою собственную dll, а потом вызывать ее.

На это хватило даже моих знаний С, которые находятся в
противозайчаточном состоянии .
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34175967
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В 9 вроде есть процедура sa_send_udp
А так свою Dll написать не проблема и подключить ее к ASA8 в качестве новой функции или процедуры.
Даже красивее механизм получится, чем в цикле опрашивать. Но тут конечно пробовать надо и все продумать.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34176234
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем большое спасибо за дискуссию.
Буду выбирать между таблицей оповещений + проверка по таймеру и UDP-пакетами.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34177405
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что путь с таблицами гораздо логичнее. UDP тоже имеет право на жизнь, но следует не забывать, что пакеты могут безнаказанно пропадать, обгонять, дублироваться и т.п.
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34178331
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это как сказать, про путь решения с таблицами. Как частный случай решения в конкретном случае может он и проще.
Вообще, вопрос, который мы здесь обсуждаем очень интересный, если посмотреть шире.
Тут я бы сказал всплывают некоторые "недостаточки" двухзвеной архитектуры.
А ведь может такое случиться, что у клиента вообще не будет доступа к базе(он ему и не нужен!), а оповещения надо получать гарантировано! И он может, как тут говорили выше, в момент события не подключен к системе оповещений. А подключится потом и должен все получить.
В трехзвенке такие вопросы можно конечно решать более красиво.
Я сколько видел реализаций оповещений в трехзвенке, везде примерно одинаково. Есть сервис оповещений (примерно как ICQ), он работает с клиентами независимо от клиента работы базой через сервер приложений.
Т.к. все операции с базой идут через сервис приложений, то он и взаимодействует с этим сервисом.
А сервис оповещений отслеживает своих клиентов, рассылает им и т.д. База используется им только как хранилище сообщений.
Не стоит забывать, что оповещения(сообщения) в такой системе могут быть и не только по событиям в базе. Например, один пользователь другому сообщение короткое переслал.
Еще хороший вопрос: в каком виде эти оповещения? Можно оповещать по ICQ, по почте и т.д. Реализовать подобное в сервисе оповещений не проблема, а вот в процедурах базы это весьма неудобно.

С ASA наверно такое можно тоже реализовать и без сервера приложений. Только и тут без некого сервиса оповещений не обойтись наверно. Но в каждом конкретном случае нужно конечно смотреть на задачу, может это все лишнее будет.

Все это я тут высказал конечно в порядке рассуждений на "тему".
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34178842
Фотография Анатолий Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Желание автора темы похоже воплощено например в NativeDB Alerts ( сайт ). Но насколько я знаю там надо взаимодействовать с базой через саму NativeDB и устанавливать специальные хранимые процедуры в базу.

Анатолий Анатольевич Иванов
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34178977
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ИвановЖелание автора темы похоже воплощено...
Желание автора темы давно воплощено в пакетах DBMS_ALERT и DBMS_PIPE.... но в СУБД Oracle. Исходя из этого я не стал бы категорично утверждать, что таких средств нет ни в одной СУБД.

По поводу многозвенок сразу скажу - в данном случае речь идет о реализации задачи на классической двузвенке. Которая имеет не только "недостаточки", но и большие преимущества. Впрочем, надеюсь что углубляться в дискуссии 2-tier vs N-tier мы не будем, - в моей любимой делфийской ветке уже 31 страницу накатали по этой теме :-)

Задачи написать "корпоративную ICQ" не ставится (тем более что она уже написана 10 лет назад :-)). Оповещения будут перехватываться клиентскими приложениями, которые, в свою очередь, будут уже необходимым образом на это реагировать (в том числе предлагая пользователю выполнить те или иные задачи, но не только).
...
Рейтинг: 0 / 0
Оповещения в ASA
    #34181853
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to A.K.
Про средства в Oracle не знал. Cейчас конечно в разных СУБД много чего сделали.
Про написание корпоративной ICQ речь не шла абсолютно. В том-то и дело, она написана, только пользуйся.
Я имел ввиду, что ICQ может выступать только как одно из средств оповещения наравне с почтой и другими. И согласитесь было бы глупо ими не пользоваться.
Но вот напрямую из ASA со всеми этими средствами разом работать не очень будет удобно, да и не его это дело.
Гораздо проще в этом случае как раз иметь некий сервис оповещений, с которым будет взаимодействовать ASA (с этим сервисом кстати может взаимодействовать кто и что угодно для посылки оповещений) и который уже далее будет работать с клиентами системы оповещения по ICQ, Почте и т.д.
Я конечно говорю про сложный пример системы, с разными средствами оповещений пользователей, с кучей событий бизнес-логики(не только в базе) и т.д.
Я конечно зря упомянул выше про "трехзвенку", здесь несколько иное - сервисы. Есть сервис базы, есть сервис оповещений и каждый должен заниматься своим делом.
В вашем случае наверно все проще, поэтому и такой сложный подход не требуется.
Ну ладно, увлекся немного. Тема уже другим форумом попахивает.
Удачно Вам всех оповестить!

P.S. А ветку из другого форума даже перечитал, спасибо. Споры действительно жаркие.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Оповещения в ASA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]