2012-02-27 12 views
1

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); 
    } 
} 

私はそれを両方の方法で試したので、アプリがデプロイされているかどうかは問題ではないようです。私は何が欠けていますか?

答えて

2

のみ特定のドメインは、raise文でドメインとして許可されています

  • 明示
  • HTTP
  • システム
  • 通知
  • エラー
  • PDS

これは将来緩和されるかもしれません。

これはヒアドキュメントで覆われている:https://kynetxdoc.atlassian.net/wiki/display/docs/Raising+Explicit+Events+in+the+Postlude (これはドキュメントのための一時的な家であることに注意してください)

+0

はそれを手に入れました。私は 'pds'は恣意的であると仮定していた。ホワイトリストがあることを知らなかった。ありがとう! –

関連する問題