Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Июн 10, 2015 07:04  Операция - событие 'завершение операции' |
|
Полезность: Нет оценки
|
Добрый день.
Предложение по развитию системы(громко сказано) - если это кому-то нужно....
Операция имеет событие инициализации - в секции 'проверка' P_MESSAGE = 'DEFAULT'.
очень хорошо - допустим, там выставляются какие-то глобальные переменные для последующего использования в операции.
дальше... после отработки операции иногда нужно восстановить глобальные переменные в исходное состояние.
неплохо было бы иметь событие 'завершение операции' (например, P_MESSAGE = 'EXIT') - по закрытию формы операции ПОСЛЕ отработки тела операции.
Да, я могу и сейчас в операции вручную реализовать нечто подобное - но приходится напрягаться (+ держать в памяти 'шаблон')
- кинуть на форму кнопку CANCEL, сделать её невидимой (когда она не нужна на форме), отрабатывать событие P_MESSAGE = 'CANCEL'
- обернуть exec-часть операции в try-блок (иногда выходим из тела операции по ошибке) чтобы иметь возможность безусловно отработать в конце операции свою часть (восстановление глобальных переменных)
Предлагаю просто автоматизировать эти 'приседания'.
С точки зрения ООП (объект - 'вызов операции'):
1) P_MESSAGE = 'DEFAULT' - это конструктор объекта (вызов операции)
2) P_MESSAGE = 'EXIT' - деструктор объекта (вызов операции) |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Июн 10, 2015 07:06  Re: Операция - событие 'завершение операции' |
|
Полезность: Нет оценки
|
Damir пишет: |
Предлагаю просто автоматизировать эти 'приседания'. |
Да!
Предложение выдано безвоздмездно, т.е. даром!
т.е. платить за эту 'фичу' не буду!
 |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Ср Июн 10, 2015 10:04   |
|
Полезность: Нет оценки
|
а каким образом будет выполняться восстановление исходных значений в глобальных переменных, в вашей схеме? это ведь все ровно придется описывать в каком-то месте.
чем плох вариант безусловного выхода - return null? |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Ср Июн 10, 2015 11:25   |
|
Полезность: Нет оценки
|
wolfio пишет: | а каким образом будет выполняться восстановление исходных значений в глобальных переменных, в вашей схеме? |
А самое интересное - зачем? |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Июн 10, 2015 20:02   |
|
Полезность: Нет оценки
|
wolfio пишет: | а каким образом будет выполняться восстановление исходных значений в глобальных переменных, в вашей схеме? это ведь все ровно придется описывать в каком-то месте.
|
что восстанавливать - знает только программист конкретной системы.
восстанавливать - как раз в обработчике (валидаторе) P_MESSAGE = 'EXIT'
Сейчас нет такого события (P_MESSAGE = 'EXIT') - нет возможности написать свой код для восстановления глобальных переменных.
Random пишет: | А самое интересное - зачем? |
ничего не храните в глобальных переменных ?
Код: | К примеру, есть на нашей схеме ТБП 'Структурные единицы' [BRANCH].
Это древовидная структура... И вот ссылка на узел этого дерева хранится в глобальной переменной, пользователь может сменить 'текущий' узел...
От текущего узла зависит фильтрация в представлениях.
в некоторых операциях есть необходимость сменить этот узел (на корневой, например) и по выходу из операции вернуть значение текущего узла. |
PS: вносить изменения надо в Навигатор - чтоб еще событие-валидацию генерил. Сами изменения, на мой взгляд, 'двухпальцевые'.
PPS: труднее всего объяснить очевидные вещи - 'сложные' просто принимают 'на веру'.
В данном случае приходится объяснять необходимость деструктора у объекта.
Например, у объекта 'окно' в ОС WINOWS есть деструктор - событие WM_CLOSE - используется для освобождения ресурсов (не обязательно памяти - это могут быть какие-то семафоры, хэндлы и т.д.) выделенных в конструкторе. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Чт Июн 11, 2015 08:43   |
|
Полезность: Нет оценки
|
Damir пишет: |
ничего не храните в глобальных переменных ?
|
Например что храните в глобальной переменной, которая меняется после действия каждого пользователя? Не безопасней в контекст сессии писать? |
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Чт Июн 11, 2015 09:44   |
|
Полезность: Нет оценки
|
Gobur пишет: | Damir пишет: |
ничего не храните в глобальных переменных ?
|
Например что храните в глобальной переменной, которая меняется после действия каждого пользователя? Не безопасней в контекст сессии писать? |
Глобальные переменные они, все же, не настолько глобальные В рамках сессии живут. |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Чт Июн 11, 2015 10:42   |
|
Полезность: Нет оценки
|
prankster пишет: | Gobur пишет: | Damir пишет: |
ничего не храните в глобальных переменных ?
|
Например что храните в глобальной переменной, которая меняется после действия каждого пользователя? Не безопасней в контекст сессии писать? |
Глобальные переменные они, все же, не настолько глобальные В рамках сессии живут. |
Это понятно - не понятно другое зачем каждому пользователю менять переменную для всех? Что будет если несколько операции призавершении будут пытаться это делать? Просто не совсем ясна функциональность , где такой механизм удобен. |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Июн 11, 2015 20:44   |
|
Полезность: Нет оценки
|
Gobur пишет: | prankster пишет: | Gobur пишет: | Damir пишет: |
ничего не храните в глобальных переменных ?
|
Например что храните в глобальной переменной, которая меняется после действия каждого пользователя? Не безопасней в контекст сессии писать? |
Глобальные переменные они, все же, не настолько глобальные В рамках сессии живут. |
Это понятно - не понятно другое зачем каждому пользователю менять переменную для всех? Что будет если несколько операции призавершении будут пытаться это делать? Просто не совсем ясна функциональность , где такой механизм удобен. |
И все-таки...
prankster пишет: |
Глобальные переменные они, все же, не настолько глобальные Smile В рамках сессии живут. |
Вы можете считать (если так понятнее), что 'глобальные переменные' находятся в контексте сессии.
И вот этот контекст сессии Пользователь может менять (через операции). Но в некоторых операциях требуется внутри операции сменить контекст, отработать, по выходу из операции восстановить контекст .
необходимость возникает из-за использования глобальных переменных (контекстных переменных) внутри представлений (фильтрация возвращаемой выборки). |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пт Июн 12, 2015 14:20   |
|
Полезность: Нет оценки
|
Damir пишет: |
ничего не храните в глобальных переменных ?
|
На самом деле деструкторы - безусловно, вещь удобная.
Но если их нет, можно привыкнуть строить свой код так, чтобы они были не нужны.
Это всего лишь вопрос привычки и немного философии  |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Сб Июн 13, 2015 18:54   |
|
Полезность: Нет оценки
|
Random пишет: |
Но если их нет, можно привыкнуть строить свой код так, чтобы они были не нужны. |
кэп.... |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пн Июн 15, 2015 11:43   |
|
Полезность: Нет оценки
|
Damir пишет: | Random пишет: |
Но если их нет, можно привыкнуть строить свой код так, чтобы они были не нужны. |
кэп.... |
Это не кэп, это Оккам. Зачем плодить сущности, в коих нет нужды? |
|
 |
|