Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как идентифицировать Item внутри Condition PL/SQL? / 25 сообщений из 32, страница 1 из 2
13.03.2017, 20:02
    #39418410
Как идентифицировать Item внутри Condition PL/SQL?
Братцы, как знаете не хуже меня, есть такое v('ITEM_NAME') внутри вызываемого на странице PL/SQL, благодаря чему всегда понятно, на какой странице и в каком приложении работает конкретный код или каково значение Item на странице.
А вот есть ли у вас мысли, как организовать подобное понимание конкретно в Condition? Ведь у каждого item имеется уникальный код... Можно ли его получить в Condition?
...
Рейтинг: 0 / 0
13.03.2017, 20:27
    #39418429
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша Сплинтер,
Приведи пример. Я лично не понял.
...
Рейтинг: 0 / 0
14.03.2017, 08:12
    #39418573
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерБратцы, как знаете не хуже меня, есть такое v('ITEM_NAME') внутри вызываемого на странице PL/SQL, благодаря чему всегда понятно, на какой странице и в каком приложении работает конкретный код или каково значение Item на странице.
А вот есть ли у вас мысли, как организовать подобное понимание конкретно в Condition? Ведь у каждого item имеется уникальный код... Можно ли его получить в Condition?

Памятка задающим вопросы
...
Рейтинг: 0 / 0
14.03.2017, 18:43
    #39419216
Как идентифицировать Item внутри Condition PL/SQL?
Друзья, все ваши упрёки справедливы. Но должен заметить, что форумов, где нет возможности откорректировать своё собственное сообщение после постинга на форуме в Сети ещё поискать... Однако sql.ru мы любим не за это.

Итак, уточняю свой вопрос. Любой элемент в APEX имеет настройку Condition, суть которой в том, рендерить или нет данный элемент. В том случае, если тип этого Condition представляет из себя PL/SQL, возникает желание внутри этого кода установить "координаты" вызова данного кода, а именно, приложение, страницу и некий идентификатор, или имя хотя бы элемента, откуда код вызван при рендеренге. Что касается номера приложения и страницы, тут всё просто v('APP_ID') и v('APP_PAGE_ID'), а вот с элементом что-то никак...
...
Рейтинг: 0 / 0
14.03.2017, 20:35
    #39419307
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерСети ещё поискать..
это так)

Саша СплинтерВ том случае, если тип этого Condition представляет из себя PL/SQL, возникает желание внутри этого кода установить "координаты" вызова данного кода, а именно, приложение, страницу и некий идентификатор, или имя хотя бы элемента, откуда код вызван при рендеренге.
зачем?
В общем случае не надо делать привязку! Сильные связи считаются Г...кодом. Слабые связи считаются OK кодом.
...
Рейтинг: 0 / 0
14.03.2017, 21:18
    #39419324
Как идентифицировать Item внутри Condition PL/SQL?
Ну что же, представим себе интерфейс, пользователи которого разбиты по ролям.
Каждой роли должны быть недоступны некоторые группы элементов (кнопки, поля редактирования, закладки и так далее) общего интерфейса.

Возникает желание объединить с одной стороны элементы интерфейса в группы, с другой пользователей в группы и сопоставить их друг другу в третьей табличке на предмет наличия запрета. После чего разместить вызов PL/SQL в Condition. Этот код без труда установит группу пользователя по идентификатору пользователя, хранящемуся в APP_USER.

Что можно сказать о группе элемента? Ничего, если PL/SQL не знает, как его идентифицировать.
Не знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове строку названия элемента, совпадающего с его именем. Выглядит не очень.
...
Рейтинг: 0 / 0
14.03.2017, 21:29
    #39419329
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша Сплинтер,

Функция не документирована, но можете попробовать: APEX_APPLICATION.GET_COMPONENT
Я в некоторых ситуациях использую её. Внутри items не пробовал.
...
Рейтинг: 0 / 0
14.03.2017, 23:42
    #39419375
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерВозникает желание объединить с одной стороны элементы интерфейса в группы, с другой пользователей в группы и сопоставить их друг другу в третьей табличке на предмет наличия запрета. После чего разместить вызов PL/SQL в Condition. Этот код без труда установит группу пользователя по идентификатору пользователя, хранящемуся в APP_USER.
ещё подробнее и ПРИВЕДИТЕ ПРИМЕР странички.
Т.к. я против без достаточных оснований мешать видимость (Condition) и безопасность (SECURITY).
Первая это БЛ - бизнес логика. Вторая это безопасность.
Оракл их разнёс по разным полям.
Кроме того
Саша СплинтерВозникает желание объединить с одной стороны элементы интерфейса в группы
это вообще третий случай, т.к. чисто визуально есть средство - регион. Он прекрасно работает и объединяет.
...
Итого может вы ошиблись?
От неопытности? Не делали систем?
...
Рейтинг: 0 / 0
14.03.2017, 23:43
    #39419376
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша Сплинтер,
Когда программист слишком многое придумывает, возможно он не сформулировал USE CASE? По ГОСТ'у?
...
Рейтинг: 0 / 0
14.03.2017, 23:46
    #39419377
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша Сплинтерс другой пользователей в группы
пользователей в группы я объединяю на основе наследования ролей оракла.
Т.е. роль в оракле админ автоматом наследует роли всех дочек.
Очень простая и лаконичная схема авторизации от Оракле.
...
Рейтинг: 0 / 0
14.03.2017, 23:56
    #39419380
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерНе знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове
слабая связь, это когда в пакеты оракла не передавать ничего с двумя точками. Никаких айтемсов и переменных апекса.
Но я понимаю, что это идеал и идеала в жизни не бывает)). Сам нарушал)).
...
Рейтинг: 0 / 0
14.03.2017, 23:58
    #39419382
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Petro123Саша СплинтерНе знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове
слабая связь, это когда в пакеты оракла не передавать ничего с двумя точками. Никаких айтемсов и переменных апекса.
Но я понимаю, что это идеал и идеала в жизни не бывает)). Сам нарушал)).
упс. Поправлюсь.
В коде пакета не должно быть переменных с двоеточиями (контекста). А во входных параметрах в обычных типах IN Parameters передавай что угодно.
...
Рейтинг: 0 / 0
15.03.2017, 09:13
    #39419471
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерНу что же, представим себе интерфейс, пользователи которого разбиты по ролям.
Каждой роли должны быть недоступны некоторые группы элементов (кнопки, поля редактирования, закладки и так далее) общего интерфейса.

Возникает желание объединить с одной стороны элементы интерфейса в группы, с другой пользователей в группы и сопоставить их друг другу в третьей табличке на предмет наличия запрета. После чего разместить вызов PL/SQL в Condition. Этот код без труда установит группу пользователя по идентификатору пользователя, хранящемуся в APP_USER.

Что можно сказать о группе элемента? Ничего, если PL/SQL не знает, как его идентифицировать.
Не знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове строку названия элемента, совпадающего с его именем. Выглядит не очень.


Для условия видимости или не видимости используем привилегии.
Привилегии назначены ролям.
При логоне все привилегии записываются в Кэш таблицу.
Одна привилегия - Один/Много элементов. При рендеринге страницы, система проверяет наличие данной привилегии в кеш таблицы для данного пользователя.

Использование кеш таблицы обусловлено иерархической структурой ролей, и линейный запрос из кеш таблицы, в разы быстрее иерархического запроса.
...
Рейтинг: 0 / 0
15.03.2017, 09:42
    #39419486
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерНе знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове строку названия элемента, совпадающего с его именем. Выглядит не очень.
А вообще пораскинув, я нашел вам решение :)
#CURRENT_ITEM_NAME#
...
Рейтинг: 0 / 0
15.03.2017, 09:44
    #39419490
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
blkangelСаша СплинтерНе знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове строку названия элемента, совпадающего с его именем. Выглядит не очень.
А вообще пораскинув, я нашел вам решение :)
#CURRENT_ITEM_NAME#

Но с другой стороны, я не вижу ничего плохо, в передачи названия элемента, все равно же условие писать.
Вот если бы решили не использовать механизм condition, тогда другой разговор.
...
Рейтинг: 0 / 0
15.03.2017, 19:47
    #39420279
Как идентифицировать Item внутри Condition PL/SQL?
Друзья, очень благодарен вам за ваши размышления! sql.ru это просто сборище маньяков-профи! Даже и не думайте взломать мой смартфон при помощи вашего SQL!

#CURRENT_ITEM_NAME# это вообще откровение какое-то! Жаль, что не работает ((( APEX_APPLICATION.GET_COMPONENT только для APEX 4.

Спешу сообщить, что конечно речь идёт об ограничении функциональности и разграничениях компетенций. Хотя поди различи, что тут авторизация, а что просто ограничение функциональности, когда кнопку спрятали, а за кнопкой - запуск ракеты. Есть мнение, что никакой разницы на уровне интерфейса нет и обсуждение подобных вопросов - сплошная казуистика.

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

Поскольку речь идёт об аутентификации внутри веб-приложения, до оракла здесь как-то дотягиваться желания особого не возникает. Це ж апекс, зачем тут Оракл? APEX_PUBLIC_USER и все дела )))
Поясните, может я не понял мысль? Вы используете аутентификацию пользователей оракл для целей работы с апекс-приложением? То есть на сто клиентов набегает тысяча пользователей и всех вы их в Оракле заводите?

Кэш таблица имеется в виду опция CACHE для CREATE TABLE? Круто!

>>Когда программист слишком многое придумывает, возможно он не
>>сформулировал USE CASE? По ГОСТ'у?

В вашей терминологии я вряд ли являюсь программистом. Так, самоучка со стажем, вряд ли более.
...
Рейтинг: 0 / 0
15.03.2017, 20:23
    #39420291
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерОднако группы элементов представляют из себя подчас поля, кнопки и закладки, так что регионы - лишь красивая утопия.
переведи.
Т.е. вы сами не использовали регионы, а делали без них?
Закладка это вкладка?
Приводите скрины, ведь мы о ГУИ и визале говорим. А не о характерах и писателях.
...
Саша СплинтерПоясните, может я не понял мысль? Вы используете аутентификацию пользователей оракл для целей работы с апекс-приложением? То есть на сто клиентов набегает тысяча пользователей и всех вы их в Оракле заводите?
я использую оба варианта.
И вариант никак не зависит от 1000юзверей. Ораклу пофигу и 10000. Спросите у ораклоидов.
В первом варианте у меня оракл и его дерево. Во втором варианте своё дерево пользователей в табличках.
В чём проблема? Главное принцип - наследования ролей)).
...
Рейтинг: 0 / 0
15.03.2017, 20:25
    #39420292
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша Сплинтеррегионы - лишь красивая утопия
регионы в апекс это стратегия Оракле).
Которую вы игнорируете.
...
Рейтинг: 0 / 0
15.03.2017, 20:26
    #39420293
Как идентифицировать Item внутри Condition PL/SQL?
>>Вот если бы решили не использовать механизм condition, тогда другой разговор.

Кроме authorization и condition других штатных способах прятать элементы не слыхал. Причём по ходу тут семантика сплошная, а суть одна. Просто в authorization не передать ничего вовсе, а в condition что-то можно.
...
Рейтинг: 0 / 0
15.03.2017, 20:28
    #39420294
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерЕсть мнение, что никакой разницы на уровне интерфейса нет и обсуждение подобных вопросов - сплошная казуистика.
есть такая путаница смешения понятий Видимость и Видимость по безопасности).
У меня критерий - бизнес логика. Это первое - видимость.
Безопасность делаю чисто по авторизации и правам (слово - НЕЛЬЗЯ).
...
Рейтинг: 0 / 0
15.03.2017, 20:30
    #39420296
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерПросто в authorization не передать ничего вовсе, а в condition что-то можно.
ещё не хватало туда передавать.
Вы и в Видимость зря передаёте.
По крайней мере оснований не видно.
...
Рейтинг: 0 / 0
15.03.2017, 20:31
    #39420297
Как идентифицировать Item внутри Condition PL/SQL?
регионы в апекс это стратегия Оракле). Которую вы игнорируете.

В не подумайте, я обеими руками за стратегии Оракла! Но если элементы не объединяются в регион, то, боюсь, ничего тут не поделать. Задачу как-то надо решать.

Пока вижу всё то же решение: передавать в condition название элемента и содержать три таблицы: группы элементов, пользователей и привилегий, объединяющих эти группы.

В таком случае, заходя на страничку с клиентами, бухгалтерия увидит своё, дизайнеры свой, а продаваны - своё. И да, наверное можно налепить кучу страниц (или даже приложений)на каждый отдел, а потом все их содержать. Но это совсем уж за пределами добра и зла.
...
Рейтинг: 0 / 0
15.03.2017, 20:33
    #39420299
Как идентифицировать Item внутри Condition PL/SQL?
есть такая путаница смешения понятий Видимость и Видимость по безопасности).
У меня критерий - бизнес логика. Это первое - видимость.
Безопасность делаю чисто по авторизации и правам (слово - НЕЛЬЗЯ).

Бухгалтеру нельзя удалять клиента, менеджеру можно.
менеджеру нельзя видеть колонку дебиторки, бухгалтеру можно.

Какая разница, безопасность это или видимость? Что решает данная терминология, если реализация в Апексе по сути отличается лишь семантически?
...
Рейтинг: 0 / 0
15.03.2017, 20:34
    #39420300
Как идентифицировать Item внутри Condition PL/SQL?
Petro123ещё не хватало туда передавать.
Вы и в Видимость зря передаёте.
По крайней мере оснований не видно.

Как же вы коллега решаете такие банальные задачи про менеджера и бухгалтера? Неужто без Condition (authorization)?
...
Рейтинг: 0 / 0
15.03.2017, 20:37
    #39420305
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как идентифицировать Item внутри Condition PL/SQL?
Саша СплинтерНо если элементы не объединяются в регион, то, боюсь, ничего тут не поделать
Вам виднее. Значит они разбросаны аки горох на стене).
Саша СплинтерПока вижу всё то же решение: передавать в condition название элемента и содержать три таблицы: группы элементов, пользователей и привилегий, объединяющих эти группы.
Делайте.
На первый взляд, не видя картинку) LOL это велосипед.
Саша СплинтерВ таком случае, заходя на страничку с клиентами, бухгалтерия увидит своё, дизайнеры свой, а продаваны - своё. И да, наверное можно налепить кучу страниц (или даже приложений)на каждый отдел, а потом все их содержать. Но это совсем уж за пределами добра и зла.
Конечно! Никаие регионы не помогают объединить АРМ уборщицы и АРМ бухгалтера.
Тогда конечно, надо делать так:
Код: sql
1.
Пакет.ДайВидимость("АРМ_буха"\"АРМ_уборщик");


Удачи Вам!
Работать всё равно будет. Тоже исходя из практики.
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как идентифицировать Item внутри Condition PL/SQL? / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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