powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по POST_EVENT
147 сообщений из 147, показаны все 6 страниц
Вопрос по POST_EVENT
    #33085366
batis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вопрос.

Можно-ли в IBase передать через Allert, созданный триггером, ID -
вставленной записи?

И соответственно поймать этот Event в клиентском приложении?

типа:

POST_EVENT 'event_name'|| cast(NEW.RECORDID as varchar(64));



Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33085537
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде нет. Т.е. послать то можно, но дело в том, что клиента необходимо подписывать на сообщения, а этого ты уже знать не будешь - если только что не подпишешся на сообщения от event_name1 до event_name999999999 :))
Как выход я рассматривал вариант создания еще одной таблицы, которая будет содержать ид вставляемой записи. Т.е.
При добовлении в таблицу А записи, на тригере делаешь добавление/изменение рекорда в таблицу Б с идом таблицы А и именем этой таблицы.
А на тригере на изменение/добавление рекорда в таблицу Б уже вешаешь эвент. На этот эвент регистрируешь клиента, и при его обработке уже смотришь с каким ИД добавлен рекорд в таблицу А.
Но у этого решения есть один минус - многопользовательская работа. С ним пока у меня идей так и не возникло. Но если база локальная - в принципе такое решение может и работать.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33085566
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант есть. Только тормозной маленько и кривоватый.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33085619
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опиши....
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33086366
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственноручно кастрирую каждого, кто рефрешит записи в гриде на основании событий
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33086378
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> собственноручно кастрирую каждого, кто рефрешит записи в гриде на основании событий
Прошу прощения за оффтоп, но я тут рыдаю.
У kdv - бита, у МП - серп, у Amris'а - канделябр, а ты, Дим, чем будешь орудовать?
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33086429
Данилов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kull DamnedЭх, время, в котором стоим (С) Фазиль Искандер...
Si vis pacem, para bellum.
В e.p.i. один хлопец, как его не замиряли, как не усмиряли, завел себе аж Боевое Паникадило. Все вооружаются, блин.
Вопрос, конечно, интересный. Это ж как надо было завести кроткого и улыбчивого dimitr'а, чтоб вот так вот! да еще каждого!
С другой стороны, вещица должна быть древняя, на Востоке в гаремах используют уж лет 600, а то и поболее.
dimitr - ты часом не в Турции отдыхал?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33086492
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kull DamnedУ kdv - бита, у МП - серп, у Amris'а - канделябр, а ты, Дим, чем будешь орудовать?

стройбат - страшные люди, им даже оружие в руки не дают (с)

Данилов Юрийdimitr - ты часом не в Турции отдыхал?

какой тут [поскипано цензурой] отдых...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33086873
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrстройбат - страшные люди, им даже оружие в руки не дают (с)Ага, понял. Пусть это будет лопата. Совковая для пущего устрашения. Кастрация совковой лопалой - это круто.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087147
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kull Damned > собственноручно кастрирую каждого, кто рефрешит записи в гриде на основании событий
Прошу прощения за оффтоп, но я тут рыдаю.
У kdv - бита, у МП - серп, у Amris'а - канделябр, а ты, Дим, чем будешь орудовать?


У коллеги Лоа тупые кусачки для отстригания пальцОв одолжит на время. Функциональность в общем и целом близкая.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087350
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну пошел офтоп
С чего вы господа взяли, что это для рефреша грида??? В этом случае как раз ИД можно и не получать от эвента - просто рефрешить все
А вот ситуация, когда нужно сделать некоторое событие, если запись в базе была изменена - нужно этот ид как раз знать.
В моем случае подготовка и установка таймера на отправку письма с некой инфой, т.е. прошло одно изменение - через 5часов отправить письмо, где инфа по всем рекордам, которые за это время (до отправки письма) были изменены.
Ну и скажите мне, о мудрые, - могу ли я нормальным способом послать эвент от базы с конкретным ИД на изменени рекорда? Кроме того маразма, что я описал выше, идей больше не пришло, как это реализовать.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087361
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А внедрить в таблицу хотя бы таймштамп дефаулт нау и селектить по нём - не готично?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087372
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StrannicНу пошел офтоп
С чего вы господа взяли, что это для рефреша грида??? В этом случае как раз ИД можно и не получать от эвента - просто рефрешить все
А вот ситуация, когда нужно сделать некоторое событие, если запись в базе была изменена - нужно этот ид как раз знать.
В моем случае подготовка и установка таймера на отправку письма с некой инфой, т.е. прошло одно изменение - через 5часов отправить письмо, где инфа по всем рекордам, которые за это время (до отправки письма) были изменены.
Ну и скажите мне, о мудрые, - могу ли я нормальным способом послать эвент от базы с конкретным ИД на изменени рекорда? Кроме того маразма, что я описал выше, идей больше не пришло, как это реализовать.Че-та я мало чиво понял ис тваих рассуждений... :( ты хочешь сказать что отправляешь куда-то в письме лог измененных записей. Интересно, а для чего тогда тут эвэнты? Или я чегось не понял в твоем посте, опиши подробней.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087391
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StrannicС чего вы господа взяли, что это для рефреша грида???

а это была просто фраза в воздух... упреждающая... бо достали этой темой...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087399
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Картина следующая.
В инете есть некая база.
Пользователь просматривает ее, делает свои пометки - меняет одно поле.
На изменения этого поля (на определенное значение) срабатывает эвент и сообщает администратору, что данный рекорд был изменен. Причем по-хорошему делать это нужно тут же. Даже идея с пакетной отправкой таких изменений немного не верна. Т.е. хотят что бы админ тут же получил эту ифну по почте.
А делать запрос на базу из 100000 записей каждую минуту? Да и плюс понимать, что было изменено это поле (хотя можно конечно временное поле по тригеру на изменение этого поля выставлять) как то не радужно наверное будет для сервера.
Намного проще ИМХО при изменении послать эвент с указанием ИД рекорда, а дальше делать уже что душе угодно.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087407
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr StrannicС чего вы господа взяли, что это для рефреша грида???

а это была просто фраза в воздух... упреждающая... бо достали этой темой...
это неверно с точки зрения того, что клиент будет вечно дергать таблицу на рефреш? или еще есть что почему ты это не рекомендуешь? к примеру кнопочка обновить может просто стать энаблед, и юзверь сам решает, хочет он или нет обновить свой набор. или я чего то не понял.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087410
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StrannicКартина следующая.-=censored=-В общих чертах. шение - выкладывать во внешнюю таблу и контролировать ее размер или таймштамты (еще лучше), которые содержать момент изменения и ID записи, и сервис, который будет контролировать эту таблу или реагировать на эвент - тут уже нет принципиальной разницы.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087417
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strannicк примеру кнопочка обновить может просто стать энаблед, и юзверь сам решает, хочет он или нет обновить свой набор. или я чего то не понял.С кнопочкой разве что можно, но многие так не думают и тупо рефрешат грид и потом офигевают. :)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087454
fynda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strannic
Даже идея с пакетной отправкой таких изменений немного не верна. Т.е. хотят что бы админ тут же получил эту ифну по почте.


Внимание, вопрос: что будет, если почтовый сервер остановят на сутки для профилактики? Куда тогда денутся данные об измененных записях?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087458
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kull Damned StrannicКартина следующая.-=censored=-В общих чертах. шение - выкладывать во внешнюю таблу и контролировать ее размер или таймштамты (еще лучше), которые содержать момент изменения и ID записи, и сервис, который будет контролировать эту таблу или реагировать на эвент - тут уже нет принципиальной разницы.
ну т.е. то решение что я описыал выше (вторай топик на вопрос) единственно верное получается??? просто я его счел идиотским - к примеру два инет-юзверя меняют одновременно разные рекорды. тогда в промежуточную таблицу должны попасть две записи, т.е. мне будет нужно эти две записи о отослать по эвенту, после чего необходимо таблицу очистить. а если в этот момент третий еще что-то добавил? вобщем что-то я запутался.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087509
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strannicпросто я его счел идиотским - к примеру два инет-юзверя меняют одновременно разные рекорды. тогда в промежуточную таблицу должны попасть две записи, т.е. мне будет нужно эти две записи о отослать по эвенту, после чего необходимо таблицу очистить. а если в этот момент третий еще что-то добавил? вобщем что-то я запутался.Сервис, который отправляет инфу будет запоминать последний отправленный таймштамт и делать выборку из вторичной таблы основываясь на его значении. Не обязательно сразу чистить таблу. И преимущество внешней таблы в том, что её физически можно убивать периодически или по каким-либо еще условиям, например при отсутствии работающих юзверей, и сервер при попытке к ней обратиться сам создаст файл.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087524
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако боюсь, если записей лога будет много с внешней таблой будут тормоза, тут надо покумекать и поэкспериментировать.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087573
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kull DamnedОднако боюсь, если записей лога будет много с внешней таблой будут тормоза, тут надо покумекать и поэкспериментировать.

Вобщем-то как видно, если бы была возможность отпровлять эвентом параметр, то задача упростилась бы. Т.е. в итоге вывернутсься конечно можно, пусть через ..... но работать будет.

А всего-то нужно - подписываться на сообщения, в которм один параметр само сообщение, а второй просто набор данных. Т.е. к примеру было бы так POST_EVENT "table_modif","123,wer,"||new.NAME
а клиент подписываеться и смотрит только лишь на table_modif, а остальное уже идет просто в нагрузку.

хотя понимаю, что дай такую возможность и начнеться все на событиях делаться, вместо того, чтобы подумать о нормальном решении вопроса. Но речь не идет о всех клиничиских случаях в проктологи.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087575
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kull Damned Strannicк примеру кнопочка обновить может просто стать энаблед, и юзверь сам решает, хочет он или нет обновить свой набор. или я чего то не понял.С кнопочкой разве что можно, но многие так не думают и тупо рефрешат грид и потом офигевают. :)
а это и есть та клиника о которой я сказал выше, но это же не повод вовсе убрать эвенты из FB?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087601
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fynda Strannic
Даже идея с пакетной отправкой таких изменений немного не верна. Т.е. хотят что бы админ тут же получил эту ифну по почте.


Внимание, вопрос: что будет, если почтовый сервер остановят на сутки для профилактики? Куда тогда денутся данные об измененных записях?

ну что так сразу о печальном. да об этом я как то не подумал, но.... превое - письмо рано или поздно все равно дойдет до адресата, второе - сделаю проверку на при возврате письма.
причем насколько я помню, что все-таки адресат их получит, хоть и с опозданием, но это как говориться исключение из правил.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087668
fynda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strannic
ну что так сразу о печальном.

Почему о печальном-то? Печально было б если б выбора не было. А вариант с таблицей, в которую лог складывается и cron'ом раз в пять минут отсылается - тут уже предлагали, он вполне работоспособный и в случае временной неработоспособности сервера.

Strannic
да об этом я как то не подумал, но.... превое - письмо рано или поздно все равно дойдет до адресата,


Сомневаюсь я... При неработающем сервере-то... Скорее всего придется тебе опять же неотправленные письма в стопочку складывать и перепосылать через какое-то время. Те же... то есть тот же лог, только вид сбоку. :(

Strannicвторое - сделаю проверку на при возврате письма.


А кто его вернет-то? Напоминаю: сервер сдох. ;)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33087792
Strannic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fynda Strannicвторое - сделаю проверку на при возврате письма.


А кто его вернет-то? Напоминаю: сервер сдох. ;)
Последний сервак до которого оно дошло вернет его с сообщением что дескать искомы сервер не найден.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33090074
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to batis
Я болею, завтра наверное поправлюсь и, если хочешь, опишу решение данной проблемы.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33090190
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вот вариант решения. Заводим специальную Log - таблицу. Вот с такой, к примеру, структурой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Create table Log (
 Moment     TimeStamp;
 Operation   Varchar( 10 );
 Connect_id Integer;
 TableName Varchar( 50 );
 Rec_Id Integer
)

В момент коннекта к базе получем с сервака текущее значение времени. Запоминаем в
Код: plaintext
 LastMoment : TDateTime. 

При изменени данных триггерами пишем значение Moment (текущее значение времени), Operation (удаление/изменение/), Connect_id (идентификатор коннекта), Table_Name (Имя изменяемой таблички), Rec_Id (идентификатор измененной/добавленной/удаленной записи)

Вот, при получении эвента о том, что данные поменялись, лезем в эту табличку и выбираем все, что произошло после LastMoment, и, если не нужны данные по изменениям, сделанным тобой лично - то отбрасываем значения с Connect_id = твоему коннекту.

Берем с сервака текущее время, запоминаем. Интерпретируем полученные значения.

Смыть, повторить.

Kull Damned об этом и говорил, вроде.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33090218
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAV
Я болею, завтра наверное поправлюсь и, если хочешь, опишу решение данной проблемы.
Опиши плиз и мне интересно.
На счет списка активных юзеров по твоей методике работаю - доволен.
События с параметрами когда то тоже пытался реализовать через UDF, там один недостаток - события валятся не дожидаясь окончания транзакци, а так работать можно.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33090266
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А насчет кастрирований там - лучше бы, перед тем как холодным оружием махать предложили бы тогда нормальное решение задачи:
Данные обновляются несколько раз в минуту, юзер должен видеть таблицу всегда со свежими обновлениями, причем нажимать постоянно на кнопочку для рефреша его заставлять ни как нельзя! Как здесь быть без рефрешей по событию?

ИМХО этим (рефрешами) заниматься вполне допустимо, нужно только прицип гранулярности соблюдать. (ограничевать максимальное количество рефрешей в единицу времени)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33090517
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛебедкинА насчет кастрирований там - лучше бы, перед тем как холодным оружием махать предложили бы тогда нормальное решение задачи:


Имхо с кастрацией уже поздно. С родителем надо было разбирацца :)

Лебедкин
Данные обновляются несколько раз в минуту, юзер должен видеть таблицу всегда со свежими обновлениями


Лично мне незнакомы задачи, в которых это на самом деле нужно. Знакомо много народу, искренне уверенного что нужно, но объяснить зачем они не могут. Знакомы также люди, втискивающие в СУБД-приложения несвойственные этим приложениям функции.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33091052
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris MirddinЛично мне незнакомы задачи, в которых это на самом деле нужно. Знакомо много народу, искренне уверенного что нужно, но объяснить зачем они не могут. Знакомы также люди, втискивающие в СУБД-приложения несвойственные этим приложениям функции.

Ну возьми, для примера, хотя бы мою задачу:
Большой таксопарк. В минуту в БД записывается разными операторами до 10 заявок. Несколько диспетчеров, занимающихся распределением заявок на автомобили непрерывно должны видеть как поступающие заявки, так изменяющейся статус введенных заявок для того, не возникало конфликтов (или было минимальным), когда два диспетчера пытаются распределить одну и ту же заявку. Плюс так же оперативно нужно видеть изменяющийся по статусам (занят, свободен, не на линии) список автомобилей.

И я уверен подобных задач реального времени в жизни хватает.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33091088
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛебедкинИ я уверен подобных задач реального времени в жизни хватает.Я бы для такой штуки делал надстройку - сервер-паблишер, который умеет рассылать нужные мне "эвенты-записи" основываясь на постоянном рефреше (тикер от 3-х секунд - подбирать) парочки-тройки таблиц лога (посменно, чтобы можно было чистить в фоновом режиме) на серверной стороне. А на клиентской стороне приемник-стек. Примерно так.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33091218
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин
Ну возьми, для примера, хотя бы мою задачу:
Большой таксопарк. В минуту в БД записывается разными операторами до 10 заявок. Несколько диспетчеров, занимающихся распределением заявок на автомобили непрерывно должны видеть как поступающие заявки, так изменяющейся статус введенных заявок для того, не возникало конфликтов (или было минимальным), когда два диспетчера пытаются распределить одну и ту же заявку. Плюс так же оперативно нужно видеть изменяющийся по статусам (занят, свободен, не на линии) список автомобилей.

И я уверен подобных задач реального времени в жизни хватает.

А я бы не так к решению задачи подходил. Работал бы через трехзвенку. Причем статус автомобилей держал бы в памяти и в базу бы не писал. Каким бы ни был таксопарк при нынешних объемах памяти все его а/м спокойно в память влезут. Так же поступил бы со списком активных заявок. То есть при поступлении новой записывал бы ее в базу, но и оставлял бы в памяти. И вот из памяти AppServer-a и делал бы Refresh состояния на клиентах не мучая-бы при этом сервер. При закрытии заявки соответственно записывал бы ее в базу и удалял из AppServer-a. Нотификацию организовать можно кучей вариантов, опять же не насилуя птичку...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33091278
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лентяй[quot Лебедкин]
Ну возьми, для примера, хотя бы мою задачу:
Большой таксопарк. В минуту в БД записывается разными операторами до 10 заявок. Несколько диспетчеров, занимающихся распределением заявок на автомобили непрерывно должны видеть как поступающие заявки,


Гы, таки мой ТЛ в отличной форме даже в понедельник Так и знал, что задача именно эта. Тык вот, ему не нужно непрерывно видеть все поступающие заявки, ему нужно знать что они есть. И даже это не непрерывно, а только когда он (диспетчер) а) idle б) присутствует на рабочем месте. Т.е. евент должен сообщать только о факте появления в базе новых заявок. А уже диспетчер на осоновании этой информации должен самостоятельно инициировать себе рефреш набора именно в тот момент, когда он намерен взяться за новую заявку. И первое, что он должен сделать когда выберет себе строку для обслуживания - осуществить её пессимистическую блокировку и ещё раз отрефрешить именно эту строку персонально, ибо с тех пор, как он её пофетчил, её уже мог а) взять на обслуживание другой (для этого блокировка) и б) оное обслуживание даже вообще завершить (для этого рефреш). И по завершении обслуживания одной заявки безусловно перечитать весь набор, были там эвенты, не были... Насчёт состояния машин присоединяюсь к предыдущим ораторам.

2 Лентяй: помнишь ты меня спрашивал, зачем нужна возможность задавать транзакцию RefreshSQL персонально и управлять ей? Кроме того, что я тебе тогда сказал, ещё и этот случай - совпадение с транзакцией не SelectSQL, а ModifySQL. А бывает, что нужно то так, то этак - когда основной набор рефрешится не всегда целиком, а построчно тоже.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33091351
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык, я к словам Amris добавлю еще что - есть такая хрень, диаграмма состояний.
так вот уже из изложенного про таксопарк я вижу, что у диспетчера есть совершенно явная диаграмма состояний, или последовательность действий.
предполагаемое:

1. диспетчер обновляет набор для просмотра заявок.
2. выбирает заявку для обработки (возможно сообразуясь со списком находящихся в этом районе машин), БЛОКИРУЕТ ее от захвата другими диспетчерами.
3. начинает работать по заявке.
4. после обработки заявки возвращается к п.1.

то есть, нигде тут никаких постоянных рефрешей нет, они диспетчеру вообще на дух не нужны (как не нужны _другие_ заявки в момент обработки конкретной, например).
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33091781
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris MirddinТык вот, ему не нужно непрерывно видеть все поступающие заявки, ему нужно знать что они есть. И даже это не непрерывно, а только когда он (диспетчер) а) idle б) присутствует на рабочем месте.
Ему нужно именно видеть все поступающие заявки, что бы выбрат ь из них ту, с которой он хочет работать.

Amris Mirddin
Т.е. евент должен сообщать только о факте появления в базе новых заявок. А уже диспетчер на осоновании этой информации должен самостоятельно инициировать себе рефреш набора именно в тот момент, когда он намерен взяться за новую заявку.
Так вот вам рефреш на основании эвента. Тока он может принять решение что он будет браться за новую заявку видя текущие заявки, так что рефреш надо делать каждый раз после изменения списка текущих заявок дабы показать ему актуальный список.

По поводу блокировок - базара нет. Согласен, так и делаем.

kdv
1. диспетчер обновляет набор для просмотра заявок.
2. выбирает заявку для обработки (возможно сообразуясь со списком находящихся в этом районе машин), БЛОКИРУЕТ ее от захвата другими диспетчерами.
3. начинает работать по заявке.
4. после обработки заявки возвращается к п.1.

