我有一个需要在事件更新之前运行的业务规则。问题是这个脚本需要从“脚本包含”中启动一个很慢的函数。我希望这个调用是异步的,以便表单可以加载。
有没有办法做到这一点?
答案 0 :(得分:4)
我假设您已经了解async business rules,并且那些不适合您,因为您还需要同步执行某些操作。
您可以使用脚本中的GlideRunScriptJob
在后台线程上执行脚本。如果您已经有一个脚本,只需将其作为字符串传递给GlideRunScriptJob上的scheduleScript
方法,如下所示:
var job = new GlideRunScriptJob();
job.scheduleScript("new CustomScriptInclude().foo()");
答案 1 :(得分:2)
您也可以使用事件和脚本操作执行此操作。因此,在业务规则中,您将生成事件并将脚本操作附加到该事件。然后在处理事件时运行该脚本。
如果您希望将来运行它,可以使用gs.eventQueueScheduled函数来安排事件在将来某个时间触发:
gs.eventQueueScheduled(event.name,current,parameter1,parameter2,运行事件的数据和时间);