Search in sources :

Example 1 with Mailbox

use of org.drools.compiler.Mailbox in project drools by kiegroup.

the class ConstraintsTest method testExpressionConstraints2.

@Test
public void testExpressionConstraints2() {
    final String drl = "package org.drools.compiler.integrationtests\n" + "import " + Mailbox.FolderType.class.getCanonicalName() + ";\n" + "import " + Mailbox.class.getCanonicalName() + ";\n" + "rule R1\n" + "    dialect \"mvel\"\n" + "    when\n" + "        $m : Mailbox( \n" + "                $me : owneremail,\n" + "                recentContacts[Mailbox.TEST_EMAIL] != null,\n" + "                recentContacts[\"me@test.com\"] != null,\n" + "                $d1 : recentContacts[Mailbox.TEST_EMAIL],\n" + "                $d2 : recentContacts[\"me@test.com\"],\n" + "                recentContacts.get(owneremail) != null,\n" + "                recentContacts.get($me) != null,\n" + "                recentContacts[$me] != null,\n" + "                $d3: recentContacts.get(owneremail),\n" + "                // Waiting for MVEL fixes for the following 2 scenarios" + "                // recentContacts[owneremail] != null,\n" + "                // recentContacts[getOwneremail()] != null,\n" + "                0 < 1\n" + "        )\n" + "    then\n" + "end\n";
    final KieBase kbase = loadKnowledgeBaseFromString(drl);
    final KieSession ksession = createKnowledgeSession(kbase);
    final Mailbox mbox = new Mailbox(Mailbox.TEST_EMAIL);
    final Message message = new Message();
    message.setMessage("Welcome");
    message.setStatus(Message.HELLO);
    mbox.getFolder(FolderType.INBOX).add(message);
    ksession.insert(mbox);
    ksession.insert(message);
    final int rules = ksession.fireAllRules();
    assertEquals(1, rules);
}
Also used : Mailbox(org.drools.compiler.Mailbox) Message(org.drools.compiler.Message) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) FolderType(org.drools.compiler.Mailbox.FolderType) Test(org.junit.Test)

Example 2 with Mailbox

use of org.drools.compiler.Mailbox in project drools by kiegroup.

the class ConstraintsTest method testExpressionConstraints4.

@Test
public void testExpressionConstraints4() {
    final String drl = "package org.drools.compiler.integrationtests\n" + "import " + Mailbox.FolderType.class.getCanonicalName() + ";\n" + "import " + Mailbox.class.getCanonicalName() + ";\n" + "rule R1\n" + "        dialect \"mvel\"\n" + "    when\n" + "        Mailbox( owneremail == 'bob@mail' || owneremail == 'john@mail' )\n" + "    then\n" + "end\n" + "rule R2\n" + "        dialect \"mvel\"\n" + "    when\n" + "        Mailbox( ( owneremail == 'bob@mail' ) || ( owneremail == 'john@mail' ) )\n" + "    then\n" + "end\n";
    final KieBase kbase = loadKnowledgeBaseFromString(drl);
    final KieSession ksession = createKnowledgeSession(kbase);
    ksession.insert(new Mailbox("foo@mail"));
    int rules = ksession.fireAllRules();
    assertEquals(0, rules);
    ksession.insert(new Mailbox("john@mail"));
    rules = ksession.fireAllRules();
    assertEquals(2, rules);
}
Also used : Mailbox(org.drools.compiler.Mailbox) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) FolderType(org.drools.compiler.Mailbox.FolderType) Test(org.junit.Test)

Example 3 with Mailbox

use of org.drools.compiler.Mailbox in project drools by kiegroup.

the class ConstraintsTest method testExpressionConstraints1.

