Open topic with navigation

TIBCO BusinessEvents® Enterprise Edition 6.3.1

# 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

Copy

ApplyDebit Rule Source 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

Copy

BadApplyDebit Rule Source 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);
            Event.consumeEvent(debit);
        }

    }

## CheckNegativeBalance Rule Source View Code

Copy

CheckNegativeBalance Rule Source 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");
        }

    }

Did you find this helpful?

YesNo
Great!
Thanks for taking the time to give us some feedback.
Sorry about that

Why wasn't this helpful? (check all that apply)

Could not find what I was looking for
Instructions confusing or unclear
Instructions did not work

Want to tell us more?

Please select at least one option or provide details about the issue!!

Error occurred while submitting feedback.

Error2 occurred while submitting feedback.

TIBCO BusinessEvents® Enterprise Edition

Copyright © 2004-2024. Cloud Software Group, Inc. All Rights Reserved.