At first in jrules we have to build XOM(Execution object model), which will execute all the business logic. After that we define BOM (Business object model) from XOM to write business logic's in project.
For using JPA we will make a class which will get all the CRUD operations and delegate every thing to the DAO layer.
Class diagram is as follows:
Here implemention of the IDAOService interface is a basic implemention of the DAO pattern and initialize session manager to manage all the CRUD operations. I guess explanation of the DAO pattern is redundant.
Now at these moment we can create BOM from the XOM and define only the JPAService. JPAService operations will be available for writting buseinss rules.
After creating BOM we have to initilize the JPAService class to use.
In Jrules there are two ways to do that.
1) In the class verbalization of JPAService in BOM we can select the check box named
2) Most effective method and which i preffered is to initialize the JPAService class in the initial task of the rule flow as follows:
first we will create a global variable named serviceUtils of the type of JPAService, and then initilize the valiable in the initial action of the rule flow.
Now we are ready to use these variable in BAL, decesion Tree, decesion Table even in the IRL construction.
In following i put some frugment of BAL code,
set 'partners' to serviceUtils . getPartners ( the id of paramPerson )
where each IDWPerson recepients is not null
and (the person type sys name of each IDWPerson recepients is not empty and the person type sys name of each IDWPerson recepients contains "UL")
and ( the fact address of each IDWPerson recepients is not empty
and ( utils .upperCase(the fact address of each IDWPerson recepients) contains "Delhi"
or utils .upperCase(the fact address of each IDWPerson recepients) contains "Kanpur" ) ) ;
set 'partnersId' to serviceUtils . getPersonsId ( partners ) ;
buffer . isEmptyCollection ( partnersId ) is false
add partnersId to the frst collections of varBuffer ;
print "partners found" ;
Some additional information:
You must supply all the necessary libraries of JPA to J2eeruleSession.ear to invoke business rules remotly. Also must add all the libraries in the jrules-rsm-ssp.war file to use in scenario manager.
P.S. I assume all the information will help somebody to save couple of hours to develop business rules with JPA.