use of org.drools.core.runtime.impl.ExecutionResultImpl in project drools by kiegroup.
the class StatelessKnowledgeSessionImpl method execute.
public <T> T execute(Command<T> command) {
StatefulKnowledgeSession ksession = newWorkingMemory();
RegistryContext context = new ContextImpl().register(KieSession.class, ksession);
try {
if (command instanceof BatchExecutionCommand) {
((RegistryContext) context).register(ExecutionResultImpl.class, new ExecutionResultImpl());
}
((StatefulKnowledgeSessionImpl) ksession).startBatchExecution();
Object o = ((ExecutableCommand) command).execute(context);
// did the user take control of fireAllRules, if not we will auto execute
boolean autoFireAllRules = true;
if (command instanceof FireAllRulesCommand) {
autoFireAllRules = false;
} else if (command instanceof BatchExecutionCommandImpl) {
for (Command nestedCmd : ((BatchExecutionCommandImpl) command).getCommands()) {
if (nestedCmd instanceof FireAllRulesCommand) {
autoFireAllRules = false;
break;
}
}
}
if (autoFireAllRules) {
ksession.fireAllRules();
}
if (command instanceof BatchExecutionCommand) {
return (T) ((RegistryContext) context).lookup(ExecutionResultImpl.class);
} else {
return (T) o;
}
} finally {
((StatefulKnowledgeSessionImpl) ksession).endBatchExecution();
dispose(ksession);
}
}
use of org.drools.core.runtime.impl.ExecutionResultImpl in project drools by kiegroup.
the class ExecuteCommandDisconnectedTest method executeDisconnected.
@Test
public void executeDisconnected() {
KieBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
KieSession ksession = kbase.newKieSession();
ExecutionResultImpl localKresults = new ExecutionResultImpl();
RequestContext context = RequestContext.create().with(ksession);
ExecutableRunner runner = ExecutableRunner.create();
List cmds = new ArrayList();
cmds.add(new InsertObjectCommand(new String("Hi!"), "handle"));
BatchExecutionCommand batchCmd = CommandFactory.newBatchExecution(cmds, "kresults");
ExecuteCommand execCmd = new ExecuteCommand(batchCmd, true);
ExecutionResults results = execCmd.execute(context);
assertNotNull(results);
assertNotNull(results.getFactHandle("handle"));
assertTrue(((DefaultFactHandle) results.getFactHandle("handle")).isDisconnected());
cmds = new ArrayList();
cmds.add(new InsertObjectCommand(new String("Hi!"), "handle"));
batchCmd = CommandFactory.newBatchExecution(cmds, "kresults");
execCmd = new ExecuteCommand(batchCmd);
results = execCmd.execute(context);
assertNotNull(results);
assertNotNull(results.getFactHandle("handle"));
assertFalse(((DefaultFactHandle) results.getFactHandle("handle")).isDisconnected());
}
use of org.drools.core.runtime.impl.ExecutionResultImpl in project drools by kiegroup.
the class XStreamXMLTest method testGetFactHandlesExecutionResults.
@Test
public void testGetFactHandlesExecutionResults() {
final Message msg = new Message("Hello World!");
final FactHandle msgHandle = new DefaultFactHandle(1, null, 10, 10, 20, msg);
final Message msg2 = new Message("Hello World again!");
final FactHandle msgHandle2 = new DefaultFactHandle(2, null, 10, 10, 20, msg2);
List<FactHandle> factHandleList = new ArrayList<FactHandle>();
factHandleList.add(msgHandle);
factHandleList.add(msgHandle2);
HashMap<String, Object> factHandles = new LinkedHashMap<String, Object>();
ExecutionResultImpl executionResult = new ExecutionResultImpl();
executionResult.setFactHandles(factHandles);
HashMap<String, Object> results = new LinkedHashMap<String, Object>();
results.put("facts", factHandleList);
executionResult.setResults(results);
String xmlString = xstream.toXML(executionResult);
Assert.assertEquals("<execution-results>\n" + " <result identifier=\"facts\">\n" + " <list>\n" + " <fact-handle external-form=\"0:1:10:10:20:null:NON_TRAIT:org.drools.core.runtime.help.impl.XStreamXMLTest$Message\"/>\n" + " <fact-handle external-form=\"0:2:10:10:20:null:NON_TRAIT:org.drools.core.runtime.help.impl.XStreamXMLTest$Message\"/>\n" + " </list>\n" + " </result>\n" + "</execution-results>", xmlString);
ExecutionResultImpl executionResult2 = (ExecutionResultImpl) xstream.fromXML(xmlString);
Assert.assertEquals(executionResult.getFactHandles().size(), executionResult2.getFactHandles().size());
Assert.assertEquals(executionResult.getResults().size(), executionResult2.getResults().size());
}
use of org.drools.core.runtime.impl.ExecutionResultImpl in project drools by kiegroup.
the class XStreamXMLTest method testExecutionResults.
@Test
public void testExecutionResults() {
final Message msg = new Message("Hello World!");
final FactHandle msgHandle = new DefaultFactHandle(1, null, 10, 10, 20, msg);
final Message msg2 = new Message("Hello World again!");
final FactHandle msgHandle2 = new DefaultFactHandle(2, null, 10, 10, 20, msg2);
HashMap<String, Object> factHandles = new LinkedHashMap<String, Object>();
factHandles.put("first", msgHandle);
factHandles.put("second", msgHandle2);
ExecutionResultImpl executionResult = new ExecutionResultImpl();
executionResult.setFactHandles(factHandles);
HashMap<String, Object> results = new LinkedHashMap<String, Object>();
results.put("message1", msg);
results.put("message2", msg2);
executionResult.setResults(results);
String xmlString = xstream.toXML(executionResult);
Assert.assertEquals("<execution-results>\n" + " <result identifier=\"message1\">\n" + " <org.drools.core.runtime.help.impl.XStreamXMLTest_-Message>\n" + " <msg>Hello World!</msg>\n" + " </org.drools.core.runtime.help.impl.XStreamXMLTest_-Message>\n" + " </result>\n" + " <result identifier=\"message2\">\n" + " <org.drools.core.runtime.help.impl.XStreamXMLTest_-Message>\n" + " <msg>Hello World again!</msg>\n" + " </org.drools.core.runtime.help.impl.XStreamXMLTest_-Message>\n" + " </result>\n" + " <fact-handle identifier=\"first\" external-form=\"0:1:10:10:20:null:NON_TRAIT:org.drools.core.runtime.help.impl.XStreamXMLTest$Message\"/>\n" + " <fact-handle identifier=\"second\" external-form=\"0:2:10:10:20:null:NON_TRAIT:org.drools.core.runtime.help.impl.XStreamXMLTest$Message\"/>\n" + "</execution-results>", xmlString);
ExecutionResultImpl executionResult2 = (ExecutionResultImpl) xstream.fromXML(xmlString);
Assert.assertEquals(executionResult.getFactHandles().size(), executionResult2.getFactHandles().size());
Assert.assertEquals(executionResult.getResults().size(), executionResult2.getResults().size());
}
use of org.drools.core.runtime.impl.ExecutionResultImpl in project drools by kiegroup.
the class XStreamXMLTest method testGetFactHandlesExecutionResults.
@Test
public void testGetFactHandlesExecutionResults() {
final Message msg = new Message("Hello World!");
final FactHandle msgHandle = new DefaultFactHandle(1, null, 10, 10, 20, msg);
final Message msg2 = new Message("Hello World again!");
final FactHandle msgHandle2 = new DefaultFactHandle(2, null, 10, 10, 20, msg2);
List<FactHandle> factHandleList = new ArrayList<FactHandle>();
factHandleList.add(msgHandle);
factHandleList.add(msgHandle2);
HashMap<String, Object> factHandles = new LinkedHashMap<String, Object>();
ExecutionResultImpl executionResult = new ExecutionResultImpl();
executionResult.setFactHandles(factHandles);
HashMap<String, Object> results = new LinkedHashMap<String, Object>();
results.put("facts", factHandleList);
executionResult.setResults(results);
String xmlString = xstream.toXML(executionResult);
Assert.assertEquals("<execution-results>\n" + " <result identifier=\"facts\">\n" + " <list>\n" + " <fact-handle external-form=\"0:1:10:10:20:null:NON_TRAIT:org.drools.xml.support.XStreamXMLTest$Message\"/>\n" + " <fact-handle external-form=\"0:2:10:10:20:null:NON_TRAIT:org.drools.xml.support.XStreamXMLTest$Message\"/>\n" + " </list>\n" + " </result>\n" + "</execution-results>", xmlString);
ExecutionResultImpl executionResult2 = (ExecutionResultImpl) xstream.fromXML(xmlString);
Assert.assertEquals(executionResult.getFactHandles().size(), executionResult2.getFactHandles().size());
Assert.assertEquals(executionResult.getResults().size(), executionResult2.getResults().size());
}
Aggregations