Search in sources :

Example 6 with Message

use of org.jbpm.integrationtests.test.Message in project jbpm by kiegroup.

the class ProcessStartTest method testStartEventTrigger.

@Test
public void testStartEventTrigger() throws Exception {
    Reader source = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + "         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + "         xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" + "         type=\"RuleFlow\" name=\"flow\" id=\"org.drools.start\" package-name=\"org.drools\" version=\"1\" >\n" + "\n" + "  <header>\n" + "    <globals>\n" + "      <global identifier=\"myList\" type=\"java.util.List\" />\n" + "    </globals>\n" + "    <variables>\n" + "      <variable name=\"SomeVar\" >\n" + "        <type name=\"org.jbpm.process.core.datatype.impl.type.StringDataType\" />\n" + "      </variable>\n" + "      <variable name=\"SomeOtherVar\" >\n" + "        <type name=\"org.jbpm.process.core.datatype.impl.type.StringDataType\" />\n" + "      </variable>\n" + "    </variables>\n" + "  </header>\n" + "\n" + "  <nodes>\n" + "    <start id=\"1\" name=\"Start\" >\n" + "      <triggers>" + "        <trigger type=\"event\" >\n" + "          <eventFilters>" + "            <eventFilter type=\"eventType\" eventType=\"myEvent\" />\n" + "          </eventFilters>" + "          <mapping type=\"in\" from=\"event\" to=\"SomeVar\" />\n" + "          <mapping type=\"in\" from=\"SomeString\" to=\"SomeOtherVar\" />\n" + "        </trigger>\n " + "      </triggers>\n" + "    </start>\n" + "    <actionNode id=\"2\" name=\"Action\" >\n" + "      <action type=\"expression\" dialect=\"java\" >myList.add(context.getVariable(\"SomeVar\"));\n" + "myList.add(context.getVariable(\"SomeOtherVar\"));</action>\n" + "    </actionNode>\n" + "    <end id=\"3\" name=\"End\" />\n" + "  </nodes>\n" + "\n" + "  <connections>\n" + "    <connection from=\"1\" to=\"2\" />\n" + "    <connection from=\"2\" to=\"3\" />\n" + "  </connections>\n" + "\n" + "</process>");
    builder.addRuleFlow(source);
    if (!builder.getErrors().isEmpty()) {
        for (DroolsError error : builder.getErrors().getErrors()) {
            logger.error(error.toString());
        }
        fail("Could not build process");
    }
    KieSession session = createKieSession(builder.getPackages());
    List<Message> myList = new ArrayList<Message>();
    session.setGlobal("myList", myList);
    assertEquals(0, myList.size());
    ((InternalWorkingMemory) session).getProcessRuntime().signalEvent("myEvent", "Jack");
    session.fireAllRules();
    assertEquals(2, myList.size());
    assertEquals("Jack", myList.get(0));
    assertEquals("SomeString", myList.get(1));
}
Also used : DroolsError(org.drools.compiler.compiler.DroolsError) Message(org.jbpm.integrationtests.test.Message) StringReader(java.io.StringReader) ArrayList(java.util.ArrayList) Reader(java.io.Reader) StringReader(java.io.StringReader) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test) AbstractBaseTest(org.jbpm.test.util.AbstractBaseTest)

Example 7 with Message

use of org.jbpm.integrationtests.test.Message in project jbpm by kiegroup.

the class ProcessStartTest method testStartConstraintTrigger.

@Test
public void testStartConstraintTrigger() throws Exception {
    Reader source = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + "         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + "         xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" + "         type=\"RuleFlow\" name=\"flow\" id=\"org.drools.start\" package-name=\"org.jbpm\" version=\"1\" >\n" + "\n" + "  <header>\n" + "    <imports>\n" + "      <import name=\"org.jbpm.integrationtests.test.Person\" />\n" + "    </imports>\n" + "    <globals>\n" + "      <global identifier=\"myList\" type=\"java.util.List\" />\n" + "    </globals>\n" + "    <variables>\n" + "      <variable name=\"SomeVar\" >\n" + "        <type name=\"org.jbpm.process.core.datatype.impl.type.StringDataType\" />\n" + "      </variable>\n" + "      <variable name=\"SomeOtherVar\" >\n" + "        <type name=\"org.jbpm.process.core.datatype.impl.type.StringDataType\" />\n" + "      </variable>\n" + "    </variables>\n" + "  </header>\n" + "\n" + "  <nodes>\n" + "    <start id=\"1\" name=\"Start\" >\n" + "      <triggers>" + "        <trigger type=\"constraint\" >\n" + "          <constraint type=\"rule\" dialect=\"mvel\" >p:Person()</constraint>\n" + "          <mapping type=\"in\" from=\"p.getName()\" to=\"SomeVar\" />\n" + "          <mapping type=\"in\" from=\"&quot;SomeString&quot;\" to=\"SomeOtherVar\" />\n" + "        </trigger>\n " + "      </triggers>\n" + "    </start>\n" + "    <actionNode id=\"2\" name=\"Action\" >\n" + "      <action type=\"expression\" dialect=\"java\" >myList.add(context.getVariable(\"SomeVar\"));\n" + "myList.add(context.getVariable(\"SomeOtherVar\"));</action>\n" + "    </actionNode>\n" + "    <end id=\"3\" name=\"End\" />\n" + "  </nodes>\n" + "\n" + "  <connections>\n" + "    <connection from=\"1\" to=\"2\" />\n" + "    <connection from=\"2\" to=\"3\" />\n" + "  </connections>\n" + "\n" + "</process>");
    builder.addRuleFlow(source);
    if (!builder.getErrors().isEmpty()) {
        for (DroolsError error : builder.getErrors().getErrors()) {
            logger.error(error.toString());
        }
        fail("Could not build process");
    }
    KieSession session = createKieSession(builder.getPackages());
    List<Message> myList = new ArrayList<Message>();
    session.setGlobal("myList", myList);
    assertEquals(0, myList.size());
    Person jack = new Person();
    jack.setName("Jack");
    session.insert(jack);
    session.fireAllRules();
    assertEquals(2, myList.size());
    assertEquals("Jack", myList.get(0));
    assertEquals("SomeString", myList.get(1));
}
Also used : DroolsError(org.drools.compiler.compiler.DroolsError) Message(org.jbpm.integrationtests.test.Message) StringReader(java.io.StringReader) ArrayList(java.util.ArrayList) Reader(java.io.Reader) StringReader(java.io.StringReader) KieSession(org.kie.api.runtime.KieSession) Person(org.jbpm.integrationtests.test.Person) Test(org.junit.Test) AbstractBaseTest(org.jbpm.test.util.AbstractBaseTest)

Example 8 with Message

use of org.jbpm.integrationtests.test.Message in project jbpm by kiegroup.

the class ProcessActionTest method testActionContextJavaBackwardCheck.

@Test
public void testActionContextJavaBackwardCheck() {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    Reader source = new StringReader("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + "         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + "         xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" + "         type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n" + "\n" + "  <header>\n" + "    <imports>\n" + "      <import name=\"org.jbpm.integrationtests.test.Message\" />\n" + "    </imports>\n" + "    <globals>\n" + "      <global identifier=\"list\" type=\"java.util.List\" />\n" + "    </globals>\n" + "    <variables>\n" + "      <variable name=\"variable\" >\n" + "        <type name=\"org.drools.core.process.core.datatype.impl.type.StringDataType\" />\n" + "        <value>SomeText</value>\n" + "      </variable>\n" + "    </variables>\n" + "  </header>\n" + "\n" + "  <nodes>\n" + "    <start id=\"1\" name=\"Start\" />\n" + "    <actionNode id=\"2\" name=\"MyActionNode\" >\n" + "      <action type=\"expression\" dialect=\"java\" >System.out.println(\"Triggered\");\n" + "String myVariable = (String) kcontext.getVariable(\"variable\");\n" + "list.add(myVariable);\n" + "String nodeName = kcontext.getNodeInstance().getNodeName();\n" + "list.add(nodeName);\n" + "insert( new Message() );\n" + "</action>\n" + "    </actionNode>\n" + "    <end id=\"3\" name=\"End\" />\n" + "  </nodes>\n" + "\n" + "  <connections>\n" + "    <connection from=\"1\" to=\"2\" />\n" + "    <connection from=\"2\" to=\"3\" />\n" + "  </connections>\n" + "\n" + "</process>");
    kbuilder.add(new ReaderResource(source), ResourceType.DRF);
    KieBase kbase = kbuilder.newKieBase();
    KieSession ksession = kbase.newKieSession();
    List<String> list = new ArrayList<String>();
    ksession.setGlobal("list", list);
    ProcessInstance processInstance = ksession.startProcess("org.drools.actions");
    assertEquals(2, list.size());
    assertEquals("SomeText", list.get(0));
    assertEquals("MyActionNode", list.get(1));
    Collection<FactHandle> factHandles = ksession.getFactHandles(new ObjectFilter() {

        public boolean accept(Object object) {
            return object instanceof Message;
        }
    });
    assertFalse(factHandles.isEmpty());
    assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
Also used : Message(org.jbpm.integrationtests.test.Message) FactHandle(org.kie.api.runtime.rule.FactHandle) ArrayList(java.util.ArrayList) Reader(java.io.Reader) StringReader(java.io.StringReader) ReaderResource(org.drools.core.io.impl.ReaderResource) ObjectFilter(org.kie.api.runtime.ObjectFilter) KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) KieBase(org.kie.api.KieBase) StringReader(java.io.StringReader) KieSession(org.kie.api.runtime.KieSession) ProcessInstance(org.kie.api.runtime.process.ProcessInstance) Test(org.junit.Test) AbstractBaseTest(org.jbpm.test.util.AbstractBaseTest)

Aggregations

Reader (java.io.Reader)8 StringReader (java.io.StringReader)8 ArrayList (java.util.ArrayList)8 Message (org.jbpm.integrationtests.test.Message)8 AbstractBaseTest (org.jbpm.test.util.AbstractBaseTest)8 Test (org.junit.Test)8 KieSession (org.kie.api.runtime.KieSession)8 DroolsError (org.drools.compiler.compiler.DroolsError)4 InternalWorkingMemory (org.drools.core.common.InternalWorkingMemory)3 ReaderResource (org.drools.core.io.impl.ReaderResource)3 ProcessInstance (org.jbpm.process.instance.ProcessInstance)3 KieBase (org.kie.api.KieBase)3 ObjectFilter (org.kie.api.runtime.ObjectFilter)3 ProcessInstance (org.kie.api.runtime.process.ProcessInstance)3 FactHandle (org.kie.api.runtime.rule.FactHandle)3 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)3 HashMap (java.util.HashMap)1 Person (org.jbpm.integrationtests.test.Person)1