public static KieSession marshallAndUnmarshall(KieBase kbase1, KieBase kbase2, KieSession ksession, KieSessionConfiguration sessionConfig) { // Serialize and Deserialize try { KieMarshallers kieMarshallers = KieServices.Factory.get().getMarshallers(); Marshaller marshaller = kieMarshallers.newMarshaller( kbase1 ); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshall(baos, ksession); marshaller = kieMarshallers.newMarshaller( kbase2 ); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); baos.close(); ksession = marshaller.unmarshall(bais, sessionConfig, null); bais.close(); } catch (Exception e) { e.printStackTrace(); fail("unexpected exception :" + e.getMessage()); } return ksession; }
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); } }
public static ObjectMarshallingStrategy newIdentityMarshallingStrategy() { return getMarshallerProvider().newIdentityMarshallingStrategy(); }
public static ObjectMarshallingStrategy newSerializeMarshallingStrategy() { return getMarshallerProvider().newSerializeMarshallingStrategy(); }
public static ObjectMarshallingStrategyAcceptor newClassFilterAcceptor(String[] patterns) { return getMarshallerProvider().newClassFilterAcceptor( patterns ); }
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); } }
public static ObjectMarshallingStrategy newIdentityMarshallingStrategy(ObjectMarshallingStrategyAcceptor acceptor) { return getMarshallerProvider().newIdentityMarshallingStrategy( acceptor ); }
public static ObjectMarshallingStrategy newSerializeMarshallingStrategy(ObjectMarshallingStrategyAcceptor acceptor) { return getMarshallerProvider().newSerializeMarshallingStrategy( acceptor ); }
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); } }
public static KieSession marshallAndUnmarshall(KieServices ks, KieBase kbase, KieSession ksession, KieSessionConfiguration sessionConfig) { // Serialize and Deserialize try { Marshaller marshaller = ks.getMarshallers().newMarshaller(kbase); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshall(baos, ksession); marshaller = MarshallerFactory.newMarshaller(kbase); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); baos.close(); ksession = marshaller.unmarshall(bais, sessionConfig, null); bais.close(); } catch (Exception e) { e.printStackTrace(); fail("unexpected exception :" + e.getMessage()); } return ksession; }
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); } }
@Test public void testMarshallWithTimer() throws Exception { // DROOLS-2210 String drl = "declare String @role(event) end\n" + "\n" + "rule R1 when\n" + " $s : String( ) over window:time( 5s )\n" + " then\n" + " delete( $s );\n" + "end\n"; KieBase kBase = initializeKnowledgeBase( drl ); KieSession ksession = kBase.newKieSession(); ksession.insert( "test" ); assertEquals( 1, ksession.fireAllRules() ); Marshaller marshaller = KieServices.get().getMarshallers().newMarshaller(kBase); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshall( baos, ksession ); ksession.dispose(); ByteArrayInputStream bais = new ByteArrayInputStream( baos.toByteArray() ); ksession = marshaller.unmarshall( bais ); assertEquals( 0, ksession.fireAllRules() ); } }
/** * 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); } }
/** * Default uses the serialise marshalling strategy. * @return */ public static Marshaller newMarshaller(KieBase kbase) { return getMarshallerProvider().newMarshaller( kbase ); }
/** * 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); } }
public static Marshaller newMarshaller(KieBase kbase, ObjectMarshallingStrategy[] strategies) { return getMarshallerProvider().newMarshaller( kbase, strategies ); }
@Test public void testKieMarshaller() throws Exception { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); KieContainer kieContainer = ks.newKieContainer(v100); KieSession kieSession = kieContainer.newKieSession(); KieBase kieBase = kieSession.getKieBase(); DMNRuntime runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); KieMarshallers kieMarshallers = ks.getMarshallers(); Marshaller marshaller = kieMarshallers.newMarshaller(kieBase); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshall(baos, kieSession); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); baos.close(); kieSession = marshaller.unmarshall(bais); bais.close(); runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); }