You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ks...@apache.org on 2015/04/29 20:33:06 UTC

servicemix git commit: SM-2536: Provide simple sample for Drools 6 (closes #22)

Repository: servicemix
Updated Branches:
  refs/heads/master dc3801887 -> 532cfb48c


SM-2536: Provide simple sample for Drools 6 (closes #22)

Thanks to Grzegorz Halajko for the pull request!!


Project: http://git-wip-us.apache.org/repos/asf/servicemix/repo
Commit: http://git-wip-us.apache.org/repos/asf/servicemix/commit/532cfb48
Tree: http://git-wip-us.apache.org/repos/asf/servicemix/tree/532cfb48
Diff: http://git-wip-us.apache.org/repos/asf/servicemix/diff/532cfb48

Branch: refs/heads/master
Commit: 532cfb48c73e687825e50a9ae4dd84c8cc8a0703
Parents: dc38018
Author: Grzegorz Halajko <gh...@linuxpolska.pl>
Authored: Wed Apr 22 11:49:25 2015 +0000
Committer: Krzysztof Sobkowiak <kr...@gmail.com>
Committed: Wed Apr 29 20:20:42 2015 +0200

----------------------------------------------------------------------
 .../src/main/filtered-resources/examples.xml    |   5 +
 examples/drools/drools-simple/README.txt        | 112 +++++++++++++++++++
 examples/drools/drools-simple/pom.xml           |  95 ++++++++++++++++
 .../examples/drools/simple/model/Customer.java  |  87 ++++++++++++++
 .../drools/simple/model/CustomerType.java       |  26 +++++
 .../drools/simple/osgi/SimpleRuleActivator.java | 104 +++++++++++++++++
 .../examples/drools/simple/osgi/Utils.java      |  51 +++++++++
 .../src/main/resources/META-INF/kmodule.xml     |  23 ++++
 .../src/main/resources/rule/simple.drl          |  48 ++++++++
 .../examples/drools/test/ActivatorTest.java     |  41 +++++++
 .../examples/drools/test/SimpleTest.java        | 104 +++++++++++++++++
 examples/drools/pom.xml                         |  80 +++++++++++++
 examples/pom.xml                                |   1 +
 .../itests/Drools6IntegrationTest.scala         |  71 ------------
 .../itests/Drools6IntegrationTests.scala        |  96 ++++++++++++++++
 15 files changed, 873 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/assembly/src/main/filtered-resources/examples.xml
----------------------------------------------------------------------
diff --git a/assembly/src/main/filtered-resources/examples.xml b/assembly/src/main/filtered-resources/examples.xml
index 9ba6061..5ec1730 100644
--- a/assembly/src/main/filtered-resources/examples.xml
+++ b/assembly/src/main/filtered-resources/examples.xml
@@ -161,4 +161,9 @@
         <bundle>mvn:org.apache.servicemix.examples/akka-camel/${version}</bundle>
     </feature>
 
+    <feature name="examples-drools-simple" version="${version}" resolver="(obr)">
+        <feature version="${drools6.version}">drools6-module</feature>
+        <bundle>mvn:org.apache.servicemix.examples/drools-simple/${version}</bundle>
+    </feature>
+
 </features>

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/README.txt
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/README.txt b/examples/drools/drools-simple/README.txt
new file mode 100644
index 0000000..b22fce4
--- /dev/null
+++ b/examples/drools/drools-simple/README.txt
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+Drools 6 Simple Example
+==========================
+
+Purpose
+-------
+This example will show you how to use Drools 6 inside Apache ServiceMix and how to
+use rule engine in low level.
+
+We use OSGi activator to create theKIE Session, insert facts to rule engine and print
+the result to server log.
+
+
+
+Prerequisites for Running the Example
+-------------------------------------
+1. You must have the following installed on your machine:
+
+   - JDK 1.6 or higher
+
+   - Maven 3.0.2 or higher (for building)
+   
+  For more information, see the README in the top-level examples
+  directory.
+
+2. Start ServiceMix by running the following command:
+
+    <servicemix_home>/bin/servicemix          (on UNIX)
+    <servicemix_home>\bin\servicemix          (on Windows)
+
+
+Running the Example
+-------------------
+To install and run the example where you build the example bundle
+yourself, complete the following steps:
+
+1. Before being able to run this example, you have to install some additional
+   features into the container first to add support for the Drools 6.
+
+     feature:install drools6-module
+
+2. Build the example by opening a command prompt, changing directory to
+   examples/drools/drools-simple (this example) and entering the following Maven
+   command:
+
+     mvn clean install
+   
+   If all of the required OSGi bundles are available in your local Maven
+   repository, the example will build very quickly. Otherwise it may
+   take some time for Maven to download everything it needs.
+   
+   The mvn install command builds the example deployment bundle and
+   copies it to your local Maven repository and to the target directory
+   of this example.
+     
+3. Install the example by entering the following command in
+   the ServiceMix console:
+   
+     bundle:install -s mvn:org.apache.servicemix.examples/drools-simple/${project.version}
+       
+4. Once the bundle has been started, you will see on console logs from rule engine.
+
+	==>[AfterActivationFiredEvent: getActivation()=[[ Customer VIP active=false ] 
+	[ [fact 0:3:115401058:115401058:6:DEFAULT:NON_TRAIT:Customer [salary=9001, type=VIP]] ] ],
+ 	getKnowledgeRuntime()=org.drools.core.impl.StatefulKnowledgeSessionImpl@7631375e]
+
+and in server logs 
+	
+	KieSession fireAllRules. Customer [salary=9001, type=null]
+	After rule Customer [salary=9001, type=VIP]
+
+
+Stopping and Uninstalling the Example
+-------------------------------------
+First, find the bundle id for the deployed example bundle by doing
+
+  osgi:list
+
+and looking for a line that looks like this one
+
+229 | Active   |  80 | 	| Apache ServiceMix :: Examples :: Drools :: Simple 
+
+In the above case, the bundle id would be 229
+
+
+To stop the example, enter the following command in the ServiceMix
+console:
+
+  bundle:stop <bundle_id>
+
+
+To uninstall the example, enter one of the following commands in
+the ServiceMix console:
+
+  bundle:uninstall <bundle_id>
+ 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/pom.xml
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/pom.xml b/examples/drools/drools-simple/pom.xml
new file mode 100644
index 0000000..8d73c87
--- /dev/null
+++ b/examples/drools/drools-simple/pom.xml
@@ -0,0 +1,95 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        Licensed to the Apache Software Foundation (ASF) under one or more
+        contributor license agreements.  See the NOTICE file distributed with
+        this work for additional information regarding copyright ownership.
+        The ASF licenses this file to You under the Apache License, Version 2.0
+        (the "License"); you may not use this file except in compliance with
+        the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+        Unless required by applicable law or agreed to in writing, software
+        distributed under the License is distributed on an "AS IS" BASIS,
+        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+        See the License for the specific language governing permissions and
+        limitations under the License.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.servicemix.examples</groupId>
+        <artifactId>drools</artifactId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>drools-simple</artifactId>
+    <name>Apache ServiceMix :: Examples :: Drools :: Simple</name>
+    <packaging>bundle</packaging>
+
+    <properties>
+        <osgi.private.package>org.apache.servicemix.examples.drools.simple.osgi</osgi.private.package>
+        <osgi.bundle.activator>org.apache.servicemix.examples.drools.simple.osgi.SimpleRuleActivator
+        </osgi.bundle.activator>
+        <osgi.export.package>org.apache.servicemix.examples.drools.simple.model</osgi.export.package>
+        <osgi.import.package>
+            org.osgi.framework;version="[1.5,2)",
+            org.slf4j;version="[1.6,2)",
+            org.kie.api.*;version="[6.0,7)",
+        </osgi.import.package>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.kie</groupId>
+            <artifactId>kie-api</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-osgi-integration</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/model/Customer.java
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/model/Customer.java b/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/model/Customer.java
new file mode 100644
index 0000000..cbe521c
--- /dev/null
+++ b/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/model/Customer.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.examples.drools.simple.model;
+
+/**
+ * @author ghalajko
+ *
+ */
+public class Customer {
+
+    /**
+     * Salary
+     */
+    private int salary;
+
+    /**
+     * IS VIP.
+     */
+    private CustomerType type;
+
+    /**
+     * Create customer with salary.
+     * 
+     * @param salary
+     */
+    public Customer(int salary) {
+        this.salary = salary;
+    }
+
+    /**
+     * @return the salary
+     */
+    public int getSalary() {
+        return salary;
+    }
+
+    /**
+     * @return the type
+     */
+    public CustomerType getType() {
+        return type;
+    }
+
+    /**
+     * @param salary
+     *            the salary to set
+     */
+    public void setSalary(int salary) {
+        this.salary = salary;
+    }
+
+    /**
+     * @param type
+     *            the type to set
+     */
+    public void setType(CustomerType type) {
+        this.type = type;
+    }
+
+    /**
+     * 
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("Customer [salary=").append(salary).append(", type=")
+                .append(type).append("]");
+        return builder.toString();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/model/CustomerType.java
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/model/CustomerType.java b/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/model/CustomerType.java
new file mode 100644
index 0000000..273800a
--- /dev/null
+++ b/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/model/CustomerType.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.examples.drools.simple.model;
+
+/**
+ * 
+ * @author ghalajko
+ *
+ */
+public enum CustomerType {
+    POOR, NORMAL, VIP;
+}

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/osgi/SimpleRuleActivator.java
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/osgi/SimpleRuleActivator.java b/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/osgi/SimpleRuleActivator.java
new file mode 100644
index 0000000..dce296d
--- /dev/null
+++ b/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/osgi/SimpleRuleActivator.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.examples.drools.simple.osgi;
+
+import static org.apache.servicemix.examples.drools.simple.osgi.Utils.customerPoor;
+import static org.apache.servicemix.examples.drools.simple.osgi.Utils.customerNormal;
+import static org.apache.servicemix.examples.drools.simple.osgi.Utils.customerVip;
+
+import org.apache.servicemix.examples.drools.simple.model.Customer;
+import org.kie.api.KieBase;
+import org.kie.api.KieServices;
+import org.kie.api.event.rule.DebugAgendaEventListener;
+import org.kie.api.event.rule.DebugRuleRuntimeEventListener;
+import org.kie.api.runtime.KieContainer;
+import org.kie.api.runtime.KieSession;
+import org.kie.api.runtime.rule.FactHandle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author ghalajko
+ *
+ */
+public class SimpleRuleActivator implements BundleActivator {
+    /**
+     * LOGGER.
+     */
+    private static final Logger logger = LoggerFactory
+            .getLogger(SimpleRuleActivator.class);
+
+    /**
+     * KieSession.
+     */
+    private KieSession ksession;
+
+    /**
+     * 
+     */
+    @Override
+    public void start(BundleContext context) throws Exception {
+        KieServices ks = KieServices.Factory.get();
+        KieContainer kcont = ks.newKieClasspathContainer(getClass()
+                .getClassLoader());
+        KieBase kbase = kcont.getKieBase("SimpleRuleKBase");
+
+        logger.info("KieSession newKieSession.");
+        ksession = kbase.newKieSession();
+
+        ksession.addEventListener(new DebugAgendaEventListener());
+        ksession.addEventListener(new DebugRuleRuntimeEventListener());
+
+        Customer customer = customerPoor();
+
+        logger.info("KieSession fireAllRules. {}", customer);
+        FactHandle fh = ksession.insert(customer);
+        ksession.fireAllRules();
+        ksession.delete(fh);
+        logger.info("After rule {}", customer);
+
+        customer = customerNormal();
+        logger.info("KieSession fireAllRules. {}", customer);
+        fh = ksession.insert(customer);
+        ksession.fireAllRules();
+        ksession.delete(fh);
+        logger.info("After rule {}", customer);
+
+        customer = customerVip();
+        logger.info("KieSession fireAllRules. {}", customer);
+        fh = ksession.insert(customer);
+        ksession.fireAllRules();
+        ksession.delete(fh);
+
+        logger.info("After rule {}", customer);
+    }
+
+    /**
+     * Dispose ksession
+     */
+    @Override
+    public void stop(BundleContext context) throws Exception {
+        if (ksession != null) {
+            ksession.dispose();
+            logger.debug("KieSession disposed.");
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/osgi/Utils.java
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/osgi/Utils.java b/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/osgi/Utils.java
new file mode 100644
index 0000000..7e9861a
--- /dev/null
+++ b/examples/drools/drools-simple/src/main/java/org/apache/servicemix/examples/drools/simple/osgi/Utils.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.examples.drools.simple.osgi;
+
+import org.apache.servicemix.examples.drools.simple.model.Customer;
+
+/**
+ * @author ghalajko
+ *
+ */
+public final class Utils {
+
+    /**
+     * 
+     * @return
+     */
+    public static Customer customerPoor() {
+        return new Customer(1000);
+    }
+
+    /**
+     * 
+     * @return
+     */
+    public static Customer customerNormal() {
+        return new Customer(5000);
+    }
+
+    /**
+     * 
+     * @return
+     */
+    public static Customer customerVip() {
+        return new Customer(9001);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/src/main/resources/META-INF/kmodule.xml
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/src/main/resources/META-INF/kmodule.xml b/examples/drools/drools-simple/src/main/resources/META-INF/kmodule.xml
new file mode 100644
index 0000000..c07213d
--- /dev/null
+++ b/examples/drools/drools-simple/src/main/resources/META-INF/kmodule.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
+    <kbase name="SimpleRuleKBase" packages="rule"
+           default="true">
+        <ksession name="simpleRuleKSession" default="true"/>
+    </kbase>
+</kmodule>

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/src/main/resources/rule/simple.drl
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/src/main/resources/rule/simple.drl b/examples/drools/drools-simple/src/main/resources/rule/simple.drl
new file mode 100644
index 0000000..ac7b964
--- /dev/null
+++ b/examples/drools/drools-simple/src/main/resources/rule/simple.drl
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package rule;
+import org.apache.servicemix.examples.drools.simple.model.Customer;
+import org.apache.servicemix.examples.drools.simple.model.CustomerType;
+
+rule "Customer poor"
+when
+    $c : Customer( salary <= 1000, type == null)
+then
+    modify( $c ) {
+        setType(CustomerType.POOR)
+    };
+end
+
+
+rule "Customer NORMAL"
+when
+    $c : Customer( salary > 1000, salary <= 9000, type == null )
+then
+    modify( $c ) {
+        setType(CustomerType.NORMAL)
+    };
+end
+
+
+rule "Customer VIP"
+when
+    $c : Customer( salary > 9000, type == null)
+then
+    modify( $c ) {
+        setType(CustomerType.VIP)
+    };
+end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/src/test/java/org/apache/servicemix/examples/drools/test/ActivatorTest.java
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/src/test/java/org/apache/servicemix/examples/drools/test/ActivatorTest.java b/examples/drools/drools-simple/src/test/java/org/apache/servicemix/examples/drools/test/ActivatorTest.java
new file mode 100644
index 0000000..02b2bb7
--- /dev/null
+++ b/examples/drools/drools-simple/src/test/java/org/apache/servicemix/examples/drools/test/ActivatorTest.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.examples.drools.test;
+
+import org.apache.servicemix.examples.drools.simple.osgi.SimpleRuleActivator;
+import org.junit.Test;
+
+/**
+ * 
+ * @author ghalajko
+ *
+ */
+public class ActivatorTest {
+    /**
+     * Simple test. Checks method
+     * @throws Exception
+     */
+    @Test
+    public void test() throws Exception{
+        SimpleRuleActivator act = new SimpleRuleActivator();
+        try{
+            act.start(null);
+        }finally{
+            act.stop(null);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/drools-simple/src/test/java/org/apache/servicemix/examples/drools/test/SimpleTest.java
----------------------------------------------------------------------
diff --git a/examples/drools/drools-simple/src/test/java/org/apache/servicemix/examples/drools/test/SimpleTest.java b/examples/drools/drools-simple/src/test/java/org/apache/servicemix/examples/drools/test/SimpleTest.java
new file mode 100644
index 0000000..e04bd41
--- /dev/null
+++ b/examples/drools/drools-simple/src/test/java/org/apache/servicemix/examples/drools/test/SimpleTest.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.examples.drools.test;
+
+import org.apache.servicemix.examples.drools.simple.model.Customer;
+import org.apache.servicemix.examples.drools.simple.model.CustomerType;
+import org.apache.servicemix.examples.drools.simple.osgi.Utils;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.kie.api.KieBase;
+import org.kie.api.KieServices;
+import org.kie.api.event.rule.DebugAgendaEventListener;
+import org.kie.api.event.rule.DebugRuleRuntimeEventListener;
+import org.kie.api.runtime.KieContainer;
+import org.kie.api.runtime.KieSession;
+import org.kie.api.runtime.rule.FactHandle;
+
+/**
+ * 
+ * @author ghalajko
+ *
+ */
+public class SimpleTest {
+    /**
+     * KieSession
+     */
+    private static KieSession ksession;
+
+    /**
+     * beforeClass.
+     */
+    @BeforeClass
+    public static void beforeClass() {
+        KieServices ks = KieServices.Factory.get();
+        KieContainer kcont = ks.newKieClasspathContainer();
+        KieBase kbase = kcont.getKieBase("SimpleRuleKBase");
+        ksession = kbase.newKieSession();
+        ksession.addEventListener(new DebugAgendaEventListener());
+        ksession.addEventListener(new DebugRuleRuntimeEventListener());
+    }
+
+    /**
+     * afterClass.
+     */
+    @BeforeClass
+    public static void afterClass() {
+        if (null != ksession) {
+            ksession.dispose();
+        }
+    }
+
+    /**
+     * Rule Poor
+     */
+    @Test
+    public void testPool() {
+        test(Utils.customerPoor(), CustomerType.POOR);
+    }
+
+    /**
+     * Rule Normal
+     */
+    @Test
+    public void testNormal() {
+        test(Utils.customerNormal(), CustomerType.NORMAL);
+    }
+
+    /**
+     * Rule Poor
+     */
+    @Test
+    public void testVip() {
+        test(Utils.customerVip(), CustomerType.VIP);
+    }
+
+    /**
+     * 
+     */
+    private void test(Customer customer, CustomerType expected) {
+        FactHandle fh = ksession.insert(customer);
+
+        ksession.fireAllRules();
+
+        ksession.delete(fh);
+
+        Assert.assertEquals(expected, customer.getType());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/drools/pom.xml
----------------------------------------------------------------------
diff --git a/examples/drools/pom.xml b/examples/drools/pom.xml
new file mode 100644
index 0000000..7054a87
--- /dev/null
+++ b/examples/drools/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+        Licensed to the Apache Software Foundation (ASF) under one or more
+        contributor license agreements.  See the NOTICE file distributed with
+        this work for additional information regarding copyright ownership.
+        The ASF licenses this file to You under the Apache License, Version 2.0
+        (the "License"); you may not use this file except in compliance with
+        the License.  You may obtain a copy of the License at
+
+           http://www.apache.org/licenses/LICENSE-2.0
+
+        Unless required by applicable law or agreed to in writing, software
+        distributed under the License is distributed on an "AS IS" BASIS,
+        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+        See the License for the specific language governing permissions and
+        limitations under the License.
+    -->
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.examples</groupId>
+        <artifactId>examples</artifactId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>drools</artifactId>
+    <packaging>pom</packaging>
+    <name>Apache ServiceMix :: Examples :: Drools</name>
+
+    <properties>
+        <osgi.bundle.activator></osgi.bundle.activator>
+        <osgi.import.package>!*</osgi.import.package>
+        <osgi.private.package></osgi.private.package>
+        <osgi.export.package>!*</osgi.export.package>
+    </properties>
+
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- define drools BOM -->
+            <dependency>
+                <groupId>org.drools</groupId>
+                <artifactId>drools-bom</artifactId>
+                <type>pom</type>
+                <version>${drools6.version}</version>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <extensions>true</extensions>
+                    <configuration>
+                        <instructions>
+                            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                            <Bundle-Name>${project.name}</Bundle-Name>
+                            <Bundle-Activator>${osgi.bundle.activator}</Bundle-Activator>
+                            <Import-Package>${osgi.import.package}</Import-Package>
+                            <Private-Package>${osgi.private.package}</Private-Package>
+                            <Export-Package>${osgi.export.package}</Export-Package>
+                        </instructions>
+                    </configuration>
+                </plugin>
+            </plugins>
+
+        </pluginManagement>
+    </build>
+
+    <modules>
+        <module>drools-simple</module>
+    </modules>
+</project>

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/examples/pom.xml
----------------------------------------------------------------------
diff --git a/examples/pom.xml b/examples/pom.xml
index e52b60d..57b1c26 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -39,6 +39,7 @@
         <module>akka</module>
         <module>camel</module>
         <module>cxf</module>
+        <module>drools</module>
     </modules>
 
 </project>

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/itests/src/test/scala/org/apache/servicemix/itests/Drools6IntegrationTest.scala
----------------------------------------------------------------------
diff --git a/itests/src/test/scala/org/apache/servicemix/itests/Drools6IntegrationTest.scala b/itests/src/test/scala/org/apache/servicemix/itests/Drools6IntegrationTest.scala
deleted file mode 100644
index f63bbac..0000000
--- a/itests/src/test/scala/org/apache/servicemix/itests/Drools6IntegrationTest.scala
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicemix.itests
-
-import org.junit.runner.RunWith
-import org.junit.{ Ignore, Test }
-import org.ops4j.pax.exam.spi.reactors.{ PerMethod, PerClass, ExamReactorStrategy }
-import org.ops4j.pax.exam.Configuration
-import org.ops4j.pax.exam.junit.PaxExam
-import org.ops4j.pax.exam.CoreOptions._
-import org.ops4j.pax.exam.karaf.options.KarafDistributionOption._
-import org.apache.karaf.features.Feature
-
-/**
- * Base configuration for all Drools 6 integration tests
- */
-@RunWith(classOf[PaxExam])
-@ExamReactorStrategy(Array(classOf[PerClass]))
-class Drools6IntegrationTest extends ExamplesIntegrationTests {
-  /**
-   * Check feature installation
-   */
-  def installed(feature: String): Option[String] = {
-    var f: Feature = featuresService.getFeature(feature)
-    if (featuresService.isInstalled(f)) Some("Ok") else None
-  }
-
-  /**
-   * Test for The Drools 6 feature kie-aries-blueprint
-   */
-  @Test
-  def testKieBlueprintFeature = testWithFeature("kie-aries-blueprint") {
-    expect {
-      installed("kie-aries-blueprint")
-    }
-  }
-
-  /**
-   * Test for The Drools 6 feature kie-spring
-   */
-  @Test
-  def testKieSpringFeature = testWithFeature("kie-spring") {
-    expect {
-      installed("kie-spring")
-    }
-  }
-
-  /**
-   * Test for The Drools 6 feature kie-camel
-   */
-  @Test
-  def testKieCamelFeature = testWithFeature("kie-camel") {
-    expect {
-      installed("kie-camel")
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/servicemix/blob/532cfb48/itests/src/test/scala/org/apache/servicemix/itests/Drools6IntegrationTests.scala
----------------------------------------------------------------------
diff --git a/itests/src/test/scala/org/apache/servicemix/itests/Drools6IntegrationTests.scala b/itests/src/test/scala/org/apache/servicemix/itests/Drools6IntegrationTests.scala
new file mode 100644
index 0000000..d903122
--- /dev/null
+++ b/itests/src/test/scala/org/apache/servicemix/itests/Drools6IntegrationTests.scala
@@ -0,0 +1,96 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicemix.itests
+
+import org.junit.runner.RunWith
+import org.junit.{ Ignore, Test }
+import org.ops4j.pax.exam.spi.reactors.{ PerMethod, PerClass, ExamReactorStrategy }
+import org.ops4j.pax.exam.Configuration
+import org.ops4j.pax.exam.junit.PaxExam
+import org.ops4j.pax.exam.CoreOptions._
+import org.ops4j.pax.exam.karaf.options.KarafDistributionOption._
+import org.apache.karaf.features.Feature
+
+/**
+ * Base configuration for all Drools 6 integration tests
+ */
+@RunWith(classOf[PaxExam])
+@ExamReactorStrategy(Array(classOf[PerClass]))
+abstract class Drools6IntegrationTests extends ExamplesIntegrationTests {
+
+}
+/**
+ * Tests for the Drools feature installation
+ */
+class Drools6FeatureTest extends Drools6IntegrationTests {
+  /**
+   * Check feature installation
+   */
+  def installed(feature: String): Option[String] = {
+    var f: Feature = featuresService.getFeature(feature)
+    if (featuresService.isInstalled(f)) Some("Ok") else None
+  }
+
+  /**
+   * Test for The Drools 6 feature kie-aries-blueprint
+   */
+  @Test
+  def testKieBlueprintFeature = testWithFeature("kie-aries-blueprint") {
+    expect {
+      installed("kie-aries-blueprint")
+    }
+  }
+
+  /**
+   * Test for The Drools 6 feature kie-spring
+   */
+  @Test
+  def testKieSpringFeature = testWithFeature("kie-spring") {
+    expect {
+      installed("kie-spring")
+    }
+  }
+
+  /**
+   * Test for The Drools 6 feature kie-camel
+   */
+  @Test
+  def testKieCamelFeature = testWithFeature("kie-camel") {
+    expect {
+      installed("kie-camel")
+    }
+  }
+}
+
+/**
+ * Tests for the Drools examples
+ */
+class Drools6ExamplesTest extends Drools6IntegrationTests {
+  
+  @Test
+  def testDroolsSimpleExample = testWithFeature("examples-drools-simple") {
+    expect {
+      logging.containsMessage(line => line.contains("Customer [salary=1000, type=POOR]"))
+    }
+    expect {
+      logging.containsMessage(line => line.contains("Customer [salary=5000, type=NORMAL]"))
+    }
+    expect {
+        logging.containsMessage(line => line.contains("Customer [salary=9001, type=VIP]"))
+    }
+  }
+}