/**
* Copyright 2010 JBoss Inc
*
* Licensed 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.drools;
import junit.framework.TestCase;
import org.drools.jpdl.EpdlWriter;
import org.drools.jpdl.JpdlParser;
import org.drools.jpdl.core.JpdlProcess;
import org.drools.process.core.validation.ProcessValidationError;
import org.drools.process.instance.ProcessInstance;
import org.drools.process.instance.WorkItemHandler;
import org.drools.rule.Package;
import org.drools.runtime.process.WorkItem;
import org.drools.runtime.process.WorkItemManager;
public class ParseSimpleProcessTest extends TestCase {
public void testSimpleProcess2() throws Exception {
JpdlParser parser = new JpdlParser();
JpdlProcess process = parser.loadJpdlProcess("simple2/processdefinition.xml");
ProcessValidationError[] errors = parser.getErrors();
for (ProcessValidationError error: errors) {
System.err.println(error);
}
assertEquals(0, errors.length);
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
Package p = new Package("com.sample");
p.addProcess(process);
ruleBase.addPackage( p );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
TestWorkItemHandler handler = new TestWorkItemHandler();
workingMemory.getWorkItemManager().registerWorkItemHandler(
"Email", handler);
assertTrue(handler.getWorkItemId() == -1);
ProcessInstance processInstance = workingMemory.startProcess("simple");
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
processInstance.signalEvent("signal", null);
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
public void testSimpleProcess3() throws Exception {
JpdlParser parser = new JpdlParser();
JpdlProcess process = parser.loadJpdlProcess("simple3/processdefinition.xml");
ProcessValidationError[] errors = parser.getErrors();
for (ProcessValidationError error: errors) {
System.err.println(error);
}
assertEquals(0, errors.length);
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
Package p = new Package("com.sample");
p.addProcess(process);
ruleBase.addPackage( p );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
ProcessInstance processInstance = workingMemory.startProcess("simple");
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
processInstance.signalEvent("signal", null);
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
private static class TestWorkItemHandler implements WorkItemHandler {
private long workItemId = -1;
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
workItemId = workItem.getId();
}
public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
}
public long getWorkItemId() {
return workItemId;
}
}
public void testWriteEPDLStateNodes() throws Exception {
JpdlParser parser = new JpdlParser();
JpdlProcess process = parser.loadJpdlProcess("simple2states/processdefinition.xml");
ProcessValidationError[] errors = parser.getErrors();
EpdlWriter.write(process);
}
public void testWriteEPDLDecisionNodes() throws Exception {
JpdlParser parser = new JpdlParser();
JpdlProcess process = parser.loadJpdlProcess("simple2decision/processdefinition.xml");
ProcessValidationError[] errors = parser.getErrors();
EpdlWriter.write(process);
}
public void testWriteEPDLSuggestJoinNode() throws Exception {
JpdlParser parser = new JpdlParser();
JpdlProcess process = parser.loadJpdlProcess("simple2suggestJoinComplex/processdefinition.xml");
ProcessValidationError[] errors = parser.getErrors();
EpdlWriter.write(process);
}
public void testWriteEPDLSuggestSplitNode() throws Exception {
JpdlParser parser = new JpdlParser();
JpdlProcess process = parser.loadJpdlProcess("simple2suggestSplitInActionNode/processdefinition.xml");
ProcessValidationError[] errors = parser.getErrors();
EpdlWriter.write(process);
}
public void testWriteEPDLSuperState() throws Exception {
JpdlParser parser = new JpdlParser();
JpdlProcess process = parser.loadJpdlProcess("simple2superState/processdefinition.xml");
ProcessValidationError[] errors = parser.getErrors();
EpdlWriter.write(process);
}
public void testWriteEPDLNestedForksWithSuperState() throws Exception {
JpdlParser parser = new JpdlParser();
JpdlProcess process = parser.loadJpdlProcess("simpleNestedForkWithSuperState/processdefinition.xml");
ProcessValidationError[] errors = parser.getErrors();
EpdlWriter.write(process);
for (ProcessValidationError error: errors) {
System.err.println(error);
}
assertEquals(0, errors.length);
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
Package p = new Package("com.sample");
p.addProcess(process);
ruleBase.addPackage( p );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
ProcessInstance processInstance = workingMemory.startProcess("simple");
}
}