то есть, нигде тут никаких постоянных рефрешей нет, они диспетчеру вообще на дух не нужны (как не нужны _другие_ заявки в момент обработки конкретной, например).
В момент обработки текущей, другие заявки не нужны - согласен.
Но в даной диаграмме: после пункта 4 постоянно надо выполнять пункт 1, пока не перейдем к 2 (т.е. не начнем работать по какой-либо заявке).

Лентяй
А я бы не так к решению задачи подходил. Работал бы через трехзвенку.

Именно в этом направлении я сейчас и работаю
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092162
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но в даной диаграмме: после пункта 4 постоянно надо выполнять пункт 1

то есть, диспетчер сидит сложа руки, и тупо пялится в монитор?
Если новые заявки приходят редко, то достаточно сигнала, что появились новые заявки. Жмем кнопку - перечитываем.
Если новые заявки приходят часто, то у диспетчера на экране все будет просто мелькать.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092215
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Лебедкин
Рассказываю. Нужно 4 таблицы. В 1-й будет список активных пользователей
(подойдет USERS_CLIENT). Во 2-й список событий
Код: plaintext
1.
2.
3.
CREATE TABLE EVENT_LIST (
  EVENT_ID INTEGER,
  EVENT_NAME VARCAHAR( 30 )
)
В 3-й содержиться список "заинтересованных" в событиях пользователей
Код: plaintext
1.
2.
3.
4.
CREATE TABLE USERS_EVENTS (
  USERS_EVENTS_ID INTEGER,
  EVENT_ID INTEGER,
  USERS_CLIENT_ID INTEGER
)
Каждый клиент, который принимает событие делает вставку в эту таблицу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE INS_USERS_EVENTS (USERS_CLIENT_ID, 
EVENT_NAME VARCAHR( 30 )) 
AS 
BEGIN
   INSERT INTO USERS_EVENTS (EVENT_ID, USERS_CLIENT_ID )
     SELECT EVENT_ID, :USERS_CLIENT_ID FROM EVENT_LIST WHERE EVENT_NAME=:EVENT_NAME;

END 
4-я таблица, собственно содержит события
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE KEY_EVENTS (
  KEY_EVENTS_ID INTEGER,
   EVENT_ID INTEGER,
  USERS_CLIENT_ID INTEGER,
  KEY_ID INTEGER,
  TABLE_NAME VARCHAR( 30 ),
  UPDATE_ACTION INTEGER /*0-вставка, 1 - обновление, 2 - удаление*/
)

В USERS_CLIENTS сделаем триггер на удаление
Код: plaintext
DELETE FROM KEY_EVENTS WHERE USERS_CLIENT_ID=OLD.USERS_CLIENT_ID 
Пример.
Допустим есть таблица
Код: plaintext
1.
2.
3.
4.
CREATE TABLE CLIENTS(
  CLIENT_ID INTEGER,
  CLIENT_NAME VARCHAR( 255 )

) 
Триггер на удаление выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
  SELECT EVENT_ID FROM EVENT_LIST WHERE EVENT_NAME = 'DEL_CLIENTS' INTO :EVENT_ID;
  INSERT INTO KEY_EVENTS (EVENT_ID, USERS_CLIENT_ID, KEY_ID,
  TABLE_NAME,  UPDATE_ACTION) SELECT EVENT_ID, USERS_CLIENT_ID,
 OLD.CLIENT_ID, 'CLIENTS',  2   FROM USERS_EVENTS E WHERE EVENT_ID=:EVENT_ID
 AND EXISTS (SELECT  1  FROM USERS_CLIENTS U WHERE U.USERS_CLIENT_ID=E.USERS_CLIENT_ID AND U.NOT_PID_EXIST= 0 );
POST_EVENT 'DEL_CLIENTS';
Далее может выбрать все это на клиента одновременно с удалением
Код: plaintext
1.
2.
3.
FOR SELECT KEY_EVENTS_ID, KEY_ID FROM KEY_EVENTS K WHERE K.USERS_CLIENT_ID =:USERS_CLIENT_ID INTO  :KEY_EVENTS_ID, :KEY_ID DO BEGIN
  DELETE FROM KEY_EVENTS WHERE KEY_EVENTS_ID=:KEY_EVENTS_ID;
  SUSPEND; 
END  
Вот такая схема. Матом не ругаться.
Основная проблема определить, жив-ли клиент, нуждающийся в событии. Если использовать USERS_CLIENT, то проблем нет. Кроме этого есть еще несколько способов это определить, но я че-то уже устал.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092415
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvто есть, диспетчер сидит сложа руки, и тупо пялится в монитор?

ну он мжет, например, чай пить :-) и время от времени, например раз в 10 сек поглядывать на монитор, при этом ни куда не нажимая
kdv
Если новые заявки приходят редко, то достаточно сигнала, что появились новые заявки. Жмем кнопку - перечитываем.
Если новые заявки приходят часто, то у диспетчера на экране все будет просто мелькать.
Ни чего подобного, мелькания даже не заметно. Просто в гриде вдруг появляется новая строка или существующая меняет иконку или цвет (статус)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092446
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин
Лентяй
А я бы не так к решению задачи подходил. Работал бы через трехзвенку.

Именно в этом направлении я сейчас и работаю
Но в этом случае уже вся информационная нагрузка будет на сервер приложений, а InterBase (или любая другая СУБД) будет просто хранилищем архивных данных. Это нормально, но вопрос то ставился про выполение задачи именно средствами IB

И что бы тут не говорили про кривое программирование, система на основе рефрешей по событиям реально работает (не без огрехов кончно, а где их нет?), а значит имеет право на жизнь
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092476
Фотография Sash*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин
Ни чего подобного, мелькания даже не заметно. Просто в гриде вдруг появляется новая строка или существующая меняет иконку или цвет (статус)
угу, сел пользователь - прицелился, ткнул дважды в запись - а она возми и поменяйся на другую
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092508
fynda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин
ну он мжет, например, чай пить :-) и время от времени, например раз в 10 сек поглядывать на монитор, при этом ни куда не нажимая


Можно обновлять грид по таймеру раз в N (N - настраиваемо) секунд. Сел пить чай - включил таймер, и пусть поглядывает себе. А вообще нефиг чаи расписать на рабочем месте! ;)

Лебедкин
Ни чего подобного, мелькания даже не заметно.

Не заметно или пока не заметно? ;)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092548
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sash*угу, сел пользователь - прицелился, ткнул дважды в запись - а она возми и поменяйся на другую
Тоже не угадал (хотя в первых версиях у меня так было), клинтский датасет перед рефрешем запоминает номер позиции по айдишнику, а после рефреша на него же перескакивает. В результате создается впечатление что при исчезновении строки сверху все строки просто сдвигаются, вместе с прицелом.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092574
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fyndaМожно обновлять грид по таймеру раз в N (N - настраиваемо) секунд. Сел пить чай - включил таймер, и пусть поглядывает себе. А вообще нефиг чаи расписать на рабочем месте! ;)
Тогда чем обновление по таймеру лучьше обновления по событитю?

fyndaНе заметно или пока не заметно? ;)
Уже два с половиной года не заметно
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092637
АВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да уж, всё это здорово, но вот если бы за Event-ом можно было бы <int > приклеить, то не нужно было бы городить такое как FreemanZAV. Многим, так или иначе приходится подобное выдумывать. Когда я спросил у уважаемых гуру-создателей, почему решили отказаться от возможности высылать эвенты с параметрами, то ответ был простой и главное информативный: "патамучто" :( Хотя есть ряд задач, где действительно проще выслать ID с параметром, чем городить внешние таблицы-логи, таблицы с событиями, таблицы с клиентами и т.д. мне бы эта штука очень даже подошла, хоть у меня нет никакого грида. просто нужно знать какая запись в таблице запись изменилась. Можно конечно udf написать, которая по отдельному порту по TCP пакетик высылает с ID записи и на триггер повесить, но это тоже изврат нехилый - отдельный коннект на такую штуку держать...
Короче, объясните мне, кто может, в чём я ошибаюсь и почему параметр в эвенте является вселенским злом?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092654
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to АВП
Ну вот опять. Если миллион записей вставляем, куда складывать параметры до комита и в какой форме давать параметры клиенту.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092683
fynda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин
Тогда чем обновление по таймеру лучьше обновления по событитю?


Смотря как часто eventы приходят. Если за эти N секунд, что юзер на экран не смотрит - их десяток наваливается, то перечитываться запрос реже будет. Если за N*10 - один event, то ничем, хуже даже. Просто изначально вопрос был "как тут без event'ов", ну я и выдал идею, _как_. А _надо ли_ - это отдельный вопрос. ;)

Лебедкин
fyndaНе заметно или пока не заметно? ;)
Уже два с половиной года не заметно

А, ну тогда конечно "работает - не трогай" :)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092885
Фотография Sash*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин Sash*угу, сел пользователь - прицелился, ткнул дважды в запись - а она возми и поменяйся на другую
Тоже не угадал (хотя в первых версиях у меня так было), клинтский датасет перед рефрешем запоминает номер позиции по айдишнику, а после рефреша на него же перескакивает. В результате создается впечатление что при исчезновении строки сверху все строки просто сдвигаются, вместе с прицелом.
ну так это если он в кнопку редактировавать жмет, а если он дважды щелкает на третей сверху строке - то она еще как из под курсора может выскочить
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092904
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин
И что бы тут не говорили про кривое программирование, система на основе рефрешей по событиям реально работает (не без огрехов кончно, а где их нет?), а значит имеет право на жизнь

Право на жизнь имеют все, включая олигофренов. Не нам решать кому жить, на то повыше есть. А вот как жить... Ысчо раз: диспетчеру информация о заявках нужна только в момент, когда он готов и собирается принять решение об обслуживании и выбор заявки. В режиме idle ему нужна информация только о _наличии_ заявок, чтобы принять другое решение - просмотреть список или пойти попысать. То есть, по уму эвенты нужны всего лишь для накручивания визуализации счётчика заявок при регистрации (а возможно и скручивания по событию завершения обслуживания), ну и, может, помявкивания в стиле аськи. Но если нужно поддерживать у начальства уверенность в том, что не зря вбухали бабки в высокоскоростную сеть с дорогими свитчами и мощный сервак - что ж, можно и порефрешить.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092923
АВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FreemanZAVНу вот опять. Если миллион записей вставляем, куда складывать параметры до комита и в какой форме давать параметры клиенту.


