This is the mail archive of the kawa@sources.redhat.com mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Java rule engine with rules expressed in Scheme


> Specifically, lets say I have a scheme script called test.scm.

If you already have the test.scm file there I would (as Per also
suggests) just compile test.scm and call the function directly from
Java.  This is easier than trying to load the file/definition on the
fly.

Attached is an example with a completely arbitrary cash equivalent
algorithm.

Regards,
Chris Dean

import kawa.standard.Scheme;

public class JavaCaller {
    static public void main( String args[] )
        throws Throwable
    {
        Scheme.registerEnvironment();
        
        Security mySecurity1 = new Security( 1, 2, 3 );
        SchemeRunner.checkCash( mySecurity1 );

        if( mySecurity1.isCashEquiv() )
            System.out.println( "Security1 is a cash equivalent." );
        else
            System.err.println( "Security1 is not a cash equivalent." );

        Security mySecurity2 = new Security( 0, 0, 0 );
        SchemeRunner.checkCash( mySecurity2 );

        if( mySecurity2.isCashEquiv() )
            System.out.println( "Security2 is a cash equivalent." );
        else
            System.err.println( "Security2 is not a cash equivalent." );
    }
}

Attachment: SchemeRunner.scm
Description: SchemeRunner.scm

public class Security {
    public Security( int assetClass, int secType, int daysToMaturity ) {
        setAssetClass( assetClass );
        setSecType( secType );
        setDaysToMaturity( daysToMaturity );
    }

    private int mAssetClass;
    public int getAssetClass() { return( mAssetClass ); }
    public void setAssetClass( int val ) { mAssetClass = val; }

    private int mSecType;
    public int getSecType() { return( mSecType ); }
    public void setSecType( int val ) { mSecType = val; }

    private int mDaysToMaturity;
    public int getDaysToMaturity() { return( mDaysToMaturity ); }
    public void setDaysToMaturity( int val ) { mDaysToMaturity = val; }

    private boolean mCashEquiv;
    public boolean isCashEquiv() { return( mCashEquiv ); }
    public void setCashEquiv( boolean val ) { mCashEquiv = val; }
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]