powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / запуск фоновой процедуры
5 сообщений из 5, страница 1 из 1
запуск фоновой процедуры
    #38066878
alexlesch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!

Появилась необходимость работы с фоновыми процессами.
Как определить программно запущена ли пользовательская процедура в фоновом режиме?
Из системной области (%SYS) можно определить в таблице SYS.Process. А вот как достучаться к этой системной таблице из пользовательского раздела - непонятно? При компиляции программы появляется ошибка "SQLCODE=-30 : Таблица 'SYS.PROCESS' не найдена"
Или понять в какую глобаль записываются данные таблицы %SYS.ProcessQuery?

Если пробовать использовать %SYS.ProcessQuery - ошибка такого вида
---------------------------
Studio
---------------------------
ОШИБКА #5475: Ошибка при компиляции программы: ProgEE. Ошибок:

ERROR: source lines(9) : MPP5610 : Не определен макрос: 'FOREJOB'

TEXT: s %mmmsqld(3)=$s(j=$$$FOREJOB:$$$FOREJOBNAME,j=$$$NETSRVTYPE:$$$NETSRVTYPENAME,j=$$$NETDMNTYPE:$$$NETDMNTYPENAME,j=$$$JOBSRVTYPE:$$$JOBSRVTYPENAME,1:"Unknown"_j)

ERROR: source lines(9) : MPP5610 : Не определен макрос: 'FOREJOBNAME'

TEXT: s %mmmsqld(3)=$s(j=$$$FOREJOB:$$$FOREJOBNAME,j=$$$NETSRVTYPE:$$$NETSRVTYPENAME,j=$$$NETDMNTYPE:$$$NETDMNTYPENAME,j=$$$JOBSRVTYPE:$$$JOBSRVTYPENAME,1:"Unknown"_j)

ERROR: source lines(9) : MPP5610 : Не определен макрос: 'NETSRVTYPE'

TEXT: s %mmmsqld(3)=$s(j=$$$FOREJOB:$$$FOREJOBNAME,j=$$$NETSRVTYPE:$$$NETSRVTYPENAME,j=$$$NETDMNTYPE:$$$NETDMNTYPENAME,j=$$$JOBSRVTYPE:$$$JOBSRVTYPENAME,1:"Unknown"_j)

ERROR: source lines(9) : MPP5610 : Не определен макрос: 'NETSRVTYPENAME'

TEXT: s %mmmsqld(3)=$s(j=$$$FOREJOB:$$$FOREJOBNAME,j=$$$NETSRVTYPE:$$$NETSRVTYPENAME,j=$$$NETDMNTYPE:$$$NETDMNTYPENAME,j=$$$JOBSRVTYPE:$$$JOBSRVTYPENAME,1:"Unknown"_j)

ERROR: source lines(9) : MPP5610 : Не определен мак
---------------------------
ОК
---------------------------
...
Рейтинг: 0 / 0
запуск фоновой процедуры
    #38066973
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexleschКак определить программно запущена ли пользовательская процедура в фоновом режиме? Using the $ZCHILD and $ZPARENT Special Variables
alexleschИз системной области (%SYS) можно определить в таблице SYS.Process. А вот как достучаться к этой системной таблице из пользовательского раздела - непонятно? При компиляции программы появляется ошибка "SQLCODE=-30 : Таблица 'SYS.PROCESS' не найдена"Вы не указали версию СУБД, поэтому пока посмотрите 9163476 .

PS: кроме фоновых процессов есть возможность использовать фоновые задачи, за ходом выполнения которых в Портале удобно наблюдать в разделе "System Operation" > "Background Tasks".
...
Рейтинг: 0 / 0
запуск фоновой процедуры
    #38066974
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d ^%SS ???
...
Рейтинг: 0 / 0
запуск фоновой процедуры
    #38066979
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexleschЕсли пробовать использовать %SYS.ProcessQuery - ошибка такого видаЗашёл в область "USER" и выполнил без проблем запрос: SELECT * FROM %SYS.ProcessQuery
Приведите пример Вашего использования %SYS.ProcessQuery .
...
Рейтинг: 0 / 0
запуск фоновой процедуры
    #38070844
alexlesch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо.

Проблему решил следующим образом.
Из пользовательского раздела запускается функция, которая возвращает результат проверки.

Если программы нет - запускаю j ^MyRoutine::20

checkProgr() ; проверка запущена ли программа
set rez= 0
zn "%SYS"
s PID=""
for {
set PID=##CLASS(SYS.Process).NextProcess(PID)

if PID'="" {
set Job=##CLASS(SYS.Process).%OpenId(PID)

if (Job '= "")
{

set routine = Job.Routine
if (routine = "MyRoutine") {
s rez= 1
quit}
}
}
else {
zn "user"
q
}
}
zn "user"
q rez
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / запуск фоновой процедуры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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