а сейчас где "миллион эвентов" лежит"? - шутка ;)

Ну мне как-то не приходило в голову, что такая система может использоваться кем-то для отбработки массовых операций. В моей задаче всегда присутствует иникальный ПК и все операции производятся только с конкретной записью. Возможно можно решить задачу хранения "миллиона параметров", например ограничением использования этой системы на работу с выборкой возвращающей одну запись. Есть же такие проверки при других операциях. Хотя я конечно не специалист по написанию серверов БД и может есть еще тысяча других причин, по которым невозможно реализовать такую систему. Это уже будет объяснение получше чем "патамучто", т.к. информация о возможной реализации параметров была, а потом вопрос как-то "рассосался".

FreemanZAV и в какой форме давать параметры клиенту.
Можно как виндовое сообщение. или еще проще один int и хватит, а в него хоть ID из конкретной таблички, хоть тот же ID из таблицы "событий", в которой может быть хоть 100кб информации. В любом случае имеем однозначно идентифицируемую ссылку на инициатора события. система отклика может проста и прозрачна без массы дополнительных таблиц и запросов.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33092980
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АВП FreemanZAVНу вот опять. Если миллион записей вставляем, куда складывать параметры до комита и в какой форме давать параметры клиенту.


а сейчас где "миллион эвентов" лежит"? - шутка ;)


Гусары, молчать! В одном счётчике.

АВП
Ну мне как-то не приходило в голову, что такая система может использоваться кем-то для отбработки массовых операций. В моей задаче всегда присутствует иникальный ПК и все операции производятся только с конкретной записью. Возможно можно решить задачу хранения "миллиона параметров", например ограничением использования этой системы на работу с выборкой возвращающей одну запись.


Иногда лучше жевать (С). Примерный код _строкового_ (а у нас других нет, но насчёт табличного тоже можно похихикать) триггера:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
  Поинтересоваться у таблицы, каким оператором её обновляли, мож она помнит 
  If я сработал при обновлении одной записи then
   Post Event
  else
   if двух, то ещё подумать
   else
    if трёх, совсем ХЗ
    else многа однако, молчать, однако;


АВП
Есть же такие проверки при других операциях.


При каких, если не секрет? Имеется в виду изумление сервера на подзапросе, возвращающем курсор, в селекте? Разницы не осчусчаем?

АВП
Хотя я конечно не специалист по написанию серверов БД


Это заметно. Однако тут нужно просто быть специалистом сначала подумать, потом сказать, а не наоборот. Серп что-то совсем ржавчиной зарос, пора заточить да омыть красненьким.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093012
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Amris!
Ты пишешь:

AmrisAM> Серп что-то совсем ржавчиной зарос, пора заточить да омыть красненьким.
Недосуг мне. Сочинительствую я.
Процессы и структуры рисую,
мыслю чё ещё понадобится,
походу дополняю чего нету ...

А серп готов передать в твои руки.

Вот он:



--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093018
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv -> МП
МП -> AM ...

всемирная история, банк и.............л

чё-то заскучали гуры
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093023
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нафик-нафик. Всё на мои старческие плечи взвалить возжелал?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093040
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Amris!
Ты пишешь:

Amris AM> Нафик-нафик. Всё на мои старческие плечи взвалить возжелал?
Ну, тады пущай ржавеет (пока)

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093051
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотетелям event-ов с параметрами:
1. Заводим в базе табричку под параметры с PK, заполняемым из генератора
2. В триггере/SP/прямо с клиента заполняем параметры и дергаем Event (он один на всю систему)
3. Пишем программу-робота которая висит рядом с сервером и слушает именно этот Event.
4. Робот, получив Event, стартует снапшот транзакцию, вычитывает из таблички еще неотправленные Event-ы с параметрами и рассылает их клиентам. Помечает вычитанные Event-ы как отправленные и коммитит транзакцию.
Протокол передачи по вкусу - хоть UDP, хоть TCP, хоть по почте, хоть SMS или вообще голосовым сообщением...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093057
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
основная проблема - не перевыполнять запрос целиком, а получить с сервера только те записи, которые изменились. Причем даже в последнем случае совершенно необязательны евенты с идентификаторами.
Я где-то видел статью про то, как ClientDataSet сделать так, чтобы в него закачивать (прямо в буфер) нужные записи, а не все целиком. Но - не помню, увы.

Так вот, сделать обновления по insert и update можно следующим способом:

1. на ПК у нас и так есть генератор, как правило. Так вот, когда мы получаем записи, автоматически сканируем столбец первичного ключа, и запоминаем максимальное считанное. Теперь, для получения вставленных с этого момента записей можно выполнить запрос
select * from table
where pkfield > :saved_pkfield_value and pkfield <= gen_id(pk_gen, 0)

то есть, от запомненного на последнем считывании, до текущего генератора
(понятно что до "текущего" записи могут не считаться, если они не committed).
Опять запоминаем максимальное значение ПК из полученного набора записей, и так по кругу.
(тут бы и добавить эти записи в буфер клиентдадасета)

2. для отлова обновлений делаем дополнительный столбец таблицы, который на before update заполняется еще одним генератором.
Схема аналогична изложенной выше, то есть - при вставке инкрементируется ПК, а при обновлении - этот столбец. Вторым запросом, похожим на предыдущий, вынимаем свежеобновленные записи.
(Тут бы и обновить эти записи в буфере клиентдатасета)

3. для отлова удалений все несколько сложнее. Или на удаления надо положить, если их нет, или сделать отдельную таблицу, параллельную исходной, и при удалении складывать туда идентификаторы (pkfield) удаленных записей. Тут, правда, с генераторами ничего не выйдет, т.к. записи могут удаляться как попало, поэтому если требуется проверять "удаленные за сегодня", то надо добавить в ПК этой доп. таблицы еще и столбец типа DATE.
(тут бы и удалить эти записи в буфере клиентдатасета)

Комментарии?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093073
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, добавлю, что это описание примера репликации, или рассылки изменений, на самом деле. то есть здесь никто "рефрешить", и тем более через евенты, не собирался :-) Есть сервак, а есть туча агентов, которые сами по себе, когда им надо, получают информацию об изменениях данных на сервере. Просто потому, что их предполагалось много, и если бы они по евенту ломанулись сразу на сервак, то ...
Собственно, еще более на самом деле это описание "серверного" приложения. Потому что клиент только сообщал, в каком он состоянии, а серверная аппликуха для него подгребала данные и отправляла.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093077
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvКомментарии?Да брось ты, тут уже этих рекомендаций и советов дадено. А людЯм нуна эвенты и шоп было круто и без телодвижений. У них РЕЛИГИЯ.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093091
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лентяй
Л> Хотетелям event-ов с параметрами:
Л> 1. Заводим в базе табричку под параметры с PK, заполняемым из генератора
Л> 2. В триггере/SP/прямо с клиента заполняем параметры и дергаем Event (он
Л> один на всю систему) ........Я похожим образом сообщения юзверям рассылаю когда надо их повыгонять из проги. А можно и
принудительно выкинуть.

--
Dik76

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093103
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Комментарии?

Мл.. Ё.. Ох.. Вы чо с Лентяем на пару курите-то? Повелись на прокто-логгию? Не стыдно? Раз не дают сервер с сеткой убить штатными средствАми, приделаем свои лисапедные костыли? Сам же говоришь насчёт того, что по смещению от читанного в прошлый раз хрень получается с некоммиченными. На колу мочало. Всё просто дОнельзя. У мя уже мозоль на языке в этом месте, а dimitr молчит который год аки рыба в пироге. Current_Transaction колонкой записи и в параметры евента и ВСЁ. Получил эвент завершения транзакции - тривиально выбираешь её данные. А впендюрить в просмотровый ClientDataSet проще некуда - Edit-Insert-Post, Delete. Он же изменения за щекой держит. Только ApplyUpadates не давать и всё.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093176
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЯ где-то видел статью про то, как ClientDataSet сделать так, чтобы в него закачивать (прямо в буфер) нужные записи, а не все целиком. Но - не помню, увы.
Код: plaintext
1.
2.
3.
4.
5.
LogChanges := False; 
Insert;
... 
Post; 
... 
LogChanges := True; 
Или просто AppendData, если оно уже в нужном формате

kdv3. для отлова удалений все несколько сложнее. Или на удаления надо положить, если их нет, или сделать отдельную таблицу, параллельную исходной, и при удалении складывать туда идентификаторы (pkfield) удаленных записей. Тут, правда, с генераторами ничего не выйдет, т.к. записи могут удаляться как попало, поэтому если требуется проверять "удаленные за сегодня", то надо добавить в ПК этой доп. таблицы еще и столбец типа DATE.
(тут бы и удалить эти записи в буфере клиентдатасета)

Комментарии?Зачем DATE ? Ещё один генератор, именно для таблицы удалённых.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093183
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам же говоришь насчёт того, что по смещению от читанного в прошлый раз хрень получается с некоммиченными. На колу мочало.
нет никакой хрени с некомиченными. генератор - это просто указатель на максимальный ид на текущий момент. если мы получим идентификаторы меньше - ничего страшного, прочитаем в след. раз. у нас же есть максимальный реально полученный (коммиттед) идентификатор.

Current_Transaction колонкой записи и в параметры евента и ВСЁ

ну дак нет же этого.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093198
АВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот. Получил чего хотел. Натыкали носом в это самое... Ну да я не в обиде. В принципе такой реакции и ждал, иначе молчал бы и оставался дальше в неведении, что хочу невозможного да еще в извращенной форме :)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093220
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
нет никакой хрени с некомиченными. генератор - это просто указатель на максимальный ид на текущий момент. если мы получим идентификаторы меньше - ничего страшного, прочитаем в след. раз. у нас же есть максимальный реально полученный (коммиттед) идентификатор.


