powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Выполнение метода по указанию в URL
25 сообщений из 25, страница 1 из 1
Выполнение метода по указанию в URL
    #35075144
Mad Rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не спрашивайте, зачем :)

Нужно организовать выполнение метода по указанным в URL имени класса и метода, примерно так:
...?Class=Person&Template=CreateForm
такой запрос приходит на "центральный" %CSP.Page-объект, который затем должен из базы у класса Person вызвать метод CreateForm (который, типа, рисует форму создания объекта).

Так вот, главная непонятка, как из string-а получить указатель на класс или метод (скомпилированные)? Есть такой системный метод?

Заранее спасибо.
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075181
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Заводиться" справочник соотвествия между именованием шаблона и соотвествием класса и метода в нем.

Хоть в код зашивайте справочник - хоть таблицу делайте - по шаблону определяете наименования
а потом

[/src]d $zobjclassmethod("имя класа","имя метода",параметр1,параметр2 ....)
Код: plaintext
1.
2.
3.
4.
Указатели это в С/С++ и т.д. - в Каше и то и другое стринги.

Естесвенно вам никто не мешает проверить наличие скомпилированного класса

if ##class(%CompiledClass).%ExistsId(("имя класа") {
...
}
[src]
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075186
Зет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ptn у тебя форматирование глючит
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075208
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad Rat , значения перемнных удобнее "разобрать" в JS, а потом уже передать их в Каше на "выполнение"...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075227
Mad Rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Справочник не пойдёт, нужно чтобы кто-нить потом мог новые шаблоны добавлять, а "центральный" класс не перекомпилировать
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075312
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант
Код: plaintext
1.
2.
3.
4.
PRIMER(Class,Metod)
 n com,case
 s com="s case=##class("_Class_")."_Metod_"()"
 x @com
 q
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075343
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad RatСправочник не пойдёт, нужно чтобы кто-нить потом мог новые шаблоны добавлять, а "центральный" класс не перекомпилировать

Как это не пойдет ??? как раз справочник-на-таблице тут ой как нужен ... именно с ним ничего перекомпилировать не нужно
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075347
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaКак вариант
Код: plaintext
1.
2.
3.
4.
PRIMER(Class,Metod)
 n com,case
 s com="s case=##class("_Class_")."_Metod_"()"
 x @com
 q
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

$zobjclassmethod делает ровно тоже самое - только еще и параметры можно передовать
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075379
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa

А указанный метод - не бьезопасен для вставки скрипта ... вот передасть тебе кто нить в качестве имени метода
Код: plaintext
1.
d PRIMER("Class.Class","Metod() kill ^AllHumans s ^AllHumans=##class(%CSP.Page).%PackageName")
и привет всем людям
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075465
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptn , безопастностью там и не пахнет.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075593
Mad Rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За безопасностью будет следить как раз этот метод класса %CSP.Page - достаточно тупо проверить символы в строке какие. А справочник не подходит, потому что при добавлении нового шаблона пользователь вынужден будет его еще в какой-то там табличке зарегистрировать. Нужно чтобы было предельно просто: зашёл в студию, открыл класс, добавил метод визардом, написал туда html-кода, скомпилировал - и готово, можно делать на него ссылки. Короче, надо продемонстрировать крутость Кащея, хочу на нём продублировать функциональность одной системы, которая тормозная и глючная.

krvsa, а это на чём? На кащейском языке можно тоже самое, пжлст? Я только учусь...
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075811
Mad Rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, это как надо так хитро вызывать методы, чтобы галочка "Private" влияла? И на что она вообще влияет? Я пока что, сколько с Cache работаю, ну правда это не сильно долго, никакой разницы не заметил.
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075822
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad Ratа это на чём? На кащейском языке можно тоже самое, пжлст? Я только учусь...
Кащеистей уже некуда. Писал с использованием М-технологий онли.
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075844
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad RatКстати, это как надо так хитро вызывать методы, чтобы галочка "Private" влияла?
Сам не пользосался... Но суть вроде такая. Приватные методы могут вызывать только методы этого же класса.
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075858
Mad Rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ссылку в мануал по этим "технологиям" можно? Знаю тока Set, Do, Quit и т.п. пока, а эти ваши конструкции больше ассемблер напоминают... Это что, сокращения какие-то?
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075888
Mad Rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну "суть" инкапсуляции я тоже знаю. :) Только через ##class() из других классов выполняются любые методы, и публичные, и приватные. Видимо есть какой-то ещё способ выполнения, на которые эта галочка влияет?
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075900
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad RatЗа безопасностью будет следить как раз этот метод класса %CSP.Page - достаточно тупо проверить символы в строке какие. А справочник не подходит, потому что при добавлении нового шаблона пользователь вынужден будет его еще в какой-то там табличке зарегистрировать. Нужно чтобы было предельно просто: зашёл в студию, открыл класс, добавил метод визардом, написал туда html-кода, скомпилировал - и готово, можно делать на него ссылки. Короче, надо продемонстрировать крутость Кащея, хочу на нём продублировать функциональность одной системы, которая тормозная и глючная.

krvsa, а это на чём? На кащейском языке можно тоже самое, пжлст? Я только учусь...

То есть вы считаете что пользователь это тот кто в студии классы компиляет ? Ну воля ваша ....


Можно пойти по другому пути - создается абстрактный класс - унаследованный от %CSP.Page - в нем определяем параметр TEMPLATENAME.... плюс можем добавить метод-генератор - который при компиляции конечного класса - записывает соотвествие имя_класс=имя_параметра в некий глобал.

Далее ... основная страница - может тупо выбирать все классы унаследованные от этого абстрактоно класса - и вызывать того у кого TEMPLATENAME совпадет с переданным ... для ускорения можно использовать поиск по глобалу - из генератора, который так же может дополнительно запоминать имена некоторых методов.

Пользователь создает класс - унаследованный от базаваго класса - переопределяет параметр TEMPLATENAME - и вуаля....
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075917
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad RatА ссылку в мануал по этим "технологиям" можно? Знаю тока Set, Do, Quit и т.п. пока, а эти ваши конструкции больше ассемблер напоминают... Это что, сокращения какие-то?

Документация идет вместе с любой версией Cach'e - ссылка в контестном меню - вам нужен раздел Reference Material -> Caché ObjectScript Reference

--- еще комментарий к приведенному выше примеру - если включена автокомпиляция
то юзер может и просто создовать файлики

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<csp:class super="InterFace.Templates">
<csp:parameter name="TEMPLATENAME" value="TableView">
<html>
</html>
<csp:method name=ShowTable arguments="" returntype="">
&JS<
<table border= 1 >
<tr><td></td></tr>
</table>
>
</csp:method>

...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075946
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad RatЭто что, сокращения какие-то?
В М-технологии (кои поддерживает Каше) можно вызывать команды и функции по одной-двум начальным буквам, что я и делаю...
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35075957
Mad Rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да, категория пользователей такая - автор ресурса. Так сказать, почти программист. Ему надо дать в руки инструмент, с которым он может клепать классы и шаблоны интерфейса к ним. Простой по возможности. Хочу показать, что Каше удобнее и "гибше", чем существующая система.

Этот способ тоже не пойдёт - у одного класса может быть сколько угодно разных методов-шаблонов, а не один. Короче, нельзя пользователя заставлять прописывать связь "имя метода - метод" - ни табличкой, ни свичкейсом, ни ещё как-нибудь, она должна автоматически делаться, точнее "физически" не должно быть никакой связи.
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35076023
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про передачу параметров в URL почитайте про request в документации или в CSP Quick Start на русском.

Что касается, программного вызова методов произвольного класса почитайте:
Using the Caché $ZOBJxxx Intrinsic Functions

Хотя сама задумка выглядит достаточно небезопасной...


Вадим
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35076043
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad RatНу да, категория пользователей такая - автор ресурса. Так сказать, почти программист. Ему надо дать в руки инструмент, с которым он может клепать классы и шаблоны интерфейса к ним. Простой по возможности. Хочу показать, что Каше удобнее и "гибше", чем существующая система.

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

Ну ...вопервых страннен сам факт что вы собираетесь доказывать то чего в чем неуверены ... но дело ваше..


Что до " ... "физически" не должно быть никакой связи." - а как вы вообще это хотите реализовывать? или как это реализовано в старой системе ?

Метод вызвать можно - пример даден - а вот как вы определите что именно этот метод и вот этот класс непонятно .....
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35076059
Mad Rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, понял всё, спасибо всем :) Мне всего-навсего нужен был оператор XECUTE :)
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35077066
Mad RatА, понял всё, спасибо всем :) Мне всего-навсего нужен был оператор XECUTE :)
Может вам попробовать класс с методами обявить как веб-сервис? И проецирование сразу есть и аргументы можно в виде параметров задавать?
...
Рейтинг: 0 / 0
Выполнение метода по указанию в URL
    #35077168
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mad RatА, понял всё, спасибо всем :) Мне всего-навсего нужен был оператор XECUTE :)

Вы видимо решили не читать ссылки, которые я Вам прислал ...
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Выполнение метода по указанию в URL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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