在没有明确使用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 (注意,这是本文档的临时住所)

+0

明白了。我曾假设“pds”是任意的;不知道有白名单。谢谢! – 2012-02-27 22:45:13