4

在构建 Atlasboard 作业时,我想控制将数据推送到小部件的位置和时间。

  1. 我找不到记录“间隔”配置参数的位置 - 我的理解是该作业是在每个间隔毫秒安排的。

  2. 我想控制我的工作何时更新小部件。因此我做了一个小测试:

    setInterval(function() {
        x = x+1;
        jobCallback(null, {title: config.widgetTitle + "  - "+x});
    }, 10000);
    

起初我很高兴,因为它似乎奏效了,但我注意到日志消息:

[dashboard: xxx] [job: xxx] 14:04:27.93 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)

[dashboard: xxx] [job: xxx] 14:04:27.96 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)

[dashboard: xxx] [job: xxx] 14:04:37.94 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)

我可能会补充一点,几分钟后,作业似乎会自我复制,并且全局参数似乎无法在作业实例之间保持其全局值 - 这样在我的单个“重复作业”变成十个作业后不久,而不是 100 个等。

有没有办法更好地控制数据何时推送到小部件?有比https://bitbucket.org/atlassian/atlasboardhttp://atlasboard.bitbucket.org/更好的文档吗?

4

1 回答 1

3

我在搜索和查看 jobWorker 代码时发现了以下内容(我在任何地方都找不到任何文档)。

有一个 pushUpdate 成员函数被添加到 jobWorker - 它似乎最好在 Job onInit() 期间使用 - 这样我们保证它只被激活一次!

onInit: function (config, dependencies) {
   var jobWorker = this;
   var x = 0;
   setInterval(function() {
       x = x+1;
       jobWorker.pushUnpdate({title: config.widgetTitle + "  - "+x);
   }, 10000);
}

请注意,如果您控制更新的调度,则无需实现 Job onRun() - 这意味着不会为您的 Job 激活调度程序。

于 2016-04-20T07:10:46.227 回答