如何在emit中设置带有值的实体变量

  • 本文关键字:实体 变量 设置 emit krl
  • 更新时间 :
  • 英文 :


我在一个发出的代码块中检索一个值,我想为它设置一个实体变量。这就是我要做的:

rule read_form {
    select when web submit "#loginForm"
    pre {
    }
    {
        emit <|
            function myFunction() {
                var myValue = 10;
            }
            myFunction();
        |>;
    }
    fired {
        set ent:myValue myValue;
    }
}

您的架构方式将不起作用。

原因如下:

select语句和预块在事件请求第一次到达时在Kynetx服务器上进行评估。如果select语句的计算结果为true,则该规则将在对传入Kynetx服务器的引发事件的HTTP响应中返回emit JavaScript。在该HTTP响应从Kynetx服务器返回到浏览器之前,如果您有一个将在HTTP响应中返回的事件,则postlude中的fired语句将执行。这意味着在javascript返回到浏览器之前,在Kynetx服务器上计算并执行select语句、pre块和postlude块。所以我猜简短的答案是,postlude不知道'myValue'的值是什么,因为范围是非常不同的(不同的机器)。

希望这对你有帮助。我可能应该做一个图表来更好地解释一下,但我今晚有一些重要的工作需要完成。根据你的回答,我可能会回到这个问题,并在以后更好地回答它。

那么,您如何使其工作呢?你可以完成我认为我理解你试图通过在你发出的javascript块中传递所需的值来引发另一个事件。这意味着该值将在接收引发事件的规则的pre块和postlude块中可用,以便您可以将其保存在实体变量中。

你也可以看看我写的关于从JavaScript中引发事件的博文,它可能有助于更多地了解这个主题http://kynetxappaday.wordpress.com/2010/12/16/day-8-raise-web-events-from-javascript/

相关内容

  • 没有找到相关文章