JESS: [EXTERNAL] Representing jess rule from nested objects

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

JESS: [EXTERNAL] Representing jess rule from nested objects

srinaththaiyar.aravamudan

Hi Jess Experts,

 

I am a JESS newbie and want to understand whether I am writing the below rule in JESS correctly:

 

We have a User Object and each user has a set of applications associated. Each application has a set of accounts and in turn each account has a set of profiles.

 

User Hierarchy:

 

User {username}

List of Applications {Application – {appName, userName}}

List of Accounts – { Account – {accountName, appName, username}}

List of Profiles – {Profile – {name, accountName, username}}

 

The rule we want to check is

If an user has a Profile (name = A) in account 1, Profile (name = B) in the same account (account 1)

and Profile (name = C) in account 2, Profile (name = D) in account 2

then fire the rule.

 

 

Jess Rule:

 

(defrule AFTS_RULE_01

(User (userName ?userName))

(Application (appName ?appName&:(eq ?appName "AFTS")) (userName ?userName))

(Account (accountName ?accountName1) (userName ?userName))

(Profile (name ?name1&:(eq ?name1 "A")) (accountName ?accountName1) (userName ?userName))

(Profile (name ?name2&:(eq ?name2 "B")) (accountName ?accountName1) (userName ?userName))

(Account (accountName ?accountName2&~accountName1) (userName ?userName))

(Profile (name ?name3&:(eq ?name3 "C")) (accountName ?accountName2) (userName ?userName))

(Profile (name ?name4&:(eq ?name4 "D")) (accountName ?accountName2) (userName ?userName))

=>

(printout t "ATFS Rule satisfied for " ?appName crlf)

)

 

Currently we have introduced a variable username in all the objects to maintain the relationship between the User object and the child objects.

 

Is the above rule representation correct or is there a better way to represent this rule in Jess?

 

Regards

Srinath

_______________________________________________

This message is for information purposes only, it is not a recommendation, advice, offer or solicitation to buy or sell a product or service nor an official confirmation of any transaction. It is directed at persons who are professionals and is not intended for retail customer use. Intended for recipient only. This message is subject to the terms at: www.barclays.com/emaildisclaimer.

For important disclosures, please see: www.barclays.com/salesandtradingdisclaimer regarding market commentary from Barclays Sales and/or Trading, who are active market participants; and in respect of Barclays Research, including disclosures relating to specific issuers, please see http://publicresearch.barclays.com.

_______________________________________________

Loading...