Integrating Drool 6 work bench with Java Application

两盒软妹~` 提交于 2020-01-03 04:32:15

问题


I have a drool 6 work bench. I am trying to read the rules from work bench and execute them in stand alone java application. Is there any way to download the drl file using URL from the workbench. Please write the code as well as I am new to drools


回答1:


First create Java application, include all drools 6 based binary dependencies. For that you can create Maven driven java application. include following dependencies in POM.xml file.. it will download all dependencies in your local maven repository.

<parent>
    <groupId>org.drools</groupId>
    <artifactId>drools-multiproject</artifactId>
    <version>6.0.1.Final</version>
</parent>
 <dependencies>      
    <!-- Internal dependencies -->
    <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.kie</groupId>
        <artifactId>kie-ci</artifactId>            
    </dependency>
    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-compiler</artifactId>
    </dependency>
    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-decisiontables</artifactId>
    </dependency>
    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-templates</artifactId>
    </dependency>

    <!-- Needed for logging -->
    <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
    </dependency>

    <!-- Logging -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>    
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
    </dependency>
    <dependency><!-- For example app logging: configure in src/java/resources/logback.xml -->
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </dependency>
</dependencies>

also specify the profile in pom.xml :

<profiles>
    <profile>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <id>guvnor-m2-repo</id>
                <name>Drools Workbench Repository Group</name>
                <url>http://localhost:4040/kie-drools-wb-distribution-wars-6.0.1.Final-tomcat7.0/maven2/</url>
                <layout>default</layout>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </releases>
            </repository>
        </repositories>
    </profile>
</profiles>

In main.java

public static void main(String[] args) {
    ReleaseIdImpl releaseId = new ReleaseIdImpl("groupId", "artifactId", "LATEST");

    KieServices ks = KieServices.Factory.get();

    KieContainer kieContainer = ks.newKieContainer(releaseId);

    KieScanner kScanner = ks.newKieScanner(kieContainer);
    kScanner.start(10000L);             
    Scanner scanner = new Scanner(System.in);
    while (true) {
        runRule(kieContainer);
        System.out.println("Press enter in order to run the test again....");
        scanner.nextLine();
    }
  }
   private static void runRule(KieContainer kieKontainer) {
    KieSession newKieSession = kieKontainer.newKieSession();

    //Initiate POJO on which you want to define rule like
    //BankLoan bankLoan = new BankLoan();
      //  bankLoan.setLoanAmount(10000);
       // bankLoan.setLoanPeriod(11);

      //Insert into kieSession
       newKieSession.insert(bankLoan);

    int result = newKieSession.fireAllRules();
    newKieSession.dispose();
}



回答2:


your pom.xml should have these dependencies

<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-compiler</artifactId>
  <version>6.0.0.Final</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-core</artifactId>
  <version>6.0.0.Final</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.kie</groupId>
  <artifactId>kie-internal</artifactId>
  <version>6.0.0.Final</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.kie</groupId>
  <artifactId>kie-api</artifactId>
  <version>6.0.0.Final</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-templates</artifactId>
  <version>6.0.0.Final</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.mvel</groupId>
  <artifactId>mvel2</artifactId>
  <version>2.1.7.Final</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.antlr</groupId>
  <artifactId>antlr-runtime</artifactId>
  <version>3.5</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>3.9</version>
   <scope>provided</scope>
</dependency>


<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-decisiontables</artifactId>
  <version>6.0.0.Final</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.jdt</groupId>
  <artifactId>org.eclipse.jdt.core</artifactId>
  <version>3.7.1</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>com.thoughtworks.xstream</groupId>
  <artifactId>xstream</artifactId>
  <version>1.4.3</version>
   <scope>provided</scope>
</dependency>

<dependency>
  <groupId>com.google.protobuf</groupId>
  <artifactId>protobuf-java</artifactId>
  <version>2.5.0</version>
  <scope>provided</scope>
</dependency>

or your classpath file should have these jars

drools-decisiontables-6.0.0.Final.jar
drools-core-6.0.0.Final.jar
kie-internal-6.0.0.Final.jar
kie-api-6.0.0.Final.jar

drools-templates-6.0.0.Final.jar slf4j-api-1.7.5.jar drools-compiler-6.0.0.Final.jar mvel2-2.1.7.Final.jar
antlr-runtime-3.5.jar
poi-ooxml-3.9.jar
poi-3.10-beta2.jar
commons-lang-2.4.jar
xstream-1.4.3.jar
protobuf-java-2.5.0.jar
org.eclipse.jdt.core-3.7.1.jar



来源:https://stackoverflow.com/questions/25129499/integrating-drool-6-work-bench-with-java-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!