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?
Product version: Caché 2017.1
$ZV: 2017.2.2 (Build 865_0_18359U)
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?KEY...
Segue um teste que fiz aqui:
{ 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.