powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Выполнение Dynamic Action на другой странице
33 сообщений из 33, показаны все 2 страниц
Выполнение Dynamic Action на другой странице
    #38926349
DKis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые знатоки APEX, пожалуйста подскажите, возможно ли реализовать подобную вещь:
необходимо, чтобы при нажатии кнопки на одной странице вызывался Dynamic Action на другой странице.
В чем смысл: есть несколько пользователей системы. При добавлении одним из пользователей записи в таблицу надо, чтобы у остальных пользователей, находящихся на главной странице в текущий момент, появлялось сообщение о том, что кто-то только-что добавил в ту таблицу новую запись.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926361
Gustly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DKis,

Это получается нужно чтобы сервер сделал мульти рассылку всем. Нет, просто так нельзя. Самое быстрое решение - это самому опрашивать таблицу каждые n секунд. Или сложное решение через node.js. Но ради такой задачи не стоит мне кажется.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926403
DKis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gustly,
Вообще задача следующая: на форме один пользователь пишет текст сообщения и выбирает кому его отправить, нажимает "Отправить". Выбранный пользователь, переходя на главную страницу, получает уведомление о том, что ему отправили сообщение.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926411
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GustlyИли сложное решение через node.js.
А при чем тут node js ? Кроме него сокеты spdy или html/2 никто из серверов не умеет ?
На апексе можно DA пинать через setTimeout( и проверятьна сервере чего изменилось.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926412
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DKisGustly,
Вообще задача следующая: на форме один пользователь пишет текст сообщения и выбирает кому его отправить, нажимает "Отправить". Выбранный пользователь, переходя на главную страницу, получает уведомление о том, что ему отправили сообщение.
Если это происходит при загрузке страницы, то никаких Dynamic Action не нужно или только как сказал Gustly.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926417
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DKisи выбирает кому его отправить
поиск делал? Вчера вроде обсуждали.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926426
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример клиентской части
Всплывающие сообщения вот этим http://needim.github.com/noty/

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
    <script language="JavaScript" type="text/javascript">
        function NotifiClose(msg){            
            var get = new htmldb_Get(null, $v('pFlowId'), 'APPLICATION_PROCESS=CloseNotification', 0);
            get.addParam('x01',msg.options.msg_id);
            var greturn = get.get();
            greturn = undefined;
        }
        
        function GetNotifiData(){
            var timecoef = 1000;
            var get = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=GetNotification',0);
            //get.addParam('x01', node.data.key);
            var greturn = get.get();
            var results;
            try{
                results = $.parseJSON(greturn);
            }catch(e){
                results = {};
            }
            
            greturn = undefined;

            var timing = 180;
            if (results.timing && results.timing > 0){
                timing = results.timing;
            }
            if (results && results.messages){
            for (var i = 0; i < results.messages.length; i++){
                if (results.messages[i].message){
                    var msgtype = 'alert';
                    if (results.messages[i].msgtype){
                        msgtype = results.messages[i].msgtype;
                    }
                    var timeout = false;
                    if (results.messages[i].timeout && results.messages[i].timeout > 0){
                      timeout = results.messages[i].timeout*timecoef;
                    }
                    var buttons = false;
                    if (results.messages[i].msg_id && results.messages[i].confirm && results.messages[i].confirm == 1){
                        buttons = [{
                            addClass: 'btn btn-primary', text: 'Ok', onClick: function ($noty) {
                                var get = new htmldb_Get(null, $v('pFlowId'), 'APPLICATION_PROCESS=ConfirmNotification', 0);
                                get.addParam('x01',$noty.options.msg_id);
                                var greturn = get.get();
                                greturn = undefined;
                                $noty.close();
                            }                          
                        }]    
                    }    
                    var notification = noty({
                        layout: 'bottomRight',
                        type: msgtype,
                        text: results.messages[i].message,
                        msg_id: results.messages[i].msg_id,
                        timeout: timeout,
                        callback: {
						  onCloseClick: function(){
                              NotifiClose(this);
                          }
                        },
                        buttons: buttons
                    });
                notification = undefined;    
                }
            }
            }    
            setTimeout(GetNotifiData,timing*timecoef);
        }

        $(document).ready(function(){
            GetNotifiData();
        });
    </script>
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926534
DKis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casufi,
не могли бы пояснить, как это работает?
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926551
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DKisCasufi,
не могли бы пояснить, как это работает?
С яваскриптом дружишь ?
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926559
DKis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casufi,
Не очень, если честно.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926560
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CasufiDKisCasufi,
не могли бы пояснить, как это работает?
С яваскриптом дружишь ?
обычно чата и реалтайм хотят те, кто не дружит)
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926562
DKis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Обычно этого хотят работодатели. Чтобы все сразу и не хуже, чем "у того парня") Вот и приходится на ходу технологии новые для себя осваивать. Я простейшие вещи на яваскрипте делал, синтаксис знаю. Но далеко-далеко не гуру. Только учусь.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926563
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DKisне могли бы пояснить, как это работает?
Он деманд процесс GetNotification выдает json в формате
{timing : задержка перед следующей проверкой сообщений(если необходимо ее изменить)
messages: [пачка сообщений в формате]
{msgtype: тип,
timeout : время сколько будет висеть перед пользователем,
confirm : просто сообщение илитребует подтверждения о прочтении,
message: текст,
id: ИД в таблице по которому два другие процессса проставляют статус}

Процессы CloseNotification и ConfirmNotification Проставляют статусы в таблице по ИД

Ну собственно все.
Процедура рекурсивно ставит себя на выполнение с задержкой setTimeout(GetNotifiData,timing*timecoef);

Пример работы noty() можно посмотреть на сайте
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926567
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DKisОбычно этого хотят работодатели. Чтобы все сразу и не хуже, чем "у
Ну я могу тут выложить биткойн кошелек и расписать "готовое решение" когда там наберется больше половины койна
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926575
DKis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casufi,
Нет, спасибо.
Попробую сам разобраться)
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926584
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DKis,
Обратись, к Petro123. Он без кошелька помогает. Вон одному уже почти написал приложение
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926587
DKis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelDKis,
Обратись, к Petro123. Он без кошелька помогает. Вон одному уже почти написал приложение
Мне не надо чтобы за меня писали приложение. Я всего лишь попросил у более опытных коллег задать направление возможно ли это реализовать и ести да, то в какую сторону копать.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926589
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DKis,
Не обижайся. Направление тебе дали и даже больше.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926592
DKis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да. Всем большое спасибо за ответы.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926596
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DKis,

выдать json из Он деманд процесса

htp.p('{"timing":'||l_timing||', "messages":[{"message":"'||cur.text||'"},{}]}');
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926599
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется пора в FAQ выносить тему инициализации действия на клиенте, по событию на сервере. С разъяснением, что Апекс тут не при чем, виновата технология HTML.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926606
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DKisОбычно этого хотят работодатели.
я в курсе.
Бывает и драйвера просят на Java сделать.
И фотошоп в вебе организовать.
Что делать? Только направлять этих работодателей на путь истинный))).
Ну, или увольняться.
Могут же и тонер попросить заменить)... и бумагу принести...
Ничего личного. Только IMHO. Удачи)
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926607
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelМне кажется пора в FAQ выносить тему инициализации действия на клиенте
Тут целый пласт проблем. Люди не совсем понимают что такое Веб разработка и какой код выполняется на сервере, а какой на клиенте.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926610
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CasufiblkangelМне кажется пора в FAQ выносить тему инициализации действия на клиенте
Тут целый пласт проблем. Люди не совсем понимают что такое Веб разработка и какой код выполняется на сервере, а какой на клиенте.
причём именно в этой ветке их больше, т.к. период вхождения небольшой.
Се ля ви.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926613
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelВон одному уже почти написал приложение
это пока я сам учусь))) Потом будет лень))) уйду на пенсию)
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926621
Gustly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще я бы пошел по такому алгоритму.

На клиенте держим ИД последней записи.
Каждые 5 секунд вызываем функцию которая сравнивает его с максимальным из таблицы.
Если разные, значит там новые записи.
Получаем сообщение.

Функция работает моментом - вытащить макс от ПК. База не умрет от такого.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926635
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GustlyВообще я бы пошел по такому алгоритму.

На клиенте держим ИД последней записи.
Каждые 5 секунд вызываем функцию которая сравнивает его с максимальным из таблицы.
Если разные, значит там новые записи.
Получаем сообщение.
Функция работает моментом - вытащить макс от ПК. База не умрет от такого.

Костыльных вариантов можно придумать кучу. Суть одна, пока клиент не будет держать соединение с сервером, все решения костыли.
Ведь HTML разрабатывался в век модемов, когда держать соединение это деньги,тормоза, нагрузки и т.д...



Код: plaintext
Кто знает, может кто то из нас сделает прорыв и разработает новую технологию :) 
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926784
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangelСуть одна, пока клиент не будет держать соединение с сервером, все решения костыли.
Руки прочь от Апекса, вон из веб.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38926787
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Практически в каждой теме, где люди хотят от Апекса чего то не из коробки, найдется умник, который хочет из Апекса сделать Делфи и свести тему к флуду.

blkangel
Представь себе приложение вроде asktom (он кстати написан на апексе), с тысячами (как минимум) посещений в секунду. Как масштабировать апекс, для обработки такого количества запросов, я могу себе представить, а вот как масштабировать "... пока клиент не будет держать соединение с сервером, все решения костыли. .." бог его знает.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38927677
Gustly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаем аякс запрос. В нем вызываем процедуру, внутри бесконечный цикл. В итоге получаем устойчивое соединение.

На сколько помню у аяка можно посмотреть сколько скачалось, возможно даже что скачалось. Не помню.

В цикле выдаем клиенту 1 байт как появились новые данные. Там же ставим dbms_lock.sleep(5) чтобы хоть какую-то задержку иметь.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38927699
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GustlyВ итоге получаем устойчивое соединение.
Таймаут сервера ?Кал бек аякс вызова вызыввется 4-ре раза. Кроме того, яваскрипт хоть и умеет делать асинхронные запросы, но делает это в одном потоке, бесконечный луп, без задержек, повесит тебе весь поток.
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38927700
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casufi,

Упс, *callback
...
Рейтинг: 0 / 0
Выполнение Dynamic Action на другой странице
    #38927727
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давайте лучше драйвер штрих-сканера на APEX обсудим, чем тормозить сервер с помощью клиента.
...
Если заказчик хочет опрашивать N секунд сервер для чата - флаг ему в руки.
Повесить кнопку "Нажимать F5 скрыто для проверки новостей за меня" и всех делов.
Лишь бы платил за свой "изврат".
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Выполнение Dynamic Action на другой странице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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