powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Background-метод при создании страницы ZEN
4 сообщений из 4, страница 1 из 1
Background-метод при создании страницы ZEN
    #38667373
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно вопрос в названии темы:
Возможно ли на этапе создания страницы уже запустить логику на сервере, работающую как BackgroundMethod?
Собственно, вот что я хочу, чтобы начало работать:

Method %OnAfterCreatePage() As %Status
{
  set ..%GetComponentById("btnCancel").caption = "<< Назад"
  //do ..readPasport()
  Do ..%RunBackgroundMethod("readPasport")
  Quit $$$OK
}

ClassMethod readPasport()
{
  set Service="BRSOI.BProcess"
  set req=##class(Request.Start).%New()
  set sc=##class(EnsLib.Testing.Service).SendTestRequest(Service,req,.StartResponse,,1)
  if $$$ISERR(sc) w !,Service_" sc="_$system.Status.GetErrorText(sc),! q
  if $isObject(StartResponse)
  {
    do ..reqGetLastDocument(.fileName)
  }
  Do ..%EndBackgroundMethod()
  quit
}
То есть посыл, например, запроса считывателю паспортов о том, что пора считывать.
Разумеется, текущий пример работает только по кнопке. Есть идеи?
...
Рейтинг: 0 / 0
Background-метод при создании страницы ZEN
    #38667398
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Cache есть возможность запуска параллельных процессов, с помощью команды JOB
рекомендую почитать в документации
...
Рейтинг: 0 / 0
Background-метод при создании страницы ZEN
    #38667594
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feanorcheg ,
  • 7345089
    Вариант №1Class demo.test Extends %ZEN.Component.page
  • {
  • /// Этот XML блок описывает содержимое этой страницы. XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
  • {
  • <page xmlns=" http://www.intersystems.com/zen"  title="">   <text id="txt" value="" size="30"/>   <button caption="Отчёт" onclick="zenSetProp('txt','value','Идёт генерация отчёта...');zenPage.BigWork(10);"/> </page> } Method BigWork(time) [ ZenMethod ]
  • {
  •   h time   s txt="Отчёт успешно сгенерирован"   d ..%SetValueById("txt",txt)   &js<zenAlert('#(txt)#');> } /// This client event, if present, is fired when the page is loaded. ClientMethod onloadHandler() [ Language = javascript ]
  • {
  •   zenAlert('Страница успешно загружена');   zenPage.BigWork(10); } }
см. пример с запуском фоновой задачи в классе ZENDemo.MethodTest.cls из ZEN Demo
Вариант №2Class demo.test Extends %ZEN.Component.page
  • {
  • /// Этот XML блок описывает содержимое этой страницы. XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
  • {
  • <page xmlns=" http://www.intersystems.com/zen"  title="">   <text id="txt" value="" size="30"/> </page> } /// This client event, if present, is fired when the page is loaded. ClientMethod onloadHandler() [ Language = javascript ]
  • {
  •   zenPage.RunBackgroundTask(); } /// Run a method in the background. ClassMethod RunBackgroundTask() [ ZenMethod ]
  • {
  •   #; Run method BackgroundTask in a background job.   Do ..%RunBackgroundMethod("BigWork",10) } /// This is an example of a task that is run in the background. ClassMethod BigWork(N = 10)
  • {
  •   Do ..%SetBackgroundMethodStatus("Started",0)   Hang 2   #; simulated background task   For n = 1:1:N 
  • {
  •     Do ..%SetBackgroundMethodStatus("Running",n*10)     Hang 1   }   Do ..%EndBackgroundMethod() } /// This server-side callback method is called whenever the client /// calls to monitor the current background task. /// Typically a subclass uses this to send back JavaScript to update /// a progress bar. ClassMethod %OnMonitorBackgroundTask(   pTaskID As %String,   pStatus As %String,   pPercentComplete As %Float)
  • {
  •   #; write status into HTML component   &js<zenSetProp('txt','value','#(pStatus _ ": " _ +pPercentComplete _ "%")#');> } /// This server-side callback method is called whenever the client /// calls to monitor the current background task and the task is complete. /// Typically a subclass uses this to send back JavaScript to update /// the page. ClassMethod %OnFinishBackgroundTask(pTaskID As %String)
  • {
  •   &js<zenSetProp('txt','value','');> } }
    feanorchegСобственно, вот что я хочу, чтобы начало работать:Тогда так:
    Вариант №3Class demo.test Extends %ZEN.Component.page
  • {
  • XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
  • {
  • <page xmlns=" http://www.intersystems.com/zen"  title="">   <text id="txt" value="" size="30"/> </page> } ClientMethod onloadHandler() [ Language = javascript ]
  • {
  •   zenPage.RunBackgroundTask(); } Method %OnAfterCreatePage() As %Status
  • {
  •   Do ..%RunBackgroundMethod("BigWork",10)   Quit $$$OK } ClassMethod RunBackgroundTask() [ ZenMethod ]
  • {
  •   &js<if(zenPage.setBackgroundTask) {zenPage.setBackgroundTask('#($ZCHILD)#');}> } ClassMethod BigWork(N = 10)
  • {
  •   Do ..%SetBackgroundMethodStatus("Started",0)   Hang 2   For n = 1:1:N 
  • {
  •     Do ..%SetBackgroundMethodStatus("Running",n*10)     Hang 1   }   Do ..%EndBackgroundMethod() } ClassMethod %OnMonitorBackgroundTask(   pTaskID As %String,   pStatus As %String,   pPercentComplete As %Float)
  • {
  •   &js<zenSetProp('txt','value','#(pStatus _ ": " _ +pPercentComplete _ "%")#');> } ClassMethod %OnFinishBackgroundTask(pTaskID As %String)
  • {
  •   &js<zenSetProp('txt','value','');> } }
    ...
    Рейтинг: 0 / 0
    Background-метод при создании страницы ZEN
        #38667945
    feanorcheg
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Гость
    2й способ помог, спасибо большое!
    ...
    Рейтинг: 0 / 0
    4 сообщений из 4, страница 1 из 1
    Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Background-метод при создании страницы ZEN
    Целевая тема:
    Создать новую тему:
    Автор:
    Закрыть
    Цитировать
    Найденые пользователи ...
    Разблокировать пользователей ...
    Читали форум (0):
    Пользователи онлайн (0):
    x
    x
    Закрыть


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