2010-12-04 2 views
2

J'ai une piste que j'utilise pour suivre l'historique des applications dans KRL. Je cherche un moyen facile de déboguer la piste, y compris voir ce qui est actuellement sur la piste et l'effacer.Comment inspecter et interagir avec des pistes dans KRL?

Existe-t-il un moyen facile de faire cela dans KRL?

+0

assurez-vous d'accepter la réponse si cela fonctionne et il est la meilleure réponse. –

Répondre

2

La façon la plus simple, pour moi, de voir ce qui est sur la piste est de sortir son contenu vers la console du navigateur.

rule inspect_data_on_trail { 
    select when pageview ".*" 
    pre { 
    visitedDomains = ent:visitedDomains; 
    } 
    { 
    emit <| 
     console.log(visitedDomains); 
    |>; 
    } 
} 

sortie Firebug après l'exécution ruleset plusieurs fois:

alt text

Pour effacer les variables d'entités, y compris les sentiers, je habituellement juste écrire une règle qui sélectionne sur un domaine qui ne fait pas partie de mon application de expérience et effacer les varaibles lorsque l'application est exécutée sur ce domaine.

rule clear_everything { 
    select when pageview "yahoo\.com" 
    { 
    notify("Cleared",":)") with sticky = true; 
    } 
    fired { 
    clear ent:visitedDomains; 
    } 
} 

application Exemple complet:

ruleset a60x458 { 
    meta { 
    name "trail-debugging" 
    description << 
     trail-debugging 
    >> 
    author "Mike Grace" 
    logging on 
    } 

    rule put_data_onto_trail { 
    select when pageview ".*" 
    pre { 
     domain = page:url("domain"); 
    } 
    { 
     notify("Thanks for visiting #{domain}","You visit has been recorded") with sticky = true; 
    } 
    fired { 
     mark ent:visitedDomains with domain; 
    } 
    } 

    rule inspect_data_on_trail { 
    select when pageview ".*" 
    pre { 
     visitedDomains = ent:visitedDomains; 
    } 
    { 
     emit <| 
     console.log(visitedDomains); 
     |>; 
    } 
    } 

    rule clear_everything { 
    select when pageview "yahoo\.com" 
    { 
     notify("Cleared",":)") with sticky = true; 
    } 
    fired { 
     clear ent:visitedDomains; 
    } 
    } 

} 
+0

+1, Bonne réponse! – Alex

Questions connexes