@Test
public void testExpressionConstraints1() {
    final String drl = "package org.drools.compiler.integrationtests\n" + "import " + Mailbox.FolderType.class.getCanonicalName() + ";\n" + "import " + Mailbox.class.getCanonicalName() + ";\n" + "rule R1\n" + "        dialect \"mvel\"\n" + "    when\n" + "        $m : Mailbox( \n" + "                $folderType : getDefaultFolderType(),\n" + "                FolderType.INBOX == $folderType,\n" + "                $folderType == FolderType.INBOX,\n" + "                $mailForFolder2 : getMailTypeForFolderType(getDefaultFolderType()),\n" + "                FolderType.SENT != getDefaultFolderType(), \n" + "                getDefaultFolderType() != FolderType.SENT, \n" + "                getMailTypeForFolderType($folderType) == MailType.WORK,\n" + "                1 > 0\n" + "        )\n" + "    then\n" + "end\n";
    final KieBase kbase = loadKnowledgeBaseFromString(drl);
    final KieSession ksession = createKnowledgeSession(kbase);
    final Mailbox mbox = new Mailbox(Mailbox.TEST_EMAIL);
    final Message message = new Message();
    message.setMessage("Welcome");
    message.setStatus(Message.HELLO);
    mbox.getFolder(FolderType.INBOX).add(message);
    ksession.insert(mbox);
    ksession.insert(message);
    final int rules = ksession.fireAllRules();
    assertEquals(1, rules);
}
Also used : Mailbox(org.drools.compiler.Mailbox) Message(org.drools.compiler.Message) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 4 with Mailbox

use of org.drools.compiler.Mailbox in project drools by kiegroup.

the class ConstraintsTest method testExpressionConstraints3.

@Test
public void testExpressionConstraints3() {
    final String drl = "package org.drools.compiler.integrationtests\n" + "import " + Mailbox.FolderType.class.getCanonicalName() + ";\n" + "import " + Mailbox.class.getCanonicalName() + ";\n" + "rule R1\n" + "    dialect \"mvel\"\n" + "    when\n" + "        $m : Mailbox( \n" + "                $type1 : FolderType.INBOX,\n" + "                $type2 : org.drools.compiler.Mailbox$FolderType.INBOX,\n" + "                $work1 : getFolder(null),\n" + "                $work2 : getFolder(org.drools.compiler.Mailbox$FolderType.INBOX),\n" + "                $work3 : getFolder(FolderType.INBOX),\n" + "                getFolder($type1) != null,\n" + "                getFolder($type1).size() > 0,\n" + "                ! getFolder($type1).isEmpty(),\n" + "                $work6 : folders,\n" + "                $work7 : folders.size,\n" + "                //folders.containsKey(FolderType.INBOX),\n" + "                folders.containsKey(org.drools.compiler.Mailbox$FolderType.INBOX),\n" + "                folders.containsKey($type2),\n" + "                !folders.isEmpty,\n" + "                getFolder(FolderType.INBOX) != null,\n" + "                //$v1 : folders[FolderType.INBOX], \n" + "                //$v2 : folders[com.sample.Mailbox.FolderType.INBOX],\n" + "                //$v3 : folders[com.sample.Mailbox$FolderType.INBOX],\n" + "                //folders[$type1]!=null,\n" + "                //folders.get(FolderType.INBOX)!=null, // sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to java.lang.Class\n" + "                //folders.isEmpty(),  // SAME ERROR\n" + "                0 < 1\n" + "        )\n" + "    then\n" + "end";
    final KieBase kbase = loadKnowledgeBaseFromString(drl);
    final KieSession ksession = createKnowledgeSession(kbase);
    final Mailbox mbox = new Mailbox(Mailbox.TEST_EMAIL);
    final Message message = new Message();
    message.setMessage("Welcome");
    message.setStatus(Message.HELLO);
    mbox.getFolder(FolderType.INBOX).add(message);
    ksession.insert(mbox);
    ksession.insert(message);
    final int rules = ksession.fireAllRules();
    assertEquals(1, rules);
}
Also used : Mailbox(org.drools.compiler.Mailbox) Message(org.drools.compiler.Message) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Aggregations

Mailbox (org.drools.compiler.Mailbox)4 Test (org.junit.Test)4 KieBase (org.kie.api.KieBase)4 KieSession (org.kie.api.runtime.KieSession)4 Message (org.drools.compiler.Message)3 FolderType (org.drools.compiler.Mailbox.FolderType)2