Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вызов метода класса из другой области в cache 2008 / 12 сообщений из 12, страница 1 из 1
06.10.2013, 21:30
    #38418276
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Вопрос на засыпку. Как вызвать метод класса из другой области в Cache 2008?
В Cache 2013 это возможно путем смены области с помощью @ZNAMESPACE (если не напутал что по памяти).
Но в справке к 2008 написано, что менять область в коде крайне не рекомендуется, да и метод для 2013 в чистом виде не работает.
Но очень нужно вызвать из кода в своей области метод класса из %SYS, причем именно в 2008-й версии.
Как жить?
...
Рейтинг: 0 / 0
06.10.2013, 21:32
    #38418279
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
поправка $ZNAMESPACE
...
Рейтинг: 0 / 0
07.10.2013, 09:50
    #38418497
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Hisbreht VictorКак вызвать метод класса из другой области в Cache 2008?
Только перейти в ту область...

Hisbreht Victorпоправка $ZNAMESPACE
Еще одна поправка...

Код: javascript
1.
ZNSPACE "область"
...
Рейтинг: 0 / 0
07.10.2013, 09:51
    #38418498
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Hisbreht VictorНо в справке к 2008 написано, что менять область в коде крайне не рекомендуется
Опа ганга стайл.
И в чем там криминал?
...
Рейтинг: 0 / 0
07.10.2013, 10:34
    #38418558
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Криминал в том, что если вы поменяется область, а у вас останутся объекты, открытые в другой области,
то работать они не будут (даже переменную удалить нельзя будет). Может еще в чем-то.
...
Рейтинг: 0 / 0
07.10.2013, 10:50
    #38418579
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Hisbreht Victor,

может вам просто этот пакет отобразить на вашу область?
http://docs.intersystems.com/cache20082/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_packages#GOBJ_packages_mapping
Какой именно системный метод вы вызвать хотите?
...
Рейтинг: 0 / 0
07.10.2013, 10:53
    #38418583
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Блок А.Н.Криминал в том, что если вы поменяется область, а у вас останутся объекты, открытые в другой области
На то ответ простой - не делайте так.
...
Рейтинг: 0 / 0
07.10.2013, 11:02
    #38418605
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Hisbreht VictorВ Cache 2013 это возможно путем смены области с помощью @ZNAMESPACE (если не напутал что по памяти).В Cache 2013 используются те же команды , дополнение лишь - $NAMESPACE , появившаяся в 2010.1 .Hisbreht Victorда и метод для 2013 в чистом виде не работает.Какой метод не работает? Что значит "в чистом виде"?Hisbreht VictorНо очень нужно вызвать из кода в своей области метод класса из %SYS, причем именно в 2008-й версии.В документации приведён пример кода . Он у Вас не работает?
Можно вообще обойтись изменением текущей области, использовав отображение пакетов .krvsaHisbreht VictorНо в справке к 2008 написано, что менять область в коде крайне не рекомендуетсяОпа ганга стайл.
И в чем там криминал?Also, changing namespaces demands a relatively high amount of computing power compared to other commands; if possible, application code should avoid it.
источник Ещё, наверное, в скорости переключения. Но уже с версии 2009.1 появилось соответствующее улучшение: Faster Namespace Activation .
...
Рейтинг: 0 / 0
07.10.2013, 11:13
    #38418625
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
servitЕщё, наверное, в скорости переключения.
Ясно...

servitНо уже с версии 2009.1 появилось соответствующее улучшение: Faster Namespace Activation .
Значит нам тот "криминал" не страшен.
...
Рейтинг: 0 / 0
07.10.2013, 20:59
    #38419462
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Я, как оно часто бывает, естественно немного напутал.
Про фокус из 2013 я имел ввиду следующее
When you wish to temporarily change the current namespace, perform some operation, then revert to the prior namespace, use SET $NAMESPACE. Because $NAMESPACE permits you to NEW $NAMESPACE, it reverts to the original namespace when either the subroutine completes or an unexpected error occurs. See $NAMESPACE special variable for details. Если я правильно понял, то это позволяет культурно временно поменять область и вернуться обратно в "родную" при выходе из функции. Если не прав, поправьте.

В 2008 это не срабатывает.
Для нее в справке вообще прописано
Object and SQL code assumes that it is running in a single namespace; hence, changing namespaces with open object instances or SQL cursors can lead to code running incorrectly. Typically, there is no need to explicitly change namespaces, as the various Object, SQL, and CSP servers automatically ensure that application code is run in the correct namespace.
Also, changing namespaces demands a relatively high amount of computing power compared to other commands; if possible, application code should avoid it.
...
Рейтинг: 0 / 0
07.10.2013, 21:18
    #38419473
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Hisbreht Victor$NAMESPACE
...
позволяет культурно временно поменять область и вернуться обратно в "родную" при выходе из функции
Судя по примерам в документации - да.
...
Рейтинг: 0 / 0
07.10.2013, 21:20
    #38419474
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов метода класса из другой области в cache 2008
Александр КобловКакой именно системный метод вы вызвать хотите?Нужно подергать за разные методы класс SYS.Database.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вызов метода класса из другой области в cache 2008 / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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