在没有明确使用KRL的情况下举办活动
问题描述:
我正在编写一个引发活动的应用,类似于Phil Windley的personal data manager application的工作方式。但是,如果我尝试使用任何事件域但explicit
,事件不会传播。以下规则适用于explicit
作为域,但不适用于driverreg
。在没有明确使用KRL的情况下举办活动
rule driver_info_submit {
select when web pageview ".*"
pre {
driver_name = "Joe Driver";
driver_phone = "111-555-1212";
msg = <<
Current driver info: #{ent:driver_name}, #{ent:driver_phone}
>>;
}
notify("Started", msg);
fired {
raise explicit event new_driver_data with driver_name=driver_name and driver_phone=driver_phone;
}
}
// Save driver name
rule save_driver_name {
select when explicit new_driver_data
pre {
driver_name = event:param("driver_name") || ent:driver_name;
driver_phone = event:param("driver_phone") || ent:driver_phone;
}
noop();
always {
set ent:driver_name driver_name;
set ent:driver_phone driver_phone;
raise explicit event driver_data_updated;
}
}
rule driver_info_updated {
select when explicit driver_data_updated
{
notify("Driver name", ent:driver_name);
notify("Driver phone", ent:driver_phone);
}
}
它似乎不是应用程序是否部署的问题,因为我已经尝试过这两种方式。我错过了什么?
答
只有特定的域可以作为raise语句域:
- 明确
- HTTP
- 系统
- 通知
- 错误
- PDS
这可能会在未来放松。
这是覆盖在这里的文件:https://kynetxdoc.atlassian.net/wiki/display/docs/Raising+Explicit+Events+in+the+Postlude (注意,这是本文档的临时住所)
明白了。我曾假设“pds”是任意的;不知道有白名单。谢谢! – 2012-02-27 22:45:13