身体不止一个反应?

时间:2011-04-07 05:42:32

标签: krl

所有,我可以在规则体内运行多个defaction吗?或者我只能跑一个?

3 个答案:

答案 0 :(得分:3)

您可以根据需要在规则的pre块中定义任意数量的操作。您可以根据需要在规则的操作块中包含任意数量的操作(只需将操作块括在花括号中)。例如,

rule first_rule {
  select when pageview ".*" setting ()
  pre {
    notify_one = defaction() { notify("notify_one", "First defaction"); };
    notify_two = defaction() { notify("notify_two", "Second defaction"); };
  }
  {
    notify_one();
    notify_two();
  }
}

所以我认为你的问题的答案是肯定的。

答案 1 :(得分:2)

你的问题有点令人困惑,但我会试一试。

使用defaction定义的运行操作就像运行系统定义的操作一样。

如果您想在规则中运行多个操作,则需要将它们包装在{}中,如下所示:

rule foo {
  select when pageview ".*"
  {
    notify("cheese", "brie");
    notify("apple", "golden delicious");
  }
}

答案 2 :(得分:1)

我似乎记得defaction有一个隐含的,可选的'pre'部分,然后是action(s)。如Sam所说,要包含多项操作,您需要{}。

act1 = defaction() {
  {
    notify("Defaction Demo", "<ul id='demo_id'></ul>");
    append("#demo-id", "<li>cheese: brie</li>");
    append("#demo-id", "<li>apple: golden delicious</li>");
  }
};

这对defaction() { { ... } };有效,但如果你想在defaction中有多个动作,则需要额外的花括号。

另见http://docs.kynetx.com/docs/Defaction