Твой запрос:

select * from table
where pkfield > :saved_pkfield_value and pkfield <= gen_id(pk_gen, 0)

що буим делать с pkfield<:saved_pkfield_value которые в момент назначения его таковым не были ещё закоммиченными? Без лога изменения гарантированно не вытаскиваются. Лог может гарантированно применяться для вытаскивания изменений только в случае пометки вытаскивающей транзакцией вытаскиваемых данных. В частном случае - пометки удалением из лога.

kdv
Current_Transaction колонкой записи и в параметры евента и ВСЁ
ну дак нет же этого.

Из-за таких вот и нет, видать, наверное никак не придумает как дать _только разумные_ параметры к евенту приделывать.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093260
АВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Amris Mirddin Из-за таких вот и нет, видать, наверное никак не придумает как дать _только разумные_ параметры к евенту приделывать.

Да почему же никак не придумает. Сделал я уже давным давно систему с "внешней табличкой", в которой и идентификаторы юзеров и регистрация на события и внешний монитор, который отслеживает корректность действий и то что юзер зарегестрированный еще не "отлетел". Только вот хотел поинтересоваться, почему собственно не реализуется параметр для эвента, что мешает. Вот собственно и всё.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093280
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris MirddinМл.. Ё.. Ох.. Вы чо с Лентяем на пару курите-то? Повелись на прокто-логгию? Не стыдно? Раз не дают сервер с сеткой убить штатными средствАми, приделаем свои лисапедные костыли?
Ну вот, попал под раздачу, да еще в какой компании!
Я, собственно говоря, только изложил, как можно своими силами организовать Event с параметрами, но нигде вроде не говорил, что я за рефрешение гридов по Event-ам. Да и ДК вроде о репликации размышляет...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093398
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris MirddinУ мя уже мозоль на языке в этом месте, а dimitr молчит который год аки рыба в пироге. Current_Transaction колонкой записи и в параметры евента и ВСЁ.

я пять лет курю эту траву и меня уже не цепляет ;-)

на самом деле, current_transaction архитектурно никак не кошернее rec_id, просто на практике безопаснее. Но усраться можно и с ней.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093413
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
що буим делать с pkfield<:saved_pkfield_value которые в момент назначения его таковым не были ещё закоммиченными?

да ничего не будем! saved_pkfield_value это грубо говоря MAX(pkfield_value) из полученных. я ж там написал, специально, что на генератор ориентируемся как на теоретический максимум, а не на фактический.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093419
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr Amris MirddinУ мя уже мозоль на языке в этом месте, а dimitr молчит который год аки рыба в пироге. Current_Transaction колонкой записи и в параметры евента и ВСЁ.

я пять лет курю эту траву и меня уже не цепляет ;-)


Курить надо менше. Даже Минздрав вон предупреждает.

dimitr
на самом деле, current_transaction архитектурно никак не кошернее rec_id, просто на практике безопаснее. Но усраться можно и с ней.

Ай, я тебя умоляю. Как это не кошернее? Усраться с current_transaction = усраться с потоком транзакций как таковым, и несколько байт в размере посылки, а не в количестве посылок, тут никакой рояли не играет. Так штаа... Не катит твой радикализьм. Даже свинина становится кошерной если свинья почесалась об стену синагоги.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093449
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv що буим делать с pkfield<:saved_pkfield_value которые в момент назначения его таковым не были ещё закоммиченными?

да ничего не будем! saved_pkfield_value это грубо говоря MAX(pkfield_value) из полученных. я ж там написал, специально, что на генератор ориентируемся как на теоретический максимум, а не на фактический.

Дима, ты решил меня в гроб загнать досроковно или я туплю в той же невероятной степени после вчерашнего как и киплю?

Transaction 1: insert (ID=1)

Transaction 2: insert (ID=2)
Transaction 2: Commit

Transaction 3:
select * from table
where pkfield > :saved_pkfield_value and pkfield <= gen_id(pk_gen, 0)

saved_pkfield_value:=max(достатых запросом ID) или min или где?
Вроде по любому оно теперь 2?

Transaction 1: Commit

Transaction 4:
select * from table
where pkfield > :saved_pkfield_value (2) and pkfield <= gen_id(pk_gen, 0) (2)

хрена лысого, а не ID=1.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093453
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в промежуток времени после срабатывания ивента на клиенте, но перед повторным взводом его в режим ожидания, может закоммититься несколько транзакций. Т.е. клиент после этого получит одно уведомление с несколькими ID. Архитектурно - те же яйца, просто безопасней на практике.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093458
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrв промежуток времени после срабатывания ивента на клиенте, но перед повторным взводом его в режим ожидания, может закоммититься несколько транзакций. Т.е. клиент после этого получит одно уведомление с несколькими ID. Архитектурно - те же яйца, просто безопасней на практике.
Привет Дима.
А в очередь их никак не выстроить?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093459
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrв промежуток времени после срабатывания ивента на клиенте, но перед повторным взводом его в режим ожидания, может закоммититься несколько транзакций. Т.е. клиент после этого получит одно уведомление с несколькими ID. Архитектурно - те же яйца, просто безопасней на практике.

Несколько - это сколько в риали? 100? 1000? Фигня по сравнению с мировой революцией. А вот записей - да, может быть и 10 000 000. Тебя же философии ещё успели поучить, в отличие от нынешнего поколения, должен понимать, что количество переходит в качество не непрерывно, а диалектическим скачком.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093468
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уточняю свою позицию. Я не против данной фичи, при условии ее эффективной и безопасной реализации. Amris не даст соврать, как давно эта работа началась. Но на сабжевый вопрос буду продолжать отвечать "патамучта". Ибо тема уже набила оскомину. А большинство хотельщиков - неумытые извращенцы, истязающие себя с особым цинизмом. Прикручивать к ивентам событийную семантику - архитектурное зло. Альтернативные варианты (в том числе предложенный current_transaction) рассматриваются, но с низким приоритетом. У меня на эту тему все.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093476
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйА в очередь их никак не выстроить?

можно, но тогда придумай для них новый термин и напиши новый код. К ивентам это уже отношения иметь не будет.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093489
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr ЛентяйА в очередь их никак не выстроить?

можно, но тогда придумай для них новый термин и напиши новый код. К ивентам это уже отношения иметь не будет.

Пажди-пажди-пажди. Чё-т я окончательно запутался как ты эти параметры видишь. Промой мозги плиз:

Event 'MyEvent'+Param в случае множественного срабатывания это

MyEvent 1,2,3

или

MyEvent 1
MyEvent 2
MyEvent 3
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093490
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris Mirddinколичество переходит в качество не непрерывно, а диалектическим скачком

для вас все вполне приемлемо, спору нет. Но яйца с точки зрения реализации в обоих случаях безумно схожи. А я уже не уверен, что предложенный мной 5 лет назад вариант действительно красив и оптимален. Ибо долго читал пейджер. Возможно, зря :-)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093503
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris MirddinEvent 'MyEvent'+Param в случае множественного срабатывания это

MyEvent 1,2,3

или

MyEvent 1
MyEvent 2
MyEvent 3

в моей реализации многолетней давности - первое. Бо второе имеет мало общего с бессмертными идеями г-на Старки. Но сейчас в моей смутной голове все это видится малость по другому:

MyEvent (3)

1
2
3

т.е. ивент со счетчиком пихаются клиенту насильно, а вот параметры он вытягивает сам, если они ему нужны. Эдакое сочетание push+pull, синхронизированный кентавр DMBS_ALERT+DMBS_PIPE (в терминологии оракла).
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093532
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr[quot Amris Mirddin]Event 'MyEvent'+Param в случае множественного срабатывания это

MyEvent 1,2,3

или

MyEvent 1
MyEvent 2
MyEvent 3

в моей реализации многолетней давности - первое. Бо второе имеет мало общего с бессмертными идеями г-на Старки.

Иопть. А я-то, дурень, мыслил в плане второго. И жаль и странно, что в бессмертном не так, оно как-то имхо органичнее - событие отличающееся от предыдущего, неважно чем, есть другое событие.

dimitr
Но сейчас в моей смутной голове все это видится малость по другому:

MyEvent (3)

1
2
3

т.е. ивент со счетчиком пихаются клиенту насильно, а вот параметры он вытягивает сам, если они ему нужны. Эдакое сочетание push+pull, синхронизированный кентавр DMBS_ALERT+DMBS_PIPE (в терминологии оракла).

На первый взгляд кривенько как-то - раз параметры заказывали, значит они будут нужны вроде как скорее всего всегда. Очередь на клиенте была бы логичнее чем лазать за ней на сервер. Гридорефрешераторов приструнит пожалуй, а вот репликаторам-логоводам лишние телодвижения. Настораживают не как таковые, а дополнительными задержками, и, пожалуй, относительно немалыми.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093572
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris Mirddinжаль и странно, что в бессмертном не так, оно как-то имхо органичнее - событие отличающееся от предыдущего, неважно чем, есть другое событие

событие есть строка, на которую подписывается клиент. Отсюда вывод - параметр не есть часть события.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093576
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, dimitr!
Ты пишешь:

dimitrd> событие есть строка, на которую подписывается клиент.
d> Отсюда вывод - параметр не есть часть события.Походу. Подписку по маске, сложно сделать?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093578
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем, так. Буду писать статью про то, как эти долбаные ивенты задумывались, как были сделаны и как работают. С мега-доскональными деталями. После чего все курят оный опус. В конце лета тему продолжим.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093583
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийПодписку по маске, сложно сделать?

с этого я и начинал. По сути те же яйца.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093584
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, dimitr!
Ты пишешь:

dimitr МимопроходящийПодписку по маске, сложно сделать?
d> с этого я и начинал. По сути те же яйца.Ну, тебе виднее...

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093595
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr Amris Mirddinжаль и странно, что в бессмертном не так, оно как-то имхо органичнее - событие отличающееся от предыдущего, неважно чем, есть другое событие

событие есть строка, на которую подписывается клиент. Отсюда вывод - параметр не есть часть события.

