use of org.kie.api.marshalling.KieMarshallers in project opennms by OpenNMS.
the class DroolsNorthbounder method unmarshallStateFromDisk.
/**
* Unmarshall state from disk.
*
* @param serialize the serialize
*/
private void unmarshallStateFromDisk(boolean serialize) {
final File stateFile = getPathToState().toFile();
LOG.debug("Restoring state for engine {} from {} ...", getName(), stateFile);
if (!stateFile.exists())
return;
final KieMarshallers kMarshallers = KieServices.Factory.get().getMarshallers();
final ObjectMarshallingStrategy oms = serialize ? kMarshallers.newSerializeMarshallingStrategy() : kMarshallers.newIdentityMarshallingStrategy();
final Marshaller marshaller = kMarshallers.newMarshaller(m_kieBase, new ObjectMarshallingStrategy[] { oms });
try (FileInputStream fin = new FileInputStream(stateFile)) {
marshaller.unmarshall(fin, m_kieSession);
stateFile.delete();
LOG.info("Sucessfully restored state for engine {} from {}. There are {} elements on the working memory.", getName(), stateFile, m_kieSession.getObjects().size());
} catch (IOException | ClassNotFoundException e) {
LOG.error("Failed to restore state for engine {} from {}.", getName(), stateFile, e);
}
}
use of org.kie.api.marshalling.KieMarshallers in project drools by kiegroup.
the class IncrementalCompilationTest method testAddRuleWithSlidingWindows.
@Test
public void testAddRuleWithSlidingWindows() throws Exception {
// DROOLS-2292
String drl1 = "package org.drools.compiler\n" + "import " + List.class.getCanonicalName() + "\n" + "import " + BooleanEvent.class.getCanonicalName() + "\n" + "rule R1 when\n" + " $e : BooleanEvent(!enabled)\n" + " List(size >= 1) from collect ( BooleanEvent(!enabled) over window:time(1) )\n" + " $toEdit : List() from collect( BooleanEvent(!enabled) over window:time(2) )\n" + "then\n" + " modify( (BooleanEvent)$toEdit.get(0) ){ setEnabled( true ) }\n" + "end\n";
KieServices ks = KieServices.Factory.get();
KieModuleModel kproj = ks.newKieModuleModel();
KieBaseModel kieBaseModel1 = kproj.newKieBaseModel("KBase1").setDefault(true).setEventProcessingMode(EventProcessingOption.STREAM);
KieSessionModel ksession1 = kieBaseModel1.newKieSessionModel("KSession1").setDefault(true).setType(KieSessionModel.KieSessionType.STATEFUL).setClockType(ClockTypeOption.get(ClockType.PSEUDO_CLOCK.getId()));
ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.0.0");
deployJar(ks, createKJar(ks, kproj, releaseId1, null));
ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "2.0.0");
deployJar(ks, createKJar(ks, kproj, releaseId2, null, drl1));
KieContainer kc = ks.newKieContainer(releaseId1);
KieSession kieSession = kc.newKieSession();
kieSession.insert(new BooleanEvent());
kieSession.fireAllRules();
kc.updateToVersion(releaseId2);
kieSession.fireAllRules();
KieMarshallers marshallers = ks.getMarshallers();
Marshaller marshaller = marshallers.newMarshaller(kieSession.getKieBase());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
marshaller.marshall(outputStream, kieSession);
}
use of org.kie.api.marshalling.KieMarshallers in project opennms by OpenNMS.
the class DroolsCorrelationEngine method marshallStateToDisk.
private void marshallStateToDisk(boolean serialize) {
final File stateFile = getPathToState().toFile();
LOG.debug("Saving state for engine {} in {} ...", m_name, stateFile);
final KieMarshallers kMarshallers = KieServices.Factory.get().getMarshallers();
final ObjectMarshallingStrategy oms = serialize ? kMarshallers.newSerializeMarshallingStrategy() : kMarshallers.newIdentityMarshallingStrategy();
final Marshaller marshaller = kMarshallers.newMarshaller(m_kieBase, new ObjectMarshallingStrategy[] { oms });
try (FileOutputStream fos = new FileOutputStream(stateFile)) {
m_kieSession.halt();
marshaller.marshall(fos, m_kieSession);
m_kieSession.dispose();
m_kieSession.destroy();
LOG.info("Sucessfully save state for engine {} in {}.", m_name, stateFile);
} catch (IOException e) {
LOG.error("Failed to save state for engine {} in {}.", m_name, stateFile, e);
}
}
use of org.kie.api.marshalling.KieMarshallers in project opennms by OpenNMS.
the class DroolsCorrelationEngine method unmarshallStateFromDisk.
private void unmarshallStateFromDisk(boolean serialize) {
final File stateFile = getPathToState().toFile();
if (!stateFile.exists()) {
LOG.error("Can't restore state from {} because the file doesn't exist", stateFile);
return;
}
LOG.debug("Restoring state for engine {} from {} ...", m_name, stateFile);
final KieMarshallers kMarshallers = KieServices.Factory.get().getMarshallers();
final ObjectMarshallingStrategy oms = serialize ? kMarshallers.newSerializeMarshallingStrategy() : kMarshallers.newIdentityMarshallingStrategy();
final Marshaller marshaller = kMarshallers.newMarshaller(m_kieBase, new ObjectMarshallingStrategy[] { oms });
try (FileInputStream fin = new FileInputStream(stateFile)) {
marshaller.unmarshall(fin, m_kieSession);
stateFile.delete();
LOG.info("Sucessfully restored state for engine {} from {}.", m_name, stateFile);
} catch (IOException | ClassNotFoundException e) {
LOG.error("Failed to restore state for engine {} from {}.", m_name, stateFile, e);
}
}
use of org.kie.api.marshalling.KieMarshallers in project opennms by OpenNMS.
the class DroolsNorthbounder method marshallStateToDisk.
/**
* Marshall state to disk.
*
* @param serialize the serialize
*/
private void marshallStateToDisk(boolean serialize) {
final File stateFile = getPathToState().toFile();
LOG.debug("Saving state for engine {} in {} ...", getName(), stateFile);
final KieMarshallers kMarshallers = KieServices.Factory.get().getMarshallers();
final ObjectMarshallingStrategy oms = serialize ? kMarshallers.newSerializeMarshallingStrategy() : kMarshallers.newIdentityMarshallingStrategy();
final Marshaller marshaller = kMarshallers.newMarshaller(m_kieBase, new ObjectMarshallingStrategy[] { oms });
try (FileOutputStream fos = new FileOutputStream(stateFile)) {
m_kieSession.halt();
marshaller.marshall(fos, m_kieSession);
m_kieSession.dispose();
m_kieSession.destroy();
LOG.info("Sucessfully save state for engine {} in {}. There are {} elements on the working memory.", getName(), stateFile, m_kieSession.getObjects().size());
} catch (IOException e) {
LOG.error("Failed to save state for engine {} in {}.", getName(), stateFile, e);
}
}
Aggregations