Wiki

Clone wiki

vegas-js / system.logics

The conditional task engine

Generality

The conditional tasks are used to define which tasks will be executed based on the outcome of a given test defines with a specific conditional rule.

The conditional tasks are very powerful cause while making sure not to execute the complex instructions immediately, It allows to pre-set advanced strategies before launching the all important processes when we want during the application life cycle.

The conditional rules defines the logic of the conditional blocks who serve to create a powerful conditional execution logic system. All rules are defines with a set of conditions : equality, comparison, null or undefined object, etc.

Package system.rules

To create a conditional task you must use conditional rules to test and evaluate values or objects in your applications.

The system.rules package defines a basic interface and classes to defines this conditional rules or create your custom rules.

Rule

The basic interface of all conditional rules in the system.rules package. You can use all conditional rules in the system.rules package or create your custom conditions.

**Usage : **

#!javascript
Rule.eval()

Example

#!javascript
var IsPositive = function( value )
{
    this.value = isNaN(value) ? 0 : value ;
}

IsPositive.prototype = Object.create( Rule.prototype ,
{
    eval : { value : function() 
    {
         return this.value > 0 ;
    }}
}

The IsPositive class is a custom conditional rule who implements the Rule interface to evaluate if a value is a number and positive.

In the system.rules package you can find a set of simple rules with the classes : True, False, Not, Equals, NotEquals, And, Or, etc.

BooleanRule

Evaluates a basic boolean condition.

**Usage : **

#!javascript
new BooleanRule( b:Boolean ) new BooleanRule( cond:Condition )

Example

#!javascript
var rule1 = new BooleanRule( true ) ; 
var rule2 = new BooleanRule( false ) ; 
var rule3 = new BooleanRule( rule1 ) ;

trace( rule1.eval() ) ; // true 
trace( rule2.eval() ) ; // false 
trace( rule3.eval() ) ; // true 

Equals

Defines if two values are equals.

**Usage : **

#!javascript
new Equals( value1:* , value2:* )

Note : value1 can be an system.Equatable object, a system.rules.Rule Object, or an object with a equals() method or the == operator is used.

**Example : **

#!javascript

var e ;

///// Compares objects.

e = new Equals( 1 , 1 ) ; 
trace( e.eval() ) ; // true

e = new Equals( 1 , 2 ) ; 
trace( e.eval() ) ; // false

///// Compares Condition objects.

var cond1 = new BooleanRule( true ) ; 
var cond2 = new BooleanRule( false ) ; 
var cond3 = new BooleanRule( true ) ;

e = new Equals( cond1 , cond1 ) ; 
trace( e.eval() ) ; // true

e = new Equals( cond1 , cond2 ) ; 
trace( e.eval() ) ; // false

e = new Equals( cond1 , cond3 ) ; 
trace( e.eval() ) ; // true

///// Compares Equatable objects.

var equals = function( o:Object ):Boolean { return this.id == o.id ; }

var o1 = { id:1 , equals:equals } ; 
var o2 = { id:2 , equals:equals } ; 
var o3 = { id:1 , equals:equals } ;

e = new Equals( o1 , o1 ) ; 
trace( e.eval() ) ; // true

e = new Equals( o1 , o2 ) ; 
trace( e.eval() ) ; // false

e = new Equals( o1 , o3 ) ; 
trace( e.eval() ) ; // true

True

Evaluates if the value or the condition is true.

Usage :

#!javascript
new True( condition:* )

Example :

#!javascript

var cond1 = new True( true ) ; 
var cond2 = new True( false ) ; 
var cond3 = new True( cond1 ) ; 
var cond4 = new True( cond2 ) ;

trace( cond1.eval() ) ; // true 
trace( cond2.eval() ) ; // false 
trace( cond3.eval() ) ; // true 
trace( cond4.eval() ) ; // false

False

Evaluates if the value or the condition is false.

**Usage : **

#!javascript
new False( condition:* )

Example :

#!javascript
var cond1 = new False( true ) ; 
var cond2 = new False( false ) ; 
var cond3 = new False( cond1 ) ; 
var cond4 = new False( cond2 ) ;

trace( cond1.eval() ) ; // false 
trace( cond2.eval() ) ; // true 
trace( cond3.eval() ) ; // true 
trace( cond4.eval() ) ; // false 

Not

Used to perform logical negation on a specific condition.

Usage :

#!javascript
new Not( b:Boolean ) 
new Not( cond:Condition )

Example :

#!javascript
var cond1 = new BooleanRule( true ) ; 
var cond2 = new BooleanRule( false ) ;

var no1 = new Not( true ) ; 
var no2 = new Not( false ) ; 
var no3 = new Not( cond1 ) ; 
var no4 = new Not( cond2 ) ;

trace( no1.eval() ) ; // false 
trace( no2.eval() ) ; // true 
trace( no3.eval() ) ; // false 
trace( no4.eval() ) ; // true 

NotEquals

Performs a logical comparison of the two values to determine if are not equal.

**Usage : **

#!javascript
new NotEquals( value1 , value2 )

Example :

#!javascript
var ne ;

///// Compares objects.

ne = new NotEquals( 1 , 1 ) ; 
trace( ne.eval() ) ; // false

ne = new NotEquals( 1 , 2 ) ; 
trace( ne.eval() ) ; // true

///// Compares Condition objects.

var cond1 = new BooleanRule( true ) ; 
var cond2 = new BooleanRule( false ) ; 
var cond3 = new BooleanRule( true ) ;

ne = new NotEquals( cond1 , cond1 ) ; 
trace( ne.eval() ) ; // false

ne = new NotEquals( cond1 , cond2 ) ; 
trace( ne.eval() ) ; // true

ne = new NotEquals( cond1 , cond3 ) ; 
trace( ne.eval() ) ; // false

///// Compares Equatable objects.

var equals = function( o )
{ 
    return this.id == o.id ; 
}

var o1 = { id:1 , equals:equals } ; 
var o2 = { id:2 , equals:equals } ; 
var o3 = { id:1 , equals:equals } ;

ne = new NotEquals( o1 , o1 ) ; 
trace( ne.eval() ) ; // false

ne = new NotEquals( o1 , o2 ) ; 
trace( ne.eval() ) ; // true

ne = new NotEquals( o1 , o3 ) ; 
trace( ne.eval() ) ; // false 

And

Used to perform a logical conjunction on two conditions and more.

Usage :

#!javascript
new And( c1:Condition , c2:Condition , …conditions:Array = null )

Example :

#!javascript
var cond1 = new BooleanRule( true ) ; 
var cond2 = new BooleanRule( false ) ; 
var cond3 = new BooleanRule( true ) ;

var a ;

a = new And( cond1 , cond1 ) ; 
trace( a.eval() ) ; // true

a = new And( cond1 , cond1 , cond1 ) ; 
trace( a.eval() ) ; // true

a = new And( cond1 , cond2 ) ; 
trace( a.eval() ) ; // false

a = new And( cond2 , cond1 ) ; 
trace( a.eval() ) ; // false

a = new And( cond2 , cond2 ) ; 
trace( a.eval() ) ; // false

a = new And( cond1 , cond2 , cond3 ) ; 
trace( a.eval() ) ; // false

a = new And( cond1 , cond3 , cond2 ) ; 
trace( a.eval() ) ; // false 

Or

Used to perform a logical disjunction on two conditions or more.

**Usage : **

#!javascript
new Or( c1:Rule , c2:Rule , …conditions:Array = null )

**Example : **

#!javascript
var cond1 = new BooleanRule( true ) ; 
var cond2 = new BooleanRule( false ) ; 
var cond3 = new BooleanRule( true ) ;

var o ;

o = new Or( cond1 , cond1 ) ; 
trace( o.eval() ) ; // true

o = new Or( cond1 , cond2 ) ; 
trace( o.eval() ) ; // true

o = new Or( cond2 , cond1 ) ; 
trace( o.eval() ) ; // true

o = new Or( cond2 , cond2 ) ; 
trace( o.eval() ) ; // false

o = new Or( cond1 , cond2 , cond3 ) ; 
trace( o.eval() ) ; // true

o = new Or( cond1 , cond3 , cond2 ) ; 
trace( o.eval() ) ; // true

GreaterThan

Use it to indicates if a value is greater than another value.

Usage :

#!javascript
new GreaterThan( value1 , value2 )

Example :

#!javascript
var rule ;

rule = new GreaterThan( 1 , 1 ) ; 
trace( rule.eval() ) ; // false

rule = new GreaterThan( 1 , 2 ) ; 
trace( rule.eval() ) ; // false

rule = new GreaterThan( 3 , 2 ) ; 
trace( rule.eval() ) ; // true

GreaterOrEqualsThan

Use it to indicates if a value is greater or equal than another value.

Usage :

#!javascript
new GreaterOrEqualsThan( value1 , value2 )

Example :

#!javascript
var rule ;

rule = new GreaterOrEqualsThan( 1 , 1 ) ; 
trace( rule.eval() ) ; // true

rule = new GreaterOrEqualsThan( 1 , 2 ) ; 
trace( rule.eval() ) ; // false

rule = new GreaterOrEqualsThan( 3 , 2 ) ; 
trace( rule.eval() ) ; // true

LessThan

Use it indicates if a value is less than another value.

Usage :

#!javascript
new LessThan( value1 , value2 )

Example :

#!javascript
var rule ;

rule = new LessThan( 1 , 1 ) ; 
trace( rule.eval() ) ; // false

rule = new LessThan( 1 , 2 ) ; 
trace( rule.eval() ) ; // true

rule = new LessThan( 3 , 2 ) ; 
trace( rule.eval() ) ; // false 

LessOrEqualsThan

Use it indicates if a value is less or equal than another value.

Usage :

#!javascript
new LessOrEqualsThan( value1 , value2 )

*Example :

#!javascript
var rule ;

rule = new LessThan( 1 , 1 ) ; 
trace( rule.eval() ) ; // false

rule = new LessThan( 1 , 2 ) ; 
trace( rule.eval() ) ; // true

rule = new LessThan( 3 , 2 ) ; 
trace( rule.eval() ) ; // false 

Even

Evaluates if a value is even.

Usage :

#!javascript
new Even( value )

Example :

#!javascript
var rule ;

rule = new Even( 0 ) ; 
trace( rule.eval() ) ; // true

rule = new Even( 1 ) ; 
trace( rule.eval() ) ; // false

rule = new Even( 2 ) ; 
trace( rule.eval() ) ; // true

rule = rule Even( 3 ) ; 
trace( rule.eval() ) ; // false 

Odd

Evaluates if the value is odd.

Usage :

#!javascript
new Odd( value1 )

Example :

#!javascript
var rule ;

rule = new Odd( 0 ) ; 
trace( rule.eval() ) ; // false

rule = new Odd( 1 ) ; 
trace( rule.eval() ) ; // true

rule = new Odd( 2 ) ; 
trace( rule.eval() ) ; // false

rule = new Odd( 3 ) ; 
trace( rule.eval() ) ; // true

DivBy

Evaluates if the modulo of two values returns 0

**Usage : **

#!javascript
new DivBy( value1 , value2 )

Example :

#!javascript
var cond ;

cond = new DivBy( 4 , 2 ) ; 
trace( cond.eval() ) ; // true

cond = new DivBy( 5 , 2 ) ; 
trace( cond.eval() ) ; // false

Null

Evaluates if the value is null.

Usage :

#!javascript
new Null( value:* , strict:Boolean = false )

Example :

#!javascript

var cond:Rule ;

cond = new Null( undefined , true ) ; trace( cond.eval() ) ; // false

cond = new Null( undefined ) ; trace( cond.eval() ) ; // true

cond = new Null( null ) ; trace( cond.eval() ) ; // true

cond = new Null( "hello" ) ; trace( cond.eval() ) ; // false

Undefined

Evaluates if the value is undefined.

Usage :

#!javascript
new Undefined( value:* )

Example :

#!javascript
var value ;

var cond1 = new Undefined( value ) ;

value = {} ;

var cond2 = new Undefined( value ) ;

trace( cond1.eval() ) ; // true 
trace( cond2.eval() ) ; // false 

EmptyString

Evaluates if the value is an empty String.

Usage :

#!javascript
new EmptyString( value:* )

Example :

#!javascript
var cond1 = new EmptyString( null ) ; 
var cond2 = new EmptyString( 1 ) ; 
var cond3 = new EmptyString( "hello" ) ; 
var cond4 = new EmptyString( "" ) ;

trace( cond1.eval() ) ; // false 
trace( cond2.eval() ) ; // false
trace( cond3.eval() ) ; // false 
trace( cond4.eval() ) ; // true 

Zero

Evaluates if the value is 0.

Usage :

#!javascript
new Zero( value:* )

Example :

#!javascript
var cond ;

cond = new Zero( 0 ) ; 
trace( cond.eval() ) ; // true

cond = new Zero( 10 ) ; 
trace( cond.eval() ) ; // false 

Package system.logic

system.logic.IfTask

Performs some tasks based on whether a given condition holds true or not.

The system.logic.IfTask class extends the system.process.Task class and implements the system.process.Action interface, it can be used in a Chain or BatchTask object.

Usage :

#!javascript
new IfTask ( rule:Boolean , thenTask:Action , elseTask:Action , …elseIfTask:Array ) 
new IfTask ( rule:Rule , thenTask:Action , elseTask:Action , …elseIfTask:Array )

Methods

  • task.addRule( rule:**):IfTask
  • task.addThen( action:Action ):IfTask
  • task.addElse( action:Action ):IfTask
  • task.addElseIf( …elseIfTasks:Array ):IfTask
  • task.removeRule():IfTask
  • task.removeThen():IfTask
  • task.removeElse():IfTask
  • task.removeAllElseIf():IfTask**

Note : In the constructor of the IfTask class and this 'addElseIf' method the optional …elseIfTasks Array arguments are a suite of ElseIf objects or a couple of Rule and Task objects.

In all the next examples we define and use the custom class Message :

#!javascript
var Message = function( message ) 
{ 
    this.message = message ; 
}

Message.prototype = Object.create( Task.prototype , 
{
   run : { value : function()
   {
       this.notifyStarted() ;
       trace( message ) ;
       this.notifyFinished() ;
   }
}) ;

Example 1

#!javascript
var task = new IfTask() ;

task.addRule( new Equals(1,2) ) ) ; 
task.addThen( new Message("then") ) ; 
task.addElse( new Message("else") ) ;

task.addElseIf( new BooleanRule(false) , new Message("elseif #1") )

task.addElseIf( 
    new ElseIf(new BooleanRule(true) , new Message("elseif #2")) , 
    new ElseIf(new BooleanRule(true) , new Message("elseif #3")) ,
    new BooleanRule(true) , new Message("elseif #4") ,
    new BooleanRule(true) , new Message("elseif #5") 
) ;

task.run() ; 

Example 2 (inline invocation)

#!javascript
var task = new IfTask() ;

task.addRule(new Equals(1,2))
    .addThen(new Message("then")) 
    .addElse(new Message("else")) .run() ; 

system.logic.ElseIf

Performs a specific elseif conditional task in the IfTask instances.

usage

#!javascript
new ElseIf ( rule /*Boolean*/ , then /*Action*/ ) new ElseIf ( rule /*Rule*/ , then /*Action*/ )

example :

#!javascript
var value = 10 ;

var ei1 = new ElseIf((value>10),new Message("value > 10")) ; 
var ei2 = new ElseIf(new Equals(value,10),new Message("value == 10")) ;

var task = new IfTask() ;

task.addRule( value < 10 ) 
    .addThen( new Message("value < 10") ) 
    .addElseIf( ei1 , ei2 ) .run() ; 

system.logic.ElseIf subclasses

You can use a pre-set of ElseIf subclasses, all this classes extends the ElseIf class and defines a specific constructor who defines the specific rules to use it easily and automatically :

ElseIfEmptyString, ElseIfEquals, ElseIfFalse, ElseIfGreaterOrEqualsThan, ElseIfGreaterThan, ElseifLessOrEqualsThan, ElseIfLessThan, ElseIfNull, ElseIfTrue, ElseIfZero

example

#!javascript
var value = 0 ;

var task = new IfTask() ;

task.addRule( value < 10 ) .addThen( new Message("value < 10") ) .addElseIf( new ElseIfZero( value , new Message("value == 0") ) ) .run() ; ```

### system.logic.IfTrue

Perform some tasks based on whether a given condition holds true.

The **system.logic.IfTrue** class extends the IfTask class. This conditional task use a **system.rules.True** rule to defines the process.

**usage**
#!javascript new IfTrue( condition:* , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )
**example**
var task ;

var value = 10 ;

task = new IfTrue(value == 10,new Message("then"),new Message("else")) ;

task.run() ; // then

system.logic.IfFalse

Perform some tasks based on whether a given condition holds false.

The system.logic.IfFalse class extends the IfTask class. This conditional task use a system.rules.False rule to defines the process.

usage

new IfFalse( condition:* , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )

example

``` import examples.process.Message; import system.logic.IfFalse;

var task:IfFalse ;

var value:uint = 10 ;

task = new IfFalse(value == 10,new Message("then"),new Message("else")) ;

task.run() ; // else ```

system.logic.IfEquals

Perform some tasks based on whether a given condition holds equality of two values.

The system.logic.ifEquals class extends the IfTask class. This conditional task use a system.rules.Equals rule to defines the process.

usage

new IfEquals( value1:* , value2:* , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )

example

``` import examples.process.Message; import system.logic.IfEquals;

var a:uint = 10 ; var b:uint = 20 ;

var task:IfEquals ;

task = new IfEquals( 10 , 10 , new Message("then"), new Message("else")) ; task.run() ; // then

task = new IfEquals( 10 , 20 , new Message("then"), new Message("else")) ; task.run() ; // else ```

system.logic.IfNull

Perform some tasks based on whether a given value is null (strict or not).

The system.logic.IfNull class extends the IfTask class. This conditional task use a system.rules.Null rule to defines the process.

usage

new IfNull( value:* , strict:Boolean = false , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )

example

``` import examples.process.Message; import system.logic.IfNull;

var task:IfNull ;

var value:* ;

task = new IfNull( undefined , true , new Message("then #1") , new Message("else #1") ) ; task.run() ; // else #1

task = new IfNull( undefined , false , new Message("then #2") , new Message("else #2") ) ; task.run() ; // then #2

task = new IfNull( null , false , new Message("then #3") , new Message("else #3") ) ; task.run() ; // then #3

task = new IfNull( "hello" , false , new Message("then #4") , new Message("else #4") ) ; task.run() ; // else #4 ```

system.logic.IfUndefined

Perform some tasks based on whether a given value is undefined.

The system.logic.IfUndefined class extends the IfTask class. This conditional task use a system.rules.Undefined rule to defines the process.

usage

new IfUndefined( value:* , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )

example

``` import examples.process.Message; import system.logic.IfUndefined;

var task:IfUndefined ;

var value:* ;

task = new IfUndefined(value,new Message("then #1"),new Message("else #1")) ; task.run() ; // then #1

value = null ; task = new IfUndefined(value,new Message("then #2"),new Message("else #2")) ; task.run() ; // else #2

value = "hello" ; task = new IfUndefined(value,new Message("then #3"),new Message("else #3")) ; task.run() ; // else #3 ```

system.logic.IfZero

Perform some tasks based on whether a given value is 0.

The system.logic.IfZero class extends the IfTask class. This conditional task use a system.rules.Zero rule to defines the process.

usage

new IfZero( value:* , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )

example

``` package examples { import system.logic.IfZero;

import flash.display.Sprite;

public class IfZeroExample extends Sprite
{
    public function IfZeroExample()
    {
        var task:IfZero ;

        var value:uint ;

        task = new IfZero( value , new Then(), new Else() ) ;
        task.run() ; // then

        value = 10 ;

        task = new IfZero( value , new Then(), new Else() ) ;
        task.run() ; // else

        value = 0 ;

        task = new IfZero( value , new Then(), new Else() ) ;
        task.run() ; // then
    }
}
}

import system.process.Task;

class Then extends Task { public function Then() {}

public override function run( ...arguments:Array ):void
{
    notifyStarted() ;
    trace( "then" ) ;
    notifyFinished() ;
}
}

class Else extends Task { public function Else() {}

public override function run( ...arguments:Array ):void
{
    notifyStarted() ;
    trace( "else" ) ;
    notifyFinished() ;
}
} ```

system.logic.IfEmptyString

Perform some tasks based on whether a given value is an empty string ("").

The system.logic.IfEmptyString class extends the IfTask class. This conditional task use a system.rules.EmptyString rule to defines the process.

usage

new IfEmptyString( value:* , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )

example

``` package examples { import system.logic.IfEmptyString;

import flash.display.Sprite;

public class IfEmptyStringExample extends Sprite
{
    public function IfEmptyStringExample()
    {
        var task:IfEmptyString ;

        var value:String ;

        task = new IfEmptyString( value , new Then(), new Else() ) ;
        task.run() ; // else

        value = "" ;

        task = new IfEmptyString( value , new Then(), new Else() ) ;
        task.run() ; // then

        value = "hello" ;

        task = new IfEmptyString( value , new Then(), new Else() ) ;
        task.run() ; // else
    }
}
}

import system.process.Task;

class Then extends Task { public function Then() {}

public override function run( ...arguments:Array ):void
{
    notifyStarted() ;
    trace( "then" ) ;
    notifyFinished() ;
}
}

class Else extends Task { public function Else() {}

public override function run( ...arguments:Array ):void
{
    notifyStarted() ;
    trace( "else" ) ;
    notifyFinished() ;
}
} ```

system.logic.IfGreaterThan

Perform some tasks based on whether a given value is greater than another value.

The system.logic.IfGreaterThan class extends the IfTask class. This conditional task use a system.rules.GreaterThan rule to defines the process.

usage

new IfGreaterThan( value1:* , value2:* , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )

example

``` package examples { import system.logic.IfGreaterThan;

import flash.display.Sprite;

public class IfGreaterThanExample extends Sprite
{
    public function IfGreaterThanExample()
    {
        var task:IfGreaterThan ;

        var th:Then = new Then() ;
        var el:Else = new Else() ;

        var value1:uint = 10 ;
        var value2:uint = 20 ;

        task = new IfGreaterThan(value1,value2,th,el) ;
        task.run() ; // else

        task = new IfGreaterThan(value2,value1,th,el) ;
        task.run() ; // then

        task = new IfGreaterThan(value1,value1,th,el) ;
        task.run() ; // else
    }
}
}

import system.process.Task;

class Then extends Task { public function Then() {}

public override function run( ...arguments:Array ):void
{
    notifyStarted() ;
    trace( "then" ) ;
    notifyFinished() ;
}
}

class Else extends Task { public function Else() {}

public override function run( ...arguments:Array ):void
{
    notifyStarted() ;
    trace( "else" ) ;
    notifyFinished() ;
}
} ```

system.logic.IfGreaterOrEqualsThan

Perform some tasks based on whether a given value is greater or equals than another value.

The system.logic.IfGreaterOrEqualsThan class extends the IfTask class. This conditional task use a system.rules.GreaterOrEqualsThan rule to defines the process.

usage

new IfGreaterOrEqualsThan( value1:* , value2:* , thenTask:Action = null , elseTask:Action = null , ...elseIfTasks:Array )

example

``` package examples { import system.logic.IfGreaterOrEqualsThan;

import flash.display.Sprite;

public class IfGreaterOrEqualsThanExample extends Sprite
{
    public function IfGreaterOrEqualsThanExample()
    {
        var task:IfGreaterOrEqualsThan ;

        var th:Then = new Then() ;
        var el:Else = new Else() ;

        var value1:uint = 10 ;
        var value2:uint = 20 ;

        task = new IfGreaterOrEqualsThan(value1,value2,th,el) ;
        task.run() ; // else

        task = new IfGreaterOrEqualsThan(value2,value1,th,el) ;
        task.run() ; // then

        task = new IfGreaterOrEqualsThan(value2,value1,th,el) ;
        task.run() ; // then
    }
}
}

import system.process.Task;

class Then extends Task { public function Then() {}

public override function run( ...arguments:Array ):void
{
    notifyStarted() ;
    trace( "then" ) ;
    notifyFinished() ;
}
}

class Else extends Task { public function Else() {}

public override function run( ...arguments:Array ):void
{
    notifyStarted() ;
    trace( "else" ) ;
    notifyFinished() ;
}
} 

system.logic.IfLessThan

Perform some tasks based on whether a given value is less than another value.

The system.logic.IfLessThan class extends the IfTask class. This conditional task use a system.rules.LessThan rule to defines the process.

Usage :

#!javascript
new IfLessThan( value1 , value2 , thenTask /*Action*/ = null , elseTask /*Action*/ = null , ...elseIfTasks )

Example :

#!javascript
var Else = function() {}
Else.prototype = Object.create( Task.prototype , 
{
    run : { value : function() 
    {
        this.notifyStarted() ;
        console.log( "else" ) ;
        this.notifyFinished() ;
    }}
});

var Then = function() {}
Then.prototype = Object.create( Task.prototype , 
{
    run : { value : function() 
    {
        this.notifyStarted() ;
        console.log( "then" ) ;
        this.notifyFinished() ;
    }}
});

var task ;

var th = new Then() ;
var el = new Else() ;

var value1 = 10 ;
var value2 = 20 ;

task = new IfLessThan(value1,value2,th,el) ;
task.run() ; // then

task = new IfLessThan(value2,value1,th,el) ;
task.run() ; // else

task = new IfLessThan(value1,value1,th,el) ;
task.run() ; // else

system.logic.IfLessOrEqualsThan

Perform some tasks based on whether a given value is less or equals than another value.

The system.logic.IfLessOrEqualsThan class extends the IfTask class. This conditional task use a system.rules.LessOrEqualsThan rule to defines the process.

usage

#!javascript
new IfLessOrEqualsThan( value1 , value2 , thenTask /*Action*/ = null , elseTask /*Action*/ = null , ...elseIfTasks /*Action*/ )

example :

#!javascript
var Else = function() {}
Else.prototype = Object.create( Task.prototype , 
{
    run : { value : function() 
    {
        this.notifyStarted() ;
        console.log( "else" ) ;
        this.notifyFinished() ;
    }}
});

var Then = function() {}
Then.prototype = Object.create( Task.prototype , 
{
    run : { value : function() 
    {
        this.notifyStarted() ;
        console.log( "then" ) ;
        this.notifyFinished() ;
    }}
});

var task ;

var th = new Then() ;
var el = new Else() ;

var value1 = 10 ;
var value2 = 20 ;

task = new IfLessOrEqualsThan(value1,value2,th,el) ;
task.run() ; // then

task = new IfLessOrEqualsThan(value2,value1,th,el) ;
task.run() ; // else

task = new IfLessOrEqualsThan(value2,value1,th,el) ;
task.run() ; // then

Updated