NodeBrain TM
An Open Source Agent for Event Monitoring Applications     
 
Home

News

Packages

License

Contributors

About


Get NodeBrain at SourceForge.net. Fast, secure and Free Open Source software downloads

=========================================================

NodeBrain 0.6.1 Change Summary

* Released October 11, 2004

* Theme: Cleaning up bits and pieces.

     As a patch release, there is no one grand theme
     here.  However, there are small enhanecments and
     some bug fixes that I found useful in my own
     applications.  For my own purposes, this release
     has been more reliable than 0.6.0.

     What's Next?

     Starting to look forward to a 0.7.0 release.  My
     current plan is to focus on three things.

       1) Systematic testing
       2) Sample application(s)
       3) Skill module enhancements

     Better testing is needed to achieve the level of
     reliability needed before going to a 1.0 version.
     It works fine now for my own applications, but I
     use it the way it works.  It needs to be more 
     graceful in responding to the random command syntax
     a new user might try.  And at least one complete
     sample application is needed to get people started. 
 
* Documentation:

  o  At the time of this release, the "NodeBrain User's
     Guide" has not been updated to reflect changes in
     this release.  When updated, the document will be
     posted on the webset, www.nodebrain.org.  A document
     release file will be posted on the SourceForge
     project page.  Please use the online 0.6.0 document
     for now.

* Incompatibilities:

  o  Nested symbolic substitution for generating terms,
     ${{a}{b}}, is no longer supported.  This feature
     had little merit and conflicted with our desire to
     support symbolic substitution using cell expressions.

  o  Expert skill module compute() methods are now   
     expected to return a grabbed cell.  It is unlikely
     anyone out there has dabbled with writing skill
     modules yet.

  o  Rule actions are no longer performed when a rule
     condition changes after the action is scheduled.
     When a change causes multiple rules to fire, the
     action of one rule may change the condition of
     another.  If this happens, NodeBrain now considers
     it unsafe to perform a scheduled action whose
     condition has changed.  This is because actions
     often use terms within the condition as parameters.
     An "action priority" option has been included to
     help avoid this situation.

* Bugs Fixed:

  o  Multiple bugs related to releasing of objects.

  o  Corrected the order of symbolic substitution and
     reduction.  This does not impact commands injected
     by rules, but does resolve a problem for user
     entered commands starting with a reduction ("$ ").

  o  Eliminated unnecessary pass through symbolic    
     substitution logic for rule action commands that
     don't need it. Check is made at rule definition time 
     now instead of every time the command is parsed.

  o  Symbolic reduction "$  $${..}" to "${..}" is done
     for rule action commands at rule definition time 
     now.  Stopped doing every time the command is parsed.

  o  Rules are no longer allowed to fire more than once
     in a given command cycle. This was documented but 
     not implemented prior to this release.
 
  o  Fixed bugs related to the use of rule terms in cell
     expressions.  A rule term may be used as a name for
     the rule condition cell.  Notice r1 in this example.

       define r1 on(a=1 and b=2):-echo hi
       define r2 on(r1 or c=3):-echo ho

  o  Fixed bugs in the "solve" command.  The solve
     command may now be used multiple times in the
     same context.  State changes may cause "solve"
     to resolve previously unresolved terms. You may
     also assert terms to be unknown, causing solve
     to resolve them again if necessary. 

  o  The "show" command reveals context a little better.
     A context prefix is included when rules are displayed,
     unless the context matches the current context.  When
     a context terms is shown, it is reduced to ".".  A
     period may also be used as an abbreviation in the show
     command.  > show .

  o  The new form of cache assertion introduced in 0.6.0
     was not properly reacting when a threshold was hit.
     The has been fixed, but the fix introduces an 
     unfortunate inconsistency in the assert command. As
     "fixed" the following example will cause rFirst to
     fire twice, once for 1, and once for 2.

        define johnny expert cache(~(5m):x(1));
        johnny. define rFirst if(x._hitState);
	define rAssert on(a=1) johnny(1),johnny(2);
   
     For the moment, I've designed myself into a corner
     here.  Previously we have said that all assertions
     in a given command are applied "concurrently" and
     then rules respond to the collective assertion.
     However, when a cache hits a threshold it forces
     an immediate response.  This means the assertions
     on a single command are no longer "always" applied
     "concurrently".  Here is an example of a situation
     that violates our promise of "concurrent" assignment.

	define c expert cache(x(1));
	define r1 on(a=1);
	define r2 on(a=2);
	define r3 on(a=3);
	assert a=1,c(1),a=2,c(2),a=3,c(3);
 
     In this case, r1, r2, and r3 all respond because
     c(1), c(2), and c(3) all hit a threshold and force
     an immediate reaction.  Had the assertion been as
     follows, only r3 whould fire.

        assert a=1,a=2,a=3;

     In this example, it almost seems like a good thing.
     But, when we change the rules a bit, the problem
     is exposed.  Rules r1 and r2 both fire instead of
     just r2.

        define c expert cache(x(1));
	define r1 on(a=1 and b<>2);
	define r2 on(a=1 and b=2);
        assert a=0,b=0;
	assert a=1,c(1),b=2;

     For now we need to be aware of this and avoid coding
     rules that are sensitive to this problem.  In practice
     it will not be difficult to avoid it, but I'm not
     comfortable with this as a final solution.

* New Features:

  o  Symbolic substitution supports cell expressions

       define r1 on(a=1) x=${trouble{y)*10+3}

  o  Show command supports cell expressions enclosed
     in parentheses as alternative to a term.

       show () [

NodeBrain(TM) is a trademark of The Boeing Company.
Copyright © 2003-2009 The Boeing Company