String type = types[i].getDefaultExtension(); kfs.write("src/main/resources/" + id.replaceAll("\\.", "/") + "/org/test/res" + i + "." + type, res); KieBaseModel kBase1 = kproj.newKieBaseModel(id) .setEqualsBehavior(EqualityBehaviorOption.EQUALITY) .setEventProcessingMode(EventProcessingOption.STREAM); .newKieSessionModel(id + ".KSession1") .setType(KieSessionModel.KieSessionType.STATEFUL) .setClockType(ClockTypeOption.get("pseudo")); kfs.writeKModuleXML(kproj.toXML()); KieBuilder kieBuilder = ks.newKieBuilder(kfs).buildAll(); if(!kieBuilder.getResults().getMessages().isEmpty()) { for (Message msg : kieBuilder.getResults().getMessages()) { System.out.println("[ERROR]" + msg.getText()); KieModule kieModule = kieBuilder.getKieModule(); return kieModule.getReleaseId();
public WorkingMemorySimulationRepository(boolean fireRulesOnStore, String... rules) { this.fireRulesOnStore = fireRulesOnStore; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); for (String path : rules) { kbuilder.add(ResourceFactory.newClassPathResource(path), ResourceType.DRL); } if (kbuilder.hasErrors()) { throw new RuntimeException("Error while building knowledge base: " + kbuilder.getErrors()); } this.ksession = kbuilder.newKnowledgeBase().newStatefulKnowledgeSession(); try { // register global for aggregated events ksession.setGlobal("simulation", new ArrayList<AggregatedActivitySimulationEvent>()); } catch (Exception e) { // catch it as there could be no simulation global declared } }
@Test public void testSimulationCommand() { PathFinder finder = PathFinderFactory.getInstance(this.getClass().getResourceAsStream("/BPMN2-ExclusiveSplit.bpmn2")); List<SimulationPath> paths = finder.findPaths(new SimulationFilterPathFormatConverter()); SimulationContext context = SimulationContextFactory.newContext(new HardCodedSimulationDataProvider()); KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(); builder.add(ResourceFactory.newClassPathResource("BPMN2-ExclusiveSplit.bpmn2"), ResourceType.BPMN2); KnowledgeBase kbase = builder.newKnowledgeBase(); KieSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); config.setOption(ClockTypeOption.get("pseudo") ); for (SimulationPath sp : paths) { StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession(config, EnvironmentFactory.newEnvironment()); ((SessionPseudoClock) session.getSessionClock()).advanceTime(System.currentTimeMillis(), TimeUnit.MILLISECONDS); session.execute(new SimulateProcessPathCommand("com.sample.test", context, sp)); } } }
public static ReleaseId createKJarWithMultipleResources(String id, String[] resourceFiles, ResourceType[] types) throws IOException { KieServices ks = KieServices.Factory.get(); KieModuleModel kproj = ks.newKieModuleModel(); KieFileSystem kfs = ks.newKieFileSystem(); for (int i = 0; i < resourceFiles.length; i++) { Resource resource = ResourceFactory.newClassPathResource(resourceFiles[i]); String res = readResourceContent(resource); String type = types[i].getDefaultExtension(); kfs.write("src/main/resources/" + id.replaceAll("\\.", "/") + "/org/test/res" + i + "." + type, res); } KieBaseModel kBase1 = kproj.newKieBaseModel(id) .setEqualsBehavior(EqualityBehaviorOption.EQUALITY) .setEventProcessingMode(EventProcessingOption.STREAM); KieSessionModel ksession1 = kBase1 .newKieSessionModel(id + ".KSession1") .setType(KieSessionModel.KieSessionType.STATEFUL) .setClockType(ClockTypeOption.get("pseudo")); kfs.writeKModuleXML(kproj.toXML()); KieBuilder kieBuilder = ks.newKieBuilder(kfs).buildAll(); assertTrue(kieBuilder.getResults().getMessages().isEmpty()); KieModule kieModule = kieBuilder.getKieModule(); return kieModule.getReleaseId(); }
public WorkingMemorySimulationRepository(boolean fireRulesOnStore, Resource... rules) { this.fireRulesOnStore = fireRulesOnStore; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); for (Resource path : rules) { kbuilder.add(path, ResourceType.DRL); } if (kbuilder.hasErrors()) { throw new RuntimeException("Error while building knowledge base: " + kbuilder.getErrors()); } this.ksession = kbuilder.newKnowledgeBase().newStatefulKnowledgeSession(); try { // register global for aggregated events ksession.setGlobal("simulation", new ArrayList<AggregatedActivitySimulationEvent>()); ksession.setGlobal("summary", new ArrayList<AggregatedActivitySimulationEvent>()); AggregatedProcessSimulationEvent init = new AggregatedProcessSimulationEvent("", 0, 0, 0); List processOnlyList = new ArrayList<AggregatedSimulationEvent>(); processOnlyList.add(init); ksession.setGlobal("processEventsOnly", processOnlyList); } catch (Exception e) { // catch it as there could be no simulation global declared } }
public static StatefulKnowledgeSession createSession(String process) { KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(); builder.add(ResourceFactory.newClassPathResource(process), ResourceType.BPMN2); KnowledgeBase kbase = builder.newKnowledgeBase(); KieSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); config.setOption(ClockTypeOption.get("pseudo") );