Нда. Вот к чему приводит отклонение от общесистемных принципов при проектировании подсистемы. Это как с денормализацией - никогда не делай её вместо, а только кроме, а то самая извращённая фантазия не поможет предугадать когда и на какие грабли наступишь при малейшей подвижке постановки. Нет чтоб rdb$events, возможность подписаться только на зарегистрированные там события и к ним уже хоть колбасу привязывай - не, притянутые за уши строки на клиенте, клиент вмешивается в серверную логику и она начинает зависеть от того, что ни малейшим боком к серверу не относится... В общем ты как всегда прав, самое разумное - забить до лучших времён. Как оно есть, оно почти неюзабельно, переделывать капитально - заломаешь тучу действующих приложений, пристраивать сбоку другой правильный мезонинчик - не настолько велика потребность, есть чем заняться более практически востребованным...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093826
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv3. для отлова удалений все несколько сложнее. Или на удаления надо положить, если их нет, или сделать отдельную таблицу, параллельную исходной, и при удалении складывать туда идентификаторы (pkfield) удаленных записей. Тут, правда, с генераторами ничего не выйдет, т.к. записи могут удаляться как попало, поэтому если требуется проверять "удаленные за сегодня", то надо добавить в ПК этой доп. таблицы еще и столбец типа DATE.
(тут бы и удалить эти записи в буфере клиентдатасета)


я далеко не гуру, и очень боюсь, что на меня накричат, мол велосипед ... но я делаю так (вариант 100% рабочий):

в таблицах, за изменением которых надо следить, заводятся дополнительно 2 поля:

FCHANGECNT integer,
FDEL integer

FCHANGECNT - заполняется из отдельного генератора при любом измении или добавлении
FDEL изначально =0, если хотим удалить запись, то ставим его в 1, и не забываем перезаполнить FCHANGECNT из генератора

а теперь, на клиенте, когда первый раз грузим табличку, выполняем select * from tabler where FDEL=0, запоминаем максимальное FCHANGECNT, которое встретим в ней, грузим только с FDEL=0

а если хотим обновить табличку, выполняем select * from table where FCHANGECNT>(значение, запомненное клиентом)
для каждой полученной этим запросом записи 3 варианта:
1. если запись с таким ПК в локальном буфере уже есть и новое FDEL=1, то удаляем ее из локального буфера,
2. если запись с таким ПК в локальном буфере уже есть, то перезаписываем остальные поля из полученной записи в буфер
3. если заиси с таким ПК нет, добавляем ее в лок. буфер

конечно, для реализации этой логики пришлось написать свой компонент :((
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093828
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, забыл уточнить, после обновления опять-таки надо запонить максимальное значение FCHANGECNT, чтобы обновлять в следующий раз
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093836
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот не по теме. Если у меня 200 пользователей и я каждого подпишу на 2 события, много ли будет проблем. Есть, в принципе возможность евенты не юзать, но сними удобнее. В общем при таких условиях юзать или не юзать?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093929
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабасконечно, для реализации этой логики пришлось написать свой компонент :((
А компонентом, в исходниках, не поделишся?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33093988
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЕсли у меня 200 пользователей и я каждого подпишу на 2 события, много ли будет проблем.

что ты называешь проблемой?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094013
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лебедкин Карабас Барабасконечно, для реализации этой логики пришлось написать свой компонент :((
А компонентом, в исходниках, не поделишся?

думаешь, он тебе понравится ?

1. он не потомок датасета, представляет собой TList с записями, т.е. в дбгриде его не отобразить :)) умеет только в DrawGrid отображаться
2. в гриде редактор не предусмотрен
3. транзакция у каждого компонента своя (ну так исторически сложилось, а переделывать сейчас некогда и неохота)
4. он на бильдере сделан, в дельфи проблемы могут быть
5. работат только с integer, double precision, varchar, char

ну и т.д. и т.п. вобщем заточен под мои конкретные нужды ...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094045
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrв общем, так. Буду писать статью про то, как эти долбаные ивенты задумывались, как были сделаны и как работают. С мега-доскональными деталями. После чего все курят оный опус. В конце лета тему продолжим.
Кстати, спасибо за чтиво на ночь . Я лично при сочинении запроса всегда абстрактно представляю, как с ним будет разбираться сервер. Надеюсь с прочтением статьи мои абстрактные представления стали ближе к реальности . И по поводу Event-ов - в этой ветке тоже наступило некое просветление. А уж когда статья будет...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094059
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4. В билдере мне и надо (вернее предподчительние)
1. Мда - а я думал именно потомок DS
Для связи с сервером IB API использует или IBX/FIB?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094116
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛебедкинДля связи с сервером IB API использует или IBX/FIB?
IBX - цепляется компонет к IBDatabase, создаются внутренние IBSQL, IBTransaction (2 штуки - на чтение и на модификацию, хотя особого смысла в 2-х нет, т.к. он читает данные и всегда завершает транзакцию)

да, еще, он не расчитан на квотированные идентификаторы, все имена полей приводит к одному регистру

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

мне не жалко, могу и выложить исходники, только ведь сам потом ко мне придешь, мол то не так, да это не эдак
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094173
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кхм.

Вполне можно совместить при визуализации/редактировании данных синхронное отображение без перечитывания всего набора данных. Просто нужно несколько иначе рассматривать методы отображения и синхронизации. Чтобы трафик не нагружать, не требовать от эвентов IB того, что они не могут, и чтобы картинка на экране не мельтешила.

Сразу скажу - без Bold, хотя идею стянул оттуда; все "стандартными" средствами. Ну, почти стандартными.

С использованием эвентов InterBase.

Проверено и запущено - работает.

Кому действительно нужно, могу прислать демку и рассказ "о том, как.", пишите на e-mail. Только без обсуждения того, нужно это или нет - это просто есть, сделано и работает.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094206
fynda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mv
Проверено и запущено - работает.
Кому действительно нужно, могу прислать демку и рассказ "о том, как.", пишите на e-mail.

Ты лучше по прошлой теме отчитайся, а то только тайну наводишь, а как рассказать - так нет тебя :(
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094225
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrчто ты называешь проблемой?
В 1.0 кажеться были проблемы с событиями, при отваливании коннекта.
Но вообще, проблема в том, что в короткий срок туева хуча народу должна заколотить туеву хучу данных, да докучи еще столько же делают отчеты. Не хотелось бы иметь напрягов с производительностью. (А кстати, в FB HASH JOIN планируется? )
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094228
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабасда, еще, он не расчитан на квотированные идентификаторы, все имена полей приводит к одному регистру

это фигня все - некритично

Карабас Барабас
короче, ограничений куча, единственный плюс - возможность обновления больших наборов данных на клиенте
так это и есть главная фишка

Карабас Барабас
мне не жалко, могу и выложить исходники, только ведь сам потом ко мне придешь, мол то не так, да это не эдак
давай файл с основной логикой идеи, я использовать твой компонент, как таковой, не сбираюсь, мне идея понравилась - хочу подробно разобраться.
Ну, возможно, задам еще пару вопросов что там для чего.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33094301
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут основные методы: LoadFromDB и UpdateFromDB
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33532892
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, понадобилось тоже заняться этой ерундой интересной темой. Собственно, вполне подойдет, думаю, способ с пометкой записей timestamp или счетчиком обновления таблицы и последующей выборкой на клиента записей, измененных с момента последней выборки. А что касается опасности пропуска записей, между получением метки и завершением транзакции которых клиент успеет произвести выборку - то не так это и страшно.
Назад в будущееВремя... У меня сколько угодно времени! У меня машина времени!
Можно брать записи не с момента последней выборки, а чуть раньше. Ну да, записи будут рефрешиться повторно, но ведь это
Amris MirddinФигня по сравнению с мировой революцией.
Конечно, если сидят сотни машинисток, то это уже будет серьезной проблемой, но ведь в реальности это редкость.
А если теоретически. Неужели нельзя отследить момент пропуска записей? Теоретически количество событий (а ведь мы его знаем, не так ли?) должно быть не больше, чем количество обновленных записей при очередной выборке (на каждое закомиченное обновление получаем одно событие). Если вести лог изменений в отдельной таблице, то достаточно подсчитывать количество событий и количество выбранных из лога записей. А если не вести лог, а ограничиться метками в основной таблице? Тогда можно завести поле "версия" и в after update делать NEW.Версия = OLD.Версия + 1 . Тогда при выборке where Update_ID > :LastUpdateID суммировать разницы версий (между полученной из базы и локальной - полученной ранее) для всех обновленных записей и сравнивать с количеством полученных событий.
Ну а если обнаружили "недосдачу", то откатываться назад до тех пор, пока количество событий и количество обновленных записей как минимум не сравняются.

Трава хороша, но одному курить скучно.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33532900
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sextonспособ с пометкой записей timestamp или счетчиком обновления таблицыесли ты используешь счетчик обновлений, то пропуска быть не должно, если я все правильно понимаю
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33532906
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под окатом назад можно теоретически понимать, например, повтор выборки с постепенным уменьшением LastUpdateID (если установить сразу в 0, то будет FullRefresh, так?).
Да, речь идет о случае отсутствия удалений (или предположении, что отслеживание удалений нас не интересует).
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33532910
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас Sextonспособ с пометкой записей timestamp или счетчиком обновления таблицыесли ты используешь счетчик обновлений, то пропуска быть не должно, если я все правильно понимаю
Неправильно, ибо тынц.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33532917
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonНеправильно, ибо тынц.дак ты храни на клиенте последнее значение счетчика, зачем из генератора брать ? или я чего-то не догоняю ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33532931
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sextonв after update делать NEW.Версия = OLD.Версия + 1
Ой, after update, конечно, заменить на before update, а в before insert делать NEW.Версия = 1
Карабас Барабасдак ты храни на клиенте последнее значение счетчика, зачем из генератора брать ? или я чего-то не догоняю ?

Еще раз тынц внимательнее. Зачем там сравнене с генератором (то есть, хуже то не будет, но зачем?), я и сам не понял. Там суть не в этом. Ну и
Код: plaintext
1.
2.
3.
4.
1) Транзакция1. В триггере обновления получили текущее время (или счетчик обновления из генератора).
2) Транзакция2. Получили и установили текущее время (счетчик обновления). Завершили транзакцию с генерацией события.
3) Клиент. Прочитал все изменения с момента последней выборки. Запомнил время (счетчик) последнего изменения.
4) Транзакция1. Установли текущее время (счетчик), прочитанное ранее. Завершили транзакцию с генерацией события.
5) Клиент. Читает изменения с момента последней выборки, но не видит запись Транзакции1!
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534019
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, дак ты совсем про другое

