在没有调度程序的情况下使用Atlasboard Job

时间:2016-04-19 13:57:19

标签: atlasboard

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

  1. 我无法找到记录“interval”配置参数的位置 - 我的理解是每隔ms会安排一次作业。

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

    setInterval(function() {
        x = x+1;
        jobCallback(null, {title: config.widgetTitle + "  - "+x});
    }, 10000);
    
  3. 起初我感到高兴,因为它似乎有效,但我注意到了日志消息:

    [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个等等。 / p>

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

1 个答案:

答案 0 :(得分:1)

我在搜索过程中发现了以下内容并查看了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() - 这意味着不会为您的作业激活任何计划程序。