如何从作用域应用程序om servicenow调用预定作业?

时间:2015-12-24 12:03:54

标签: servicenow

我正在尝试从我的范围应用程序中的UI操作调用预定作业。但它给我一个错误,说“在范围应用程序中不允许使用SncTriggerSynchronizer”。 这是我的代码:

/api/index.php

有谁能告诉我如何克服这个错误?

由于

2 个答案:

答案 0 :(得分:0)

我只花了大约一个小时研究。我尝试使用全局脚本,包括所有范围内可用于执行预定作业的脚本;我尝试通过包和大约六个其他东西来调用它。我认为没有办法完全按照你的意愿去做。不幸的是,ServiceNow确实削弱了开发人员在范围应用程序环境中能够做到的事情,这就是为什么我一般不再为他们打扰。

如果我们有更多关于您正在尝试做什么的背景,我们或许可以帮助您解决这个问题。

例如,您是否有理由使用预定作业而不是脚本包含此类功能?您尝试启用哪些功能?

编辑:我刚想到了为gs.now()添加一个sys_trigger项目.add(5000),或类似的东西。

使用它,一旦我知道它是否有效,我会立即更新这篇文章。

EDIT2:好的,这可能会也可能不会奏效。它似乎适用于我的实例,但请放手一搏,让我知道你的想法。

//Get your scoped scheduled job record here. 
action.setRedirectURL(current);
var rec = new GlideRecord('sysauto_script');
rec.get('89005b244f1d9200bf004a318110c7b2');
//Get a GDT set to 10 seconds from now.
var gdt = new GlideDateTime(gs.nowDateTime());
var now = gdt.getValue();
gdt.add(10000);
var tenSecondsFromNow = gdt.getValue();
//Create a new trigger record
var trig = new GlideRecord('sys_trigger');
trig.initialize();
trig.name = reg.getValue('name');
trig.next_action = tenSecondsFromNow;
trig.error_count = '0';
trig.job_context = '#' + now + '\nfcDocumentClass=sysauto_script\nfcDocumentKey=' + rec.getValue('sys_id');
trig.trigger_type = '0';    //0 = Run Once
trig.state = '0';   //0 = Ready
trig.document = 'sysauto_script';
trig.document_key = rec.getValue('sys_id');
trig.log('false');
trig.next_action = tenSecondsFromNow;
trig.priority = '100';
trig.run_count = '0';
trig.run_dayofmonth = '1';
trig.run_dayofweek = '1';
trig.run_time = '1970-01-01 08:00:00';
trig.trigger_class = 'com.snc.automation.ScriptJob';
trig.upgrade_safe = 'false';
trig.insert();

基本上,我们将来会手动创建触发记录十秒钟。这绕过了对sccTriggerSynchronizer的需求,它在范围应用程序中被禁止(UGH !!)。

祝你好运,我的朋友。 ^ _ ^

答案 1 :(得分:0)

对于范围内的应用,您需要更改:

 SncTriggerSynchronizer.executeNow(rec);

要:

gs.executeNow(rec);
相关问题