PS: А ты зачем полугодовалый топик поднял ?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534099
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас БарабасА ты зачем полугодовалый топик поднял ?
Возникла необходимость сделать автообновление данных при многопользовательской работе. Столкнулся с проблемами реализации. Стал искать топики на эту тему, чтобы найти ответы, а нашел описание тех же самых проблем.
Так как тема далеко не новая, то поднял старый топик, чтобы новый не плодить.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534120
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonТеоретически количество событий (а ведь мы его знаем, не так ли?) должно быть не больше, чем количество обновленных записей при очередной выборке (на каждое закомиченное обновление получаем одно событие).
Уточнение. Общее количество полученных событий должно быть не больше, чем общее количество обновленных записей.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534122
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonВозникла необходимость сделать автообновление данных при многопользовательской работеКак один из вариантов - способ, описанный мною же, тут же, там и удаленные записи отслеживаются

/topic/187250&pg=-1#1586487
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534142
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonУточнение. Общее количество полученных событий должно быть не больше, чем общее количество обновленных записей.Да нафига вобще обновление делать по событию ? Чтобы все моргало непрерывно ? Даже если ты ограничишь обновления по минимальному промежутку между ними, все равно это неудобно. Мое ИМХО состоит в том, что только пользователь должен решать, когда ему надо увидеть обновленные данные.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534215
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас SextonВозникла необходимость сделать автообновление данных при многопользовательской работеКак один из вариантов - способ, описанный мною же, тут же, там и удаленные записи отслеживаются

/topic/187250&pg=-1#1586487

Так и я пришел к такому же способу в конце концов (только мне больше понравился вариант с timestamp, так как timestamp у меня все равно используется). И в реализации прост, учитывая, что формы у меня генерятся автоматом. Гонял возможные варианты работы этого метода и понял, что теоретически может быть пропуск данных. Думал, умные люди знают, как сделать правильно. А умные люди пишут о той же самой проблеме.
Стал думать дальше и пришел в голову способ, который сюда и запостил: может кто подскажет, где в нем ошибка.
Карабас БарабасДа нафига вобще обновление делать по событию ? Чтобы все моргало непрерывно ? Даже если ты ограничишь обновления по минимальному промежутку между ними, все равно это неудобно. Мое ИМХО состоит в том, что только пользователь должен решать, когда ему надо увидеть обновленные данные.

А с чего будет моргать? Как правило, в событии обновляется всего несколько записей (а в большинстве случаев одна). Разумеется, запоминаю состояние курсора и отключаю обновление Data-Aware компонентов, а потом все это восстанавливаю. Разумеется, если DataSet не в dsBrowse, данные кладутся в буфер и выбираются из него, как только DataSet переходит в этот режим.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534380
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonА с чего будет моргать? Как правило, в событии обновляется всего несколько записей (а в большинстве случаев одна). Разумеется, запоминаю состояние курсора и отключаю обновление Data-Aware компонентов, а потом все это восстанавливаю. Разумеется, если DataSet не в dsBrowse, данные кладутся в буфер и выбираются из него, как только DataSet переходит в этот режим.может быть, я не прав, может быть ты права ... (С) Бутусов
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534413
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабасможет быть, я не прав, может быть ты права ... (С) Бутусов

Да не так это и важно. Идеальных решений все равно нет.
Я просто выложил способ, так как не могу обнаружить в нем проколов. Вдруг кто-то другой сможет. Может, предположние, что всегда известно количество посланных из базы событий не верно, может еще чего...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534644
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никогда не возникало необходимости динамически обновлять наборы данных на клиенте. Обычно вешаю на форму кнопочку "Обновить" и пользователю этого достаточно. Ну и сам при необходимости refresh выполняю. Перед редактированием к примеру. Ну да ладно...
Вот интересно, как народ поступает с добавленными записями. На клиенте висит набор данных уфильтрованный и засортированный ползателем насмерть. И тут приходит event, по поводу того, что запись с id таким-то добавили. И чего делать? Считать эту запись с сервера, потом на клиенте разбираться попадает ли она под условие в selectsql? А там черте-что может быть. Это-ж на клиенте еще один мини-сервер под эту фигню реализовать надо. Ну и с сортировкой не проще...
Или просто переоткрыть Query? Тогда нафига пляски с event-ами? Да и может переоткрытие операция серьезная (висим n минут пока сервер запрос выполнит, и соседи тоже не в восторге). А в результате ползателю эта запись нафик не нужна была...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534889
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лентяй
Вот интересно, как народ поступает с добавленными записями. На клиенте висит набор данных уфильтрованный и засортированный ползателем насмерть. И тут приходит event, по поводу того, что запись с id таким-то добавили. И чего делать?
TpFIBDataSet.CacheAppend(id, true)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33534974
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sexton Лентяй
Вот интересно, как народ поступает с добавленными записями. На клиенте висит набор данных уфильтрованный и засортированный ползателем насмерть. И тут приходит event, по поводу того, что запись с id таким-то добавили. И чего делать?
TpFIBDataSet.CacheAppend(id, true)
И чего, FibDataSet при этом распарсит Sql-оператор в SelectSql проверит, попадает ли добавляемая запись под where кляузу и решит, нано ли вставлять этот id в локальные буфера DataSet? Если да, снимаю шляпу.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33535347
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лентяй
И чего, FibDataSet при этом распарсит Sql-оператор в SelectSql проверит, попадает ли добавляемая запись под where кляузу и решит, нано ли вставлять этот id в локальные буфера DataSet? Если да, снимаю шляпу.
Fib просто вставит запись в локальный буфер, а потом сделает для нее Refresh.
А по теме вопроса, есть ли просчеты в предложенном способе так никто ничего...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33535363
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет проблем.
Но платно
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33535373
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris MirddinДа нет проблем.
Но платно

Да меня бы устроила даже инфракрасная коагуляция анальной трещины: да, нет. Ну а потом можно и комментарии добавить.
Вопрос ведь не практический, а так - спортивный.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33535403
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris Mirddin Но платно Я плакаль! Сцылку в мемориз!
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33535575
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот еще интересная ситуация (вариаций много придумать можно). Имеем SelectSQL такого скажем вида:
Код: plaintext
1.
2.
3.
Select тыры-пыры , S.Name
From Tbl t
Left join Spr s on S.Id = T.Id
Сосед добавляет/изменяет/удаляет записи в Spr - чего делать? Писать на каждый Select свой обработчик прихоящих Event?
Ладно, это цветочки. А что вот с этим делать?
Код: plaintext
1.
2.
Select тыры-пыры from Tbl1
where not exists (select  1  from Tbl2 Where Tbl2.Fld_m = Tbl1.Fld_n)
Предположим мы исхитрились и написали обработчик Event-ов для такого select-а (для конкретного select-а проблема решаемая, а вот универсальное решение, как я говорил - мини-сервер на клиенте . Дальше начинаем издеваться над пользователем:
Удаляем запись из Tbl2 и, о чудо, - у соседа добавляется тысченка-другая записей в гриде. Класс, теперь вставляем другую запись в Tbl2 - у соседа пропадет сколько-там записей из грида. Или вааще все. А теперь корректируем значение какой нибудь записи - у соседа какая-то часть записей пропадает, и еще сколько-то добавляется...

Вообщем на select-ах чуть сложнее палки и веревки проктология становиться все очевиднее...
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33536245
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛентяйА вот еще интересная ситуация (вариаций много придумать можно). Имеем SelectSQL такого скажем вида:
Код: plaintext
1.
2.
3.
Select тыры-пыры , S.Name
From Tbl t
Left join Spr s on S.Id = T.Id
Сосед добавляет/изменяет/удаляет записи в Spr - чего делать? Писать на каждый Select свой обработчик прихоящих Event?

Один обработчик вешается сразу на события от всех таблиц, входящих в запрос (на Фибах получить список таблиц элементарно). В обновляющем запросе используется тот же select, что и в основном, с наложением дополнительного условия Datastamp >= :LastDataStamp (ну или кому что нравится). Дата (или счетчик - опять же, кому что нравится) обновления записи берется максимальная между t.Дата и s.Дата. Версия записи определяется суммированием t.Версия+s.Версия. Далее все сводится к случаю с одной таблицей.
Но с одним условием: в составном select'е должны учавствовать только таблицы, связанные 1:1, причем выбираться должны все записи. Иначе, нарушится связь между количеством событий и количеством выбранных версий. То есть, в общем случае метод с версиями не подходит и отследить пропуск записей при обновлении невозможно, что и требовалось доказать. Доказано Лентяем

Получается, что обновление действительно проще делать по таймеру с выборкой записей, измененных с момента последней выборки минус какое-то "буферное время", а события использовать лишь для того, чтобы не делать "холостые" обновления: если между тиками не произошло событий, то и обновлять нечего.
Лентяй
Ладно, это цветочки. А что вот с этим делать?
Код: plaintext
1.
2.
Select тыры-пыры from Tbl1
where not exists (select  1  from Tbl2 Where Tbl2.Fld_m = Tbl1.Fld_n)
Предположим мы исхитрились и написали обработчик Event-ов для такого select-а (для конкретного select-а проблема решаемая, а вот универсальное решение, как я говорил - мини-сервер на клиенте . Дальше начинаем издеваться над пользователем:
Удаляем запись из Tbl2 и, о чудо, - у соседа добавляется тысченка-другая записей в гриде. Класс, теперь вставляем другую запись в Tbl2 - у соседа пропадет сколько-там записей из грида. Или вааще все. А теперь корректируем значение какой нибудь записи - у соседа какая-то часть записей пропадает, и еще сколько-то добавляется...

Реальный пример этого случая мне в голову не пришел, но не важно - мы же рассуждаем теоретически.
Такой запрос не сделает то же самое, но без подзапроса:
Код: plaintext
1.
2.
3.
Select тыры-пыры from Tbl1
left join Tbl2 on Tbl2.Fld_m = Tbl1.Fld_n
where Tbl2.Fld_m is NULL
? Это вопрос: проверяю, правильно ли я усвоил тынц .

Как я написал выше, удаление я не рассматриваю: в моем случае удаление отсутствует по причине необходимости репликации, а лог вести не хочется. К тому же, желательна необходимость восстановления недавно удаленных записей. Так что удаление делается пометкой записи на удаление. Время от времени записи, помеченные на удаление "давно" удаляются физически. Вообщем, типичный проктологический способ. Невозможность вставки записи с такими же значениями уникальных полей, что и у помеченных на удаление записей не считается проблемой.
А что мешает помечать записи в запросе?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Select
  тыры-пыры,
  case
  when Tbl2.Fld_m is NULL or Tbl2.IS_DELETED =  1  then  0 
  else  1 
  end IS_DELETED
from Tbl1
left join Tbl2 on Tbl2.Fld_m = Tbl1.Fld_n
Разумеется, обновляющая выборка должна выбирать как помеченные, так и не помеченные на удаление записи.
Далее все сводится к предыдущему случаю, который сводится к случаю с одной таблицей (но в общем случае уже без отслеживания соответствия версий событиям).

А вот проблема с тем, что одновременно может измениться большое количество записей - это реальная проблема, согласен. В этом случае можно делать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
КоличествоВыбранныхЗаписей :=  1 ;
while not ОбновляющаяВыборка.Eof do
begin
  if КоличествоВыбранныхЗаписей > Много then
  begin
    Button1.Caption := 'Юзер, тут много инфы пришло, нажми сюда для обновления';
    Break; // Ну его нах, столько обновлять!
  end
  else begin
    ОбновляемТекущуюЗаписьИзОбновляющейВыборки;
    ОбновляющаяВыборка.Next;
    Inc(КоличествоВыбранныхЗаписей);
  end;
end;
Полностью согласен, что каждый запрос должен рассматриваться индивидуально в базе. А вот клиента универсальным вполне можно сделать. ;-)
Лентяй
Вообщем на select-ах чуть сложнее палки и веревки проктология становиться все очевиднее...
Покупал я сканер сестре недавно. Выбрал по инету подходящую модель со слайд-модулем. В одной комп. фирме ее не оказалось и мне стали впаривать совершенно другую: более старую, более дорогую и без слайд-модуля. Все свелось к попытке убедить меня, что слайд-модуль не так уж и нужен, что сестра вполне может обойтись и без него. Справедливо? Да, наверное. Да, в фотолаборатории сделают все качественнее, чем получится на слайд-модуле бытового сканера. Но в итоге заказ был сделан в другой фирме, где этой модели также не было: ее без лишних вопросов поставили в заказ и через некоторое время привезли.
Отсюда вывод: заказчика не должны интересовать технические проблемы исполнителя. :)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33536259
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonПолучается, что обновление действительно проще делать по таймеру
получается, что обновление НЕ надо делать ни по таймеру, ни по евентам....
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33536296
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv SextonПолучается, что обновление действительно проще делать по таймеру
получается, что обновление НЕ надо делать ни по таймеру, ни по евентам....
Эх, да я понимаю. Но ведь если хочется. Если сделать этот несчастный таймер и сделать возможность его отключения, то хуже-то никому не будет, верно? ;-)
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537116
Amris Mirddin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ведь воисстину - когда коту нехрен делать, он себе яйцы лижет
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537152
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris MirddinВот ведь воисстину - когда коту нехрен делать, он себе яйцы лижет +1 И это продолжается на протяжении нескольких страниц.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537269
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amris MirddinВот ведь воисстину - когда коту нехрен делать, он себе яйцы лижет
Да ну знаю я, знаю, что это "грязная работа" (в смысле, не качественная). Но даже если отказаться от синхронизации изменения между пользователями, остается еще необходимость синхронизации изменений между датасетами одного приложения. Если юзер меняет название организации и не наблюдает этого изменения в ранее открытой накладной или отчете, это его сильно огорчает. Делать синхронизацию вручную... нуу... когда-нибудь потом.

А пока что всех одной шашкой и ниипет.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537277
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonА пока что всех одной шашкой и ниипет. фпотку
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537334
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас SextonА пока что всех одной шашкой и ниипет. фпотку
Ох, праведники все. Да я бы тоже Windows переписал, чтобы он безглючным был, и 1С бы переделал... и мир бы во всем мире... Но увы, суровая реальность: юзеру не нужны красивые технические решения, ему нужно, чтобы в срок и чтобы как-то работало.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537349
Лентяй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати вспомнилось, что когда я впервые прочитал про events первая мысль именно такой и была. Обновлять данные на клиенте. С интернетом тогда было не очень, поэтому потыркался сам. Единственный прок от тырканья был в том, что более детально разобрался с уровнями изоляции транзакций. Помню тогда попутно родилась такая схема - в триггерах пишуться в спец табличку сведения об изменениях в БД с id измененной записи, именем пользователя и еще чем-то, там же посылается Event. Рядом с сервером висит приложение, которое ловит event-ы от сервера, вычитывает данные из этой таблички и своим протоколом уведомляет клиентов об изменениях, передавая при этом необходимые параметры... Но потом, когда начал пытаться реализовывать все это хозяйство на реальных наборах данных, а не на просто на тестовой табличке - быстро пришел к выводу, что овчинка выделки не стоит. Да и других, РЕАЛЬНЫХ, задач было выше крыши. Поэтому забросил тогда это дело очень быстро и до сих пор как-то обхожусь...

P.S. Разобразись тут наконец с моей машиной. Плохо заводилась в морозы. Полетел (как-то с извратом) датчик температуры. Компьютер офигевал и лил слишком много бензину. Причем когда ее всеж-таки удавалось завести, через какое-то время датчик начинал работать нормально. Как раз в это время я подъезжал к ремонту и подключался к диагностическому компьютеру... Попутно вылезла еще одна ошибка которая мне понравилась : "Слишком низкий уровень шума двигателя".
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537358
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sextonчтобы в срок и чтобы как-то работало.нет ничего проще и надежнее, чем кнопка "обновить"
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537393
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабаснет ничего проще и надежнее, чем кнопка "обновить"

Это мы знаем. Но этого юзер не знает. А объяснять юзеру, что ему больше идет синий, когда он хочет красный - не в моих правилах. Хочет сомнительную фишку? Пожалуйста. А также кнопочку для отключения и ручной заменитель, когда автоматика надоест. Я свою задачу выполнил? Выполнил. Юзер доволен? Доволен. А что мне еще надо?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537668
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonДа ну знаю я, знаю, что это "грязная работа" (в смысле, не качественная). Но даже если отказаться от синхронизации изменения между пользователями, остается еще необходимость синхронизации изменений между датасетами одного приложения. Если юзер меняет название организации и не наблюдает этого изменения в ранее открытой накладной или отчете, это его сильно огорчаетА нехрен открывать накладную в немодальном окне. Нет такой необходимости - водить более одного докУмента одновременно
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537792
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА нехрен открывать накладную в немодальном окне.
Нет такой необходимости - водить более одного докУмента одновременноУ меня недавно по этому поводу дискуссия была. Щас глчну чем там закончилос.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33537930
Михаил К.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА нехрен открывать накладную в немодальном окне. Нет такой необходимости - водить более одного докУмента одновременно
При всем моем уважении - к сожалению есть. Например необходимость обработки более срочного заказа, при этом пользователи почему-то не хотят закрывать текущий заказ, вот и открывают еще одну копию программы. А для немодальных окон есть куча способов решить проблему с уведомлением.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33538043
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил К.Например необходимость обработки более срочного заказа, при этом пользователи почему-то не хотят закрывать текущий заказ, вот и открывают еще одну копию программы. А для немодальных окон есть куча способов решить проблему с уведомлением.1. Закрыть (откатить) текущую накладную.
2. Передать другому оператору.
3. Открыть вторую копию программы (как это ни некрасиво).
4. Делать модальность на уровне родителя, а не на уровне приложения (хотя лично я от нее отказался).
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33538151
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА нехрен открывать накладную в немодальном окне. Нет такой необходимости - водить более одного докУмента одновременно
У меня можно открыть любое количество форм, таблиц, отчетов и склеить друг с другом в любом сочетании. Не, не, спорить не буду: изврат и еще какой.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33538170
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sextonсклеить друг с другом в любом сочетанииЧего-чего?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33538194
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам Sextonсклеить друг с другом в любом сочетанииЧего-чего?
Docking windows
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33538198
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonDocking windowsА зачем? Чтобы было попроктологичнее?
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33538211
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам SextonDocking windowsА зачем? Чтобы было попроктологичнее?
Ну вот, я же предупреждал:
Sextonспорить не буду: изврат и еще какой.

Лень мне было формочки расставлять. А так они генерятся в виде отдельных табов внизу главной формы при выборе юзером формы в дереве компонентов (типа дельфийского), а юзер может табы-формы отрывать и располагать в нужных ему порядке и комбинации с автозапоминанием заданного положения. Надо мне с ленью как-то бороться.
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #33538215
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sexton Гаджимурадов Рустам SextonDocking windowsА зачем? Чтобы было попроктологичнее?
Ну вот, я же предупреждал:
Sextonспорить не буду: изврат и еще какой.Проехали, все равно оффтоп.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вопрос по POST_EVENT
    #39245150
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, есть новости, новые идеи, предпосылки к новым идеям... по сабжевому вопросу?

Или, возможно есть, то что Дима обещал в тут тыц .
...
Рейтинг: 0 / 0
Вопрос по POST_EVENT
    #39245160
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_,

насколько я в курсе, никаких, вопрос с масками эвентов закрыт, совсем.
Статью dimitr вроде бы не написал, да.
...
Рейтинг: 0 / 0
147 сообщений из 147, показаны все 6 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по POST_EVENT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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