Task
Estou tentando executar uma tarefa pelo terminal, utilizando:
set test=##class(%SYS.TaskSuper).%New()
d test.RunNow(1), passando o ID da tarefa, para executa-lá, porém ela não executa.
Qual seria um outro jeito para que eu consiga realizar essa execução pelo terminal?
Comments
Olá Jullyanna,
A classe %SYS.TaskSuper, é usada somente para uso interno da plataforma. Você pode usar a %SYS.Task, que é uma extensão da %SYS.TaskSuper.
Você pode executar um teste:
set test=##class(%SYS.Task).RunNow(<passar o ID>)
Informações adicionais estão disponíveis em:
https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic…
Abraços,
Fernando
Ok, deu certo. Obrigada!
Boa tarde, teria como eu adicionar set test=##class(%SYS.Task).RunNow(ID) dentro de um button ou input? no csp page
Boa tarde,
Sim é possível executando através do hyperevento.
Executando um hyperevento o código vai rodar no servidor e não no browser.
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KE…
Segue um teste que fiz aqui:
Class teste.NewClass2 Extends %CSP.Page [ ProcedureBlock ]
{ClassMethod OnPage() As %Status
{ &html<<html>
<head>
<script language=javascript>
function onServer(ID)
{
alert(#server(..ServerMethod(ID))#);
}
</script>
#(..HyperEventHead())#
</head>
<body>
<input type=button name = "Button" value="1000" onclick='onServer(value)' />
</body>
</html>>
Quit $$$OK
}ClassMethod ServerMethod(ID As %String)
{
do ##class(%SYS.Task).RunNow(ID)
}}
Abraços,
Fernando
Uma outra forma de você executar o teste de sua rotina instanciando ela é chamando diretamente o método OnTask(), lembrando se antes popular as propriedades (caso existam) que serão usadas na execução do método.