KRL使用蜜蜂蜇在扩展的引号内

时间:2011-01-17 18:35:32

标签: krl

扩展引文中有效的蜜蜂刺痛表达是什么?

rule set_persistents {
  select when pageview ".*"
  noop();
  always {
    ent:ecount += 1 from 1;
    app:acount += 1 from 1;
  }
}

rule test_bee_stings {
  select when pageview ".*"
  pre { 
    sum = ent:ecount + app:acount;
    content = <<
      sum is #{sum}<br/>
      sum + 1 is #{sum+1}<br/>
      ecount is #{ent:ecount}<br/>
      acount is #{app:acount}
    >>;
  }
  notify("Results", content) with sticky = true;
}

当我运行时,我什么也得不到(从未看到通知框)。如果我删除了我获得的ecount和acount行

sum is 2
sum + 1 is 21

什么蜜蜂刺痛表达在扩展报价中有效?对于正常引用的字符串,它有什么不同吗?

1 个答案:

答案 0 :(得分:2)

扩展引号中的beestings中使用的变量应该已经具有指定的值而不是表达式。这是因为扩展引号中的beestings在客户端而不是服务器端进行评估。出于前面解释的原因,我也建议不要在beest中使用'sum + 1',即使它目前适用于理解JavaScript的端点。

以下是我将如何写你要做的事情:

ruleset a60x546 {
  meta {
    name "extended-quotes-beesting"
    description <<
      extended-quotes-beesting
    >>
    author "Mike Grace"
    logging on
  }

  rule test_bee_stings {
    select when pageview ".*"
    pre { 
      ecount = ent:ecount + 1;
      acount = app:acount + 1;
      sum = ecount + acount;
      sumplus = sum + 1;
      content = <<
        sum is #{sum}<br/>
        sum + 1 is #{sumplus}<br/>
        ecount is #{ecount}<br/>
        acount is #{acount}
      >>;
    }
    {
      notify("Results", content) with sticky = true;
    }
    always {
      ent:ecount += 1 from 1;
      app:acount += 1 from 1;
    }
  }
}

使用bookmarklet在example.com上多次运行app的动作镜头: alt text

*我还建议不要使用先前的规则后置修改应用程序和实体变量,然后在下一个规则中使用它们,以期增加它们。虽然你做了什么工作,但它在语义上是凌乱的,并且可能比我演示的方式更清晰。

**应该带着一粒盐,因为这只是一个疯狂的人的意见。 :)*