0

Need to establish database connectivity in drools to get some data as and when required while executing the rules. How do I go about that?

ankitom
  • 114
  • 3
  • 13

2 Answers2

0

I have tried to establish Cassandra db connection from Drools file, It's working for me.

import com.datastax.driver.core.Cluster
import com.datastax.driver.core.Session     
import com.datastax.driver.core.ResultSet;     

function String ConnectDBase(String query) {
Session session;
Cluster cluster;
Cluster.Builder builder = Cluster.builder().
                  withoutJMXReporting().
                  addContactPoints("127.0.0.1");
         cluster = builder.build();
         session = cluster.connect("droolstest");
         System.out.println("---------Execute Creation query-----------");
         session.execute(query);
         return "Table Created";
}

rule "DB Connectio

n rule"
    when
        //Write your code
    then
        String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
                   + "emp_name text, "
                   + "emp_city text, "
                   + "emp_sal varint, "
                   + "emp_phone varint );";
    System.out.println(ConnectDBase(query));
end
Arul A M
  • 31
  • 7
-1

Drools function will look like as:

function String ConnectDB(String ConnectionClass,String url,String user, String password) {

Class.forName(ConnectionClass);
java.sql.Connection con = DriverManager.getConnection(url, user, password);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from Employee where employee_id=199");
rs.first();  return rs.getString("employee_name");       

}

Take a look at sample project https://github.com/abhijithumbe/jbpm6Examples/tree/master/Drools_DBConnection

Abhijit Humbe
  • 1,563
  • 1
  • 12
  • 13