Rules Examples
This section shows the source code for the three rules you will add.
If you have completed Adding the BadCreateAccount Rule and Adding the CreateAccount Rule, you will be familiar with adding rules.
In addition, a screenshot of the ApplyDebit rule is shown below.
ApplyDebit Rule Form View
The main purpose for showing the form view is so you can compare it with the source view when creating your own rule.
ApplyDebit Rule Source View Code
/** * @description Debits the matching account by the specified amount * @author */ rule Rules.ApplyDebit { attribute { priority = 1; forwardChain = true; } declare { Events.Debit debit; Concepts.Account account; } when { //Checks whether the extId of an Account instance in working memory //matches the incoming event's account ID account@extId == debit.AccountId; } then { //If Account Status is not Suspended, debits the account if (account.Status !="Suspended") { account.Debits=debit.Amount; System.debugOut( "#### Debiting account " +account@extId+ " by $" +debit.Amount); account.Balance=account.Balance - debit.Amount; System.debugOut("#### New balance: $" + account.Balance); } else { System.debugOut( "#### Cannot debit the suspended account " +account@extId ); } Event.consumeEvent(debit); } }
BadApplyDebit Rule Source View Code
/** * @description * @author */ rule Rules.BadApplyDebit { attribute { priority = 5; forwardChain = true; } declare { Events.Debit debit; } when { } then { System.debugOut( "#### Debit not applied, account not found: " + debit.AccountId); } }
CheckNegativeBalance Rule Source View Code
/** * @description * @author */ rule Rules.CheckNegativeBalance { attribute { priority = 5; forwardChain = true; } declare { Concepts.Account account; } when { //Checks that the balance is less than zero account.Balance < 0; //Checks that Account status is not set to Suspended account.Status!="Suspended"; } then { account.Status="Suspended"; System.debugOut( "#### Account ID "+account@extId+" STATUS set to Suspended. Balance" +account.Balance+" is less than zero"); } }
Copyright © TIBCO Software Inc. All Rights Reserved.