powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Передача объекта в job
9 сообщений из 9, страница 1 из 1
Передача объекта в job
    #38362765
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: при вызове веб-сервиса, сделать в фоне вызов еще одного сервиса (передав ему на вход объект, полученный от первого сервиса).

Делаю так:

Method requestOne(object As %XML.Adaptor) As %XML.Adaptor [ WebMethod ]
{
j ##class(asyncsoap.Processing).requestTwo(object)

...
}

И класс, который должен быть отдельным потоком, по моим расчетам:

Class asyncsoap.Processing Extends %RegisteredObject
{

ClassMethod requestTwo(object As %XML.Adaptor)
{
...
/// Вызов другого сервиса
}

Проблема в том, что при любом обращении к свойствам переданного объекта, код дальше не идет (возможно он падает и я не знаю как посмотреть ошибку).
...
Рейтинг: 0 / 0
Передача объекта в job
    #38362769
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8передав ему на вход объект
Но в Каше нет объектов... Есть классы и экземпляры классов...
Что есть "объект" в твоем случае?
...
Рейтинг: 0 / 0
Передача объекта в job
    #38362777
D_De1mos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8,

http://docs.intersystems.com/cache20131/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_cjob
> Since jobbed processes have separate memory partitions, they do not share a common local variable environment with the process that created them or with each other. When you start a jobbed process, you can use parameter passing (routine-params) to pass values from the current process to the jobbed process.

т.е. у нового процесса нет объекта, по передаваемой объектной ссылке, что означает невозможность передачи объектов в качестве параметров.
Для выхода из этой ситуации можно использовать хранимый класс, в который упаковывать передаваемый объект и передавать в job id этого сохраненного объекта, а вызываемый метод должен открыть объект по его идентификатору и распаковать передаваемый объект.
...
Рейтинг: 0 / 0
Передача объекта в job
    #38362795
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa , э-э-э... ну экземпляр класса, если такая терминология привычней.
D_De1mos , я так и думал :( Эх, не хотелось мне сохранять эти "экземпляры класса" в базу.. Так-то у меня Ensemble и можно просто сделать SendRequestAsync
...
Рейтинг: 0 / 0
Передача объекта в job
    #38362806
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8ну экземпляр класса, если такая терминология привычней.
Посмотрел сейчас ВИКИ... Там написано что это эквивалентные понятия. Т.ч. правильно и так, и так... Прости...
...
Рейтинг: 0 / 0
Передача объекта в job
    #38363048
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8возможно он падает и я не знаю как посмотреть ошибку
Как вариант, довольно простой метод, можно просетить её (ошибку) в глобал (да и не только ошибку, а весь ход выполнения кода в процессе).
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ClassMethod somename()
{
try {
S ^tmp(1)=""
// что то делаете
S ^tmp(2)=""
// еще что то делаете
S ^tmp(3)=""
//и тут чего то делаете
}
catch err {
// ну а если ошибка, можно записать её в
S ^tmp("err","name")=err.Name
...
}
} 


Узелки от 1 до 3 покажут докуда дошло исполнение, ну а если ошибка, она запишется в ^tmp("err") (скорее всего, у вас там будет инвалид ореф).

Посмотреть можете потом в терминале командой zw ^tmp
(если нет других средств просмотра глобалов)
...
Рейтинг: 0 / 0
Передача объекта в job
    #38365221
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, подойдет ли вам, но если объект наследовать от %SerialObject, то его можно превратить в строку с помощью
%GetSwizzleObject, а потом создать методом %New копию.
Не очень понимаю механизм, но если интересно, могу попробовать сделать пример.
...
Рейтинг: 0 / 0
Передача объекта в job
    #38365229
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coder1cv8, или сохранить и передать в job идентификатор объекта
...
Рейтинг: 0 / 0
Передача объекта в job
    #38365609
coder1cv8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н. , спасибо! Уже пошел по "пути наименьшего сопротивления" и сделал сохранение объекта в базу.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Передача объекта в job
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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