CftClub.ru
Клуб специалистов ЦФТ-Банк

Можно определить из какого представления запущена опер-ия ?
На страницу Пред.  1, 2
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеВт Сен 30, 2014 10:41    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
devor пишет:
Alkov пишет:
devor пишет:
Alkov пишет:
devor пишет:
Alkov пишет:

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

На представление повесить операцию-фильтр, где взводить контекст или переменные.

Взводить то понятно где, не понятно как сбросить при переключении в другое...

Каждое представление может переопределять контекст.


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

Значит разные представления должны свой контекст заполнять. И тогда операция будет знать, какие представления (проверки) уже выполнены.


Это ничего не даст, операция узнает какие представления открыты , но не из какого она запущена.

Зачем операции знать из какого представления запущено?
Если дело в проверках (условии) представления, то они при переключении между уже открытыми представлениями повторно не выполняются.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Окт 01, 2014 07:59    Ответить с цитатой
Полезность: Нет оценки
devor пишет:

Зачем операции знать из какого представления запущено?


В Типе есть представление где отображены экземпляры, при это выполнены определённые проверки.
И есть операция которая выполняет аналогичные проверки перед запуском.
Операция может запускаться с любого представления типа.
Хотелось бы если запуск операции производится из "нашего" представления, то не выполнять повторно те же самые проверки...

devor пишет:

Если дело в проверках (условии) представления, то они при переключении между уже открытыми представлениями повторно не выполняются.

Ага я об этом сразу сказал,
троля качаешь ?
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеСр Окт 01, 2014 08:16    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:


devor пишет:

Если дело в проверках (условии) представления, то они при переключении между уже открытыми представлениями повторно не выполняются.

Ага я об этом сразу сказал,
троля качаешь ?


Если представление не выполняется заново, то чем не устраивает контекст, взведенный представлением при первом запуске?
Проверки уже выполнены, контекст представление взвело, операция может этот контекст прочитать и проверок не делать.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Окт 01, 2014 10:08    Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Alkov пишет:


devor пишет:

Если дело в проверках (условии) представления, то они при переключении между уже открытыми представлениями повторно не выполняются.

Ага я об этом сразу сказал,
троля качаешь ?


Если представление не выполняется заново, то чем не устраивает контекст, взведенный представлением при первом запуске?
Проверки уже выполнены, контекст представление взвело, операция может этот контекст прочитать и проверок не делать.

Точно троль.
Не устраивает тем что можно переключиться в другое представление, ранее открытое, и запустить операцию там.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Окт 01, 2014 11:25    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
Не устраивает тем что можно переключиться в другое представление, ранее открытое, и запустить операцию там.


Представляю себе заявочку сделать локал - ещё одно представление. И запускать себе операции в этом никем не учтённом новом представлении и вводить в головняки всех причастных...

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

Может, начнём с этого?
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеСр Окт 01, 2014 11:33    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
devor пишет:
Alkov пишет:


devor пишет:

Если дело в проверках (условии) представления, то они при переключении между уже открытыми представлениями повторно не выполняются.

Ага я об этом сразу сказал,
троля качаешь ?


Если представление не выполняется заново, то чем не устраивает контекст, взведенный представлением при первом запуске?
Проверки уже выполнены, контекст представление взвело, операция может этот контекст прочитать и проверок не делать.

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


Каждое представление устанавливает свой контекст 'VW_1', 'VW_2', 'VW_3'. А потом хоть запереключайся между ними - все контекстные переменные есть и операция знает какие представления были запущены (какие проверки были сделаны).
Alex294
Участник со стажем


Вступление в Клуб: 02.06.2013
СообщениеСр Окт 01, 2014 13:48    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
devor пишет:

Зачем операции знать из какого представления запущено?


В Типе есть представление где отображены экземпляры, при это выполнены определённые проверки.
И есть операция которая выполняет аналогичные проверки перед запуском.
Операция может запускаться с любого представления типа.
Хотелось бы если запуск операции производится из "нашего" представления, то не выполнять повторно те же самые проверки...

Кто мешает выкинуть проверки в отдельную операцию, которая в зависимости от проверок будет или не будет вызывать операцию без проверок. А к "нашему" представлению привязать операцию без проверок.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеЧт Окт 02, 2014 04:20    Ответить с цитатой
Полезность: Нет оценки
Alex294 пишет:
Alkov пишет:
devor пишет:

Зачем операции знать из какого представления запущено?


В Типе есть представление где отображены экземпляры, при это выполнены определённые проверки.
И есть операция которая выполняет аналогичные проверки перед запуском.
Операция может запускаться с любого представления типа.
Хотелось бы если запуск операции производится из "нашего" представления, то не выполнять повторно те же самые проверки...

Кто мешает выкинуть проверки в отдельную операцию, которая в зависимости от проверок будет или не будет вызывать операцию без проверок. А к "нашему" представлению привязать операцию без проверок.


Уже было. Мешает дистрибутив. У них в представлениях стоит - Все операции. Соответственно пользователи увидят и операцию без проверок тоже.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеЧт Окт 02, 2014 04:22    Ответить с цитатой
Полезность: Нет оценки
Random пишет:
Alkov пишет:
Не устраивает тем что можно переключиться в другое представление, ранее открытое, и запустить операцию там.


Представляю себе заявочку сделать локал - ещё одно представление. И запускать себе операции в этом никем не учтённом новом представлении и вводить в головняки всех причастных...

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

Может, начнём с этого?


Пришли к этому же.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеЧт Окт 02, 2014 04:25    Ответить с цитатой
Полезность: Нет оценки
devor пишет:
Alkov пишет:
devor пишет:
Alkov пишет:


devor пишет:

Если дело в проверках (условии) представления, то они при переключении между уже открытыми представлениями повторно не выполняются.

Ага я об этом сразу сказал,
троля качаешь ?


Если представление не выполняется заново, то чем не устраивает контекст, взведенный представлением при первом запуске?
Проверки уже выполнены, контекст представление взвело, операция может этот контекст прочитать и проверок не делать.

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


Каждое представление устанавливает свой контекст 'VW_1', 'VW_2', 'VW_3'. А потом хоть запереключайся между ними - все контекстные переменные есть и операция знает какие представления были запущены (какие проверки были сделаны).


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


Вступление в Клуб: 13.02.2012
СообщениеЧт Окт 02, 2014 11:44    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
devor пишет:
Alkov пишет:
devor пишет:
Alkov пишет:


devor пишет:

Если дело в проверках (условии) представления, то они при переключении между уже открытыми представлениями повторно не выполняются.

Ага я об этом сразу сказал,
троля качаешь ?


Если представление не выполняется заново, то чем не устраивает контекст, взведенный представлением при первом запуске?
Проверки уже выполнены, контекст представление взвело, операция может этот контекст прочитать и проверок не делать.

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


Каждое представление устанавливает свой контекст 'VW_1', 'VW_2', 'VW_3'. А потом хоть запереключайся между ними - все контекстные переменные есть и операция знает какие представления были запущены (какие проверки были сделаны).


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


1)Фильтр представления может формировать кеш проверенных экземлляров, а представление может вычитывать данные из кеша. Операция может проверять кеши каждого представления. Это хороший способ.

2)Представление сделать PL/Plus и подменять поле CLASS_ID на 'VW_1'/'VW_2'/'VW_3' - далее простая операция при обращении к классу this%class будет получать значение параметра PLP$CLASS, куда навигатор передаст именно подмененный class_id из представления, который можно проанализировать и построить на этом логику. Это не очень хороший способ, зато простой.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПт Окт 03, 2014 03:05    Ответить с цитатой
Полезность: Нет оценки
devor пишет:

1)Фильтр представления может формировать кеш проверенных экземлляров, а представление может вычитывать данные из кеша. Операция может проверять кеши каждого представления. Это хороший способ.

2)Представление сделать PL/Plus и подменять поле CLASS_ID на 'VW_1'/'VW_2'/'VW_3' - далее простая операция при обращении к классу this%class будет получать значение параметра PLP$CLASS, куда навигатор передаст именно подмененный class_id из представления, который можно проанализировать и построить на этом логику. Это не очень хороший способ, зато простой.


Вот это продуктивно. Интересные костыли вышли.
По 1. "представление может вычитывать данные из кеша"
в принципе я тут представляю пару вариантов, а как вы предлагаете?

По 2. Надо попробовать, как Простая операция среагирует на то что ей пытаются подсунуть объект не её класса...
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПт Окт 03, 2014 06:39    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
devor пишет:

1)Фильтр представления может формировать кеш проверенных экземлляров, а представление может вычитывать данные из кеша. Операция может проверять кеши каждого представления. Это хороший способ.

2)Представление сделать PL/Plus и подменять поле CLASS_ID на 'VW_1'/'VW_2'/'VW_3' - далее простая операция при обращении к классу this%class будет получать значение параметра PLP$CLASS, куда навигатор передаст именно подмененный class_id из представления, который можно проанализировать и построить на этом логику. Это не очень хороший способ, зато простой.


Вот это продуктивно. Интересные костыли вышли.
По 1. "представление может вычитывать данные из кеша"
в принципе я тут представляю пару вариантов, а как вы предлагаете?

По 2. Надо попробовать, как Простая операция среагирует на то что ей пытаются подсунуть объект не её класса...


1)В фильтре представления pipeline функция, откуда читают данные и представление и операция. Либо для операции можно добавить отдельный кеш.

2)Нормально среагирует. Для надежности можно обращаться не к this%class, а напрямую к переменной PLP$CLASS - так даже лучше
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru