forum.bitel.ru http://forum.bitel.ru/ |
|
Дин код - диалоговое окно http://forum.bitel.ru/viewtopic.php?f=19&t=11483 |
Страница 1 из 1 |
Автор: | borin [ 30 мар 2016, 15:27 ] |
Заголовок сообщения: | Дин код - диалоговое окно |
Добрый день! Пишу скрипты для экшенов, для прерывания в случае ошибки использую BGMessageException, но бывают ситуации, когда нужно дать выбор оператору, что делать. Есть ли данная возможность в существующем API? |
Автор: | dimOn [ 30 мар 2016, 17:10 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
Нет, такого нет. И непонятно как сделать архитектурно. Дин код выполняется на сервере асинхронно от потока клиент-сервер. |
Автор: | borin [ 31 мар 2016, 10:36 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
dimOn писал(а): Нет, такого нет. И непонятно как сделать архитектурно. Дин код выполняется на сервере асинхронно от потока клиент-сервер. Жаль, очень нужный функционал.... |
Автор: | dimOn [ 31 мар 2016, 17:52 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
Ну так предложите - как вы видите этот функционал(ьность). Для чего это вообще? В какой момент этот дин.код будет выполняться (это же просто инструмент, который много где используется) итд. Теоретически всё это сделать можно, конечно, только неясно в каком виде. Например в событиях каких-то понятно что такое никак не сделать, т.к. непонятно куда и кому и что должно выводиться. |
Автор: | skyb [ 01 апр 2016, 05:37 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
а setError как для параметров договора? |
Автор: | dimOn [ 01 апр 2016, 12:15 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
речь то об обратной связи какой-то, о "выборе оператора" итд. вот и непонятно - в каком случае и как это должно выглядеть - выбор оператора, т.е. что при этом визуально происходит в клиенте |
Автор: | borin [ 01 апр 2016, 12:53 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
dimOn писал(а): Ну так предложите - как вы видите этот функционал(ьность). Для чего это вообще? В какой момент этот дин.код будет выполняться (это же просто инструмент, который много где используется) итд. Теоретически всё это сделать можно, конечно, только неясно в каком виде. Например в событиях каких-то понятно что такое никак не сделать, т.к. непонятно куда и кому и что должно выводиться. Ну как делаю проверку на уникальность паспортных данных в договоре, например приходит абонент с кредитным договором не гасит старый долг, и заключает договор на другой адрес. В случае проверки паспортных данных мы можем отловить таких хитрецов. Ноо бывают ситуации когда это порядочный абонент и он может заключить 2 договора, один на себя, а другой на родителей. Сейчас решили выкидывать исключение и запрещать оформлять такой договор если он не является субдоговором. В случае если б была возможность предоставить оператору выбор, могли бы предложить оператору варианты решения. Либо пропустить создание договора, либо создать иерархию с субдоговорами или нажать отмену. Ну это одна из возможных ситуаций, где это можно применить. |
Автор: | barguzin2 [ 01 апр 2016, 13:47 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
Ух. Это из разряда кнопки "Песдато!". Единственное, что считаю тут возможным - это аля Confirm, т.е. передается запрос серверу, но экшин кидает ошибку с запросом подтвердждения, на что клиент выдает "Всё равно выполнить?" и при утвердительном выборе посылается повторный запрос, в который добавляется параметр ignoreError=1, который должен как-то обрабатываться экшином. Как-то так. 1) Можно перед добавлением договора просто сделать поиск по номеру паспорта. Адрес подключения также проверять. Отдать на откуп манагерам под наставлением обещания сурового наказание за неисполнение и по расписанию запускать задачу проверки. 2) Зачем дублировать поля для субдоговора? для них можно ставить свой набор параметров и указывать только уникальные - типа адрес, дата подключения, контакт и еще может чего немного. |
Автор: | dimOn [ 01 апр 2016, 14:38 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
Да, в таком именно случае, т.е. просто обработка события, "обратная связь" в каком-то общем виде проблематична. Либо в неком кастрированном виде, типа как barguzin2 предложил. Подобный механизм Confirm/ignoreError уже используется в некоторых местах (в cerbercrypt при добавлении/удалении пакетов и обработках коллизий в них, например). Но это несколько в другом виде уже получается, просто требует ручной обработки этого механизма на клиенте, посылания повторного запроса с ignoreError=1 итд. Потому тут сложно что-то универсальное предложить. |
Автор: | skyb [ 01 апр 2016, 14:40 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
возможность создавать диалоговые окна с кнопками да/нет и обрабатывать их? |
Автор: | dimOn [ 01 апр 2016, 14:49 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
так-то вся тема об этом, начиная с самого первого сообщения ![]() |
Автор: | skyb [ 01 апр 2016, 15:26 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
я про то что дать нам возможность так создавать в динкоде |
Автор: | borin [ 01 апр 2016, 15:36 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
Да для начала хотя бы инфо окно, наподобие того когда мы заполняем адрес и выходит предупреждение что такой адрес уже есть. |
Автор: | dimOn [ 01 апр 2016, 22:35 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
skyb писал(а): я про то что дать нам возможность так создавать в динкоде что создавать? окно на сервере? ок |
Автор: | borin [ 18 авг 2016, 11:13 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
АПну тему. Появился ли инструмент для создания диалоговых окон? При написании скриптов иногда появляется потребность вызова окна не только типа ERROR, когда скрипт прерывается, но и INFO (сообщить о каком то результате), и WARNING (OK/Cancel). |
Автор: | dimOn [ 18 авг 2016, 11:23 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
BGMessageException по-прежнему работает для этих целей. Как сделать из дин.кода интерактивные диалоги — по-прежнему идей нет. |
Автор: | skn [ 18 авг 2016, 11:28 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
текущая схема работы 1) клиент посылает запрос на сервер 2) на сервер некий код обрабатывает запрос и посылает ответ 3) клиент обрабатывает ответ в каком месте здесь вставить диалог? |
Автор: | dimOn [ 18 авг 2016, 11:42 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
skn писал(а): в каком месте здесь вставить диалог? Ну, очевидно что только о п.3 тут речь, но для этого и есть BGMessageException для выдачи статического сообщения/ошибки. Любое другое что-то требует кастомной логики в каждом случае (вообще никак не связанной с механизмом дин.кода!), например в месте где выше хочется проверять паспортные данные, ну то есть в клиенте на "сохранение параметра договора" надо обработать вдруг кто-то придумает переопределить что-то в дин.коде и что-то (неизвестно пока что) вернёт, а нам надо это что-то обработать и отправить что-то обратно (куда?) чтобы дин.код снова что-то сделал. Ну и так в каждый другой потенциальный чих добавить похожий механизм. Совершенно непонятно как это предлагается сделать. И я чувствую своё объяснительное бессилие в этом вопросе. |
Автор: | borin [ 18 авг 2016, 11:50 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
skn писал(а): текущая схема работы 1) клиент посылает запрос на сервер 2) на сервер некий код обрабатывает запрос и посылает ответ 3) клиент обрабатывает ответ в каком месте здесь вставить диалог? Хм, получается можно только INFO выкидывать. На втором этапе при обработке экшена, заполняем текстовую переменную. И на третьем этапе, клиент выведет это сообщение оператору. Что уже весьма не плохо. Что касается окна OK\Cancel, в данной схеме не реализовать. Тут получается должен быть какая-то проверка, затем отправлять ответ клиенту, оператор решает да/нет, а только после этого экшен либо выполняется, либо нет. |
Автор: | borin [ 18 авг 2016, 12:08 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
Просто BGMessageException не всегда уместно, ведь это исключение, даже выполненное в конце doAction, не известно как повлияет на результат. А заполнение переменной, просто выведет сообщение оператору и код выполнится корректно. И на счет OK/Cancel, у нас в экшене есть метод doAction, добавить метод preCheck, он будет выполняться до метода doAction, что то проверит, и в зависимости, что выберет оператор в клиенте, будет принято решение выполнять ли doAction, а возможно doAction с каким то параметром. |
Автор: | skn [ 18 авг 2016, 13:14 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
borin писал(а): Просто BGMessageException не всегда уместно, ведь это исключение, даже выполненное в конце doAction, не известно как повлияет на результат. А заполнение переменной, просто выведет сообщение оператору и код выполнится корректно. И на счет OK/Cancel, у нас в экшене есть метод doAction, добавить метод preCheck, он будет выполняться до метода doAction, что то проверит, и в зависимости, что выберет оператор в клиенте, будет принято решение выполнять ли doAction, а возможно doAction с каким то параметром. любой интерактив подразумевает повторную отправку запросу серверу, его обработку и ответ т.е. мы фактически имеем два запроса на два разных акшена или один акшен в который передается разный набор параметров. Причем как из клиента повторить тот же самый запрос с дополнительными параметрами не понятно (имеется ввиду в общем случае, т.е. для любого запроса из клиента), а на сервере как то связать (передать данные) первый запрос и второй (до диалога и после). |
Автор: | borin [ 18 авг 2016, 14:32 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
skn писал(а): borin писал(а): Просто BGMessageException не всегда уместно, ведь это исключение, даже выполненное в конце doAction, не известно как повлияет на результат. А заполнение переменной, просто выведет сообщение оператору и код выполнится корректно. И на счет OK/Cancel, у нас в экшене есть метод doAction, добавить метод preCheck, он будет выполняться до метода doAction, что то проверит, и в зависимости, что выберет оператор в клиенте, будет принято решение выполнять ли doAction, а возможно doAction с каким то параметром. любой интерактив подразумевает повторную отправку запросу серверу, его обработку и ответ т.е. мы фактически имеем два запроса на два разных акшена или один акшен в который передается разный набор параметров. Причем как из клиента повторить тот же самый запрос с дополнительными параметрами не понятно (имеется ввиду в общем случае, т.е. для любого запроса из клиента), а на сервере как то связать (передать данные) первый запрос и второй (до диалога и после). Да именно отправлять, какой-то предзапрос, который сделает нужные проверки, а затем уже выполнять doAction (прослойка до выполнения doAction). Например оператор делает какое то действие, вызывается экшен, возьмем для примера добавление субдоговора. Оператор выбирает добавить субдоговор, клиент отправляет запрос к серверу на проверку, вот на этом этапе как раз уместно будет вызывать диалоговые окна, затем, как нужные данные для doAction собраны, отправлять запрос на выполнение экшена. |
Автор: | skn [ 18 авг 2016, 15:49 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
borin писал(а): Да именно отправлять, какой-то предзапрос, который сделает нужные проверки, а затем уже выполнять doAction (прослойка до выполнения doAction). Например оператор делает какое то действие, вызывается экшен, возьмем для примера добавление субдоговора. Оператор выбирает добавить субдоговор, клиент отправляет запрос к серверу на проверку, вот на этом этапе как раз уместно будет вызывать диалоговые окна, затем, как нужные данные для doAction собраны, отправлять запрос на выполнение экшена. подобное можно сделать в каком то конкретном месте(ах) клиента, но в общем это работать не будет без переписывая всех вызовов из клиента |
Автор: | borin [ 18 авг 2016, 16:08 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
Жаль, ноо если, когда-то появится возможность реализовать подобное, будет очень удобно. Что насчет INFO сообщений, т.е. чисто информационные сообщения, которые не прерывают работу скрипта в отличии от BGMessageException? |
Автор: | skn [ 18 авг 2016, 16:55 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
borin писал(а): Жаль, ноо если, когда-то появится возможность реализовать подобное, будет очень удобно. Что насчет INFO сообщений, т.е. чисто информационные сообщения, которые не прерывают работу скрипта в отличии от BGMessageException? при использовании механизма акшенов это я как то могу себе представить, а вот для вебсервисов с трудом... |
Автор: | borin [ 18 авг 2016, 17:10 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
skn писал(а): при использовании механизма акшенов это я как то могу себе представить, а вот для вебсервисов с трудом... Ну я акшены и имел ввиду. А разве вэбсервисы тоже можно обрабатывать? Как раз пытаюсь отловить событие изменения статуса договора в логах клиента вижу, что клиент дергает вэб сервис ContractStatusMonitorService:changeContractStatus, только не пойму, как с этим работать. Видимо, что то упустил, как вызвать знаю, а вот как акшен повесить? |
Автор: | Phricker [ 18 авг 2016, 17:18 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
Динамические веб-сервисы |
Автор: | dimOn [ 18 авг 2016, 17:29 ] |
Заголовок сообщения: | Re: Дин код - диалоговое окно |
На самом деле я тут подумал что с BGMessageException (и любым другим экзепшеном, если придумать какое-то отдельное для этого) не всё так просто - в некоторых местах в клиенте если оно получится, то некоторые действия после вызова веб-сервиса не выполнятся, ну например, чаще всего это что-то типа "рефреш" после "сохранения сущности". Нужно по-хорошему встраивать передачу сообщения внутрь сервиса неявно для обёрточного кода, типа, как это с юзер/пароль сделано. Или что-то типа того. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |