<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 12/08/2011 11:22, Wolfgang Laun wrote:
<blockquote
cite="mid:CANaj1Lcnd80ZMZHn4XiTAwt5Ut8jDbhd_taD45O4nvHpiWiqhQ@mail.gmail.com"
type="cite">One term (probably too long) would be "interjection".<br>
<br>
A more pictorial word is "flake", which (thinking of snowflake)
provides an inkling for the fast fade away.<br>
</blockquote>
The context here is I'm working on an adventure game. You insert
commands, the engine evaluates what to do with them, then you
retract it again. Once the initial conflict set is evaluated there
is no more use for the fact, and you end with redundant rules. I'd
rather declare @liftetime(flake) @liftetime(durable) and have the
engine handle that, or something along those lines/terms. Grindwork
also adds something slightly different called "consume" for handling
similar situations:<br>
<a class="moz-txt-link-freetext" href="http://www.grindwork.com/site/node/6">http://www.grindwork.com/site/node/6</a><br>
"This rule fires when those conditions in the 'when' clause become
true. When they become true, the "consume" causes the removal of the
client message and the old alias (if one was set). The "rising"
actions add (+ means add to the knowledge base) facts. One fact is
the new alias, and the other is that an alias has changed. The alias
changed fact allows others rules to notify people in the channel
that the alias changed."<br>
<br>
<br>
Currently how Commands are handled:<br>
rule invalidMove no-loop when<br>
$c : MoveCommand($d : direction)<br>
$h : Here( $l : location)<br>
not ?connect( $d, $l; ) <br>
then<br>
System.out.println( rule.name + ':' + $c );<br>
end<br>
<br>
rule validMove no-loop when<br>
$c : MoveCommand($d : direction)<br>
$h : Here( $l : location)<br>
exists ?connect( $d, $l; ) <br>
then<br>
System.out.println( rule.name + ':' + $c );<br>
insert( new ExitEvent( $l ) );<br>
insert( new EnterEvent( $d ) );<br>
System.out.println( $d );<br>
modify( $h ) { location = $d };<br>
end<br>
<br>
rule retractCommand salience -100 when<br>
$c : Command()<br>
then<br>
retract( $c );<br>
end<br>
<blockquote
cite="mid:CANaj1Lcnd80ZMZHn4XiTAwt5Ut8jDbhd_taD45O4nvHpiWiqhQ@mail.gmail.com"
type="cite"><br>
-W<br>
<br>
<br>
<div class="gmail_quote">
On 12 August 2011 12:00, Mark Proctor <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:mproctor@codehaus.org">mproctor@codehaus.org</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid
rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left:
1ex;">
What would you call a fact that is inserted once and the
conflict set<br>
computed (the rules that can fire). The fact is then retracted
so no<br>
more matches can take place, but the conflict set itself is
allowed to<br>
fire (assuming their other facts remain true).<br>
<br>
I think this is quite a common use case and most users will
handle this<br>
via a lower salience and retracting the fact manually, but I
think it's<br>
useful enough to build in as a keyword on type declaration. We
just need<br>
a name for it :)<br>
<br>
Mark<br>
<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a moz-do-not-send="true"
href="https://lists.jboss.org/mailman/listinfo/rules-users"
target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</blockquote>
</div>
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
rules-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>