@Override public Process readProcess(String processXml) { KnowledgeBuilderConfigurationImpl configuration = new KnowledgeBuilderConfigurationImpl(); SemanticModules modules = configuration.getSemanticModules(); modules.addSemanticModule(new ProcessSemanticModule()); XmlProcessReader xmlReader = new XmlProcessReader( modules, Thread.currentThread().getContextClassLoader() ); try { List<Process> processes = xmlReader.read(new StringReader(processXml)); return processes.get(0); } catch (Throwable t) { t.printStackTrace(); return null; } }
public List<Process> addProcessFromXml(final Resource resource) throws IOException { Reader reader = resource.getReader(); KnowledgeBuilderConfigurationImpl configuration = knowledgeBuilder.getBuilderConfiguration(); XmlProcessReader xmlReader = new XmlProcessReader( configuration.getSemanticModules(), knowledgeBuilder.getRootClassLoader() ); portedReader = reader; processes = xmlReader.read(portedReader); if (processes != null) { buildProcess(process, resource); xmlReader.getProcessBuildData().onBuildComplete(process);
@Override protected String processParserMessage(LinkedList<Object> parents, org.xml.sax.Attributes attr, String errorMessage) { setErrorMessage(super.processParserMessage(parents, attr, errorMessage)); return errorMessage; } };
@Test public void testSimpleXml() throws Exception { SemanticModules modules = new SemanticModules(); modules.addSemanticModule(new ProcessSemanticModule()); XmlProcessReader reader = new XmlProcessReader(modules, getClass().getClassLoader()); reader.read(new InputStreamReader(TestXml.class.getResourceAsStream("XmlTest.xml"))); List<Process> processes = reader.getProcess(); assertNotNull(processes); assertEquals(1, processes.size()); RuleFlowProcess process = (RuleFlowProcess) processes.get(0); assertNotNull(process); String output = XmlRuleFlowProcessDumper.INSTANCE.dump(process); logger.info(output); reader = new XmlProcessReader(new SemanticModules(), getClass().getClassLoader()); reader.read(new StringReader(output)); } }
@Override public Process readProcess(String processXml) { SemanticModules semanticModules = new SemanticModules(); semanticModules.addSemanticModule(new BPMNSemanticModule()); semanticModules.addSemanticModule(new BPMNExtensionsSemanticModule()); semanticModules.addSemanticModule(new BPMNDISemanticModule()); XmlProcessReader xmlReader = new XmlProcessReader(semanticModules, Thread.currentThread().getContextClassLoader()); try { List<Process> processes = xmlReader.read(new StringReader(processXml)); return processes.get(0); } catch (Throwable t) { t.printStackTrace(); return null; } } }
public List<Process> addProcessFromXml(final Resource resource) throws IOException { Reader reader = resource.getReader(); KnowledgeBuilderConfigurationImpl configuration = knowledgeBuilder.getBuilderConfiguration(); XmlProcessReader xmlReader = new XmlProcessReader( configuration.getSemanticModules(), knowledgeBuilder.getRootClassLoader() ); portedReader = reader; processes = xmlReader.read(portedReader); if (processes != null) { buildProcess(process, resource); xmlReader.getProcessBuildData().onBuildComplete(process);
@Override protected String processParserMessage(LinkedList<Object> parents, org.xml.sax.Attributes attr, String errorMessage) { setErrorMessage(super.processParserMessage(parents, attr, errorMessage)); return errorMessage; } };
public void testInvalidXMLInCompositeNode() throws Exception, SAXException { SemanticModules modules = new SemanticModules(); modules.addSemanticModule(new BPMNSemanticModule()); modules.addSemanticModule(new BPMNDISemanticModule()); XmlProcessReader processReader = new XmlProcessReader(modules, getClass().getClassLoader()) { @Override protected String processParserMessage(LinkedList<Object> parents, org.xml.sax.Attributes attr, String errorMessage) { setErrorMessage(super.processParserMessage(parents, attr, errorMessage)); return errorMessage; } }; processReader.read(BPMN2XMLTest.class.getResourceAsStream("/BPMN2-XMLProcessWithErrorInCompositeNode.bpmn2")); assertNotNull(getErrorMessage()); assertThat(getErrorMessage()).contains("Process Info: id:abc.abc, pkg:org.drools.bpmn2, name:abc, version:1.0 \n" + "Node Info: id:_47489F3D-FEBD-4452-B62E-B04EF191C6C3 name: \n" + "Parser message: (null: 24, 185): cvc-complex-type.2.4.a: Invalid content was found"); }
XmlProcessReader processReader = new XmlProcessReader(modules, moduleClassLoader); List<Process> processes = Collections.emptyList(); try { processes = processReader.read(new StringReader(bpmnStr)); } catch (Exception e) { logger.info("Unable to index because BPMN2 parsing failed [" + path.toString() + "]: " + e.getMessage()); logger.error("Trying to finish indexing process '" + process.getId() + "/" + process.getName() + "' despite " + errors.length + " validation errors."); processReader.getProcessBuildData().onBuildComplete(process);
@Override protected String buildPrintMessage(final SAXParseException x) { return processParserMessage(super.getParents(), super.getAttrs(), super.buildPrintMessage(x)); } };
public void testInvalidXML() throws Exception, SAXException { SemanticModules modules = new SemanticModules(); modules.addSemanticModule(new BPMNSemanticModule()); modules.addSemanticModule(new BPMNDISemanticModule()); XmlProcessReader processReader = new XmlProcessReader(modules, getClass().getClassLoader()) { @Override protected String processParserMessage(LinkedList<Object> parents, org.xml.sax.Attributes attr, String errorMessage) { setErrorMessage(super.processParserMessage(parents, attr, errorMessage)); return errorMessage; } }; processReader.read(BPMN2XMLTest.class.getResourceAsStream("/BPMN2-XMLProcessWithError.bpmn2")); assertNotNull(getErrorMessage()); assertThat(getErrorMessage()).contains("Process Info: id:error.process, pkg:org.jbpm, name:errorprocess, version:1.0 \n" + "Node Info: id:_F8A89567-7416-4CCA-9CCD-BC1DDE870F1E name: \n" + "Parser message: (null: 45, 181): cvc-complex-type.2.4.a: Invalid content was found"); }
@Override protected String processParserMessage(LinkedList<Object> parents, org.xml.sax.Attributes attr, String errorMessage) { setErrorMessage(super.processParserMessage(parents, attr, errorMessage)); return errorMessage; } };
protected List<Resource> buildAndDumpBPMN2Process(String process) throws SAXException, IOException { KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); ((KnowledgeBuilderConfigurationImpl) conf).initSemanticModules(); ((KnowledgeBuilderConfigurationImpl) conf).addSemanticModule(new BPMNSemanticModule()); ((KnowledgeBuilderConfigurationImpl) conf).addSemanticModule(new BPMNDISemanticModule()); ((KnowledgeBuilderConfigurationImpl) conf).addSemanticModule(new BPMNExtensionsSemanticModule()); Resource classpathResource = ResourceFactory.newClassPathResource(process); // Dump and reread XmlProcessReader processReader = new XmlProcessReader(((KnowledgeBuilderConfigurationImpl) conf).getSemanticModules(), getClass().getClassLoader()); List<Process> processes = processReader.read(this.getClass().getResourceAsStream("/" + process)); List<Resource> resources = new ArrayList<Resource>(); for (Process p : processes) { RuleFlowProcess ruleFlowProcess = (RuleFlowProcess) p; String dumpedString = XmlBPMNProcessDumper.INSTANCE.dump(ruleFlowProcess); Resource resource = ResourceFactory.newReaderResource(new StringReader(dumpedString)); resource.setSourcePath(classpathResource.getSourcePath()); resource.setTargetPath(classpathResource.getTargetPath()); resources.add(resource); } return resources; }
@Override protected String processParserMessage(LinkedList<Object> parents, org.xml.sax.Attributes attr, String errorMessage) { setErrorMessage(super.processParserMessage(parents, attr, errorMessage)); return errorMessage; } };
modules.addSemanticModule(new BPMNSemanticModule()); modules.addSemanticModule(new BPMNDISemanticModule()); XmlProcessReader processReader = new XmlProcessReader(modules, getClass().getClassLoader()); for (String processName: processes) { String original = slurp(BPMN2XMLTest.class.getResourceAsStream("/" + processName)); List<Process> processes = processReader.read(BPMN2XMLTest.class.getResourceAsStream("/" + processName)); assertNotNull(processes); assertEquals(1, processes.size());
@Override protected String buildPrintMessage(final SAXParseException x) { return processParserMessage(super.getParents(), super.getAttrs(), super.buildPrintMessage(x)); } };
XmlProcessReader reader = new XmlProcessReader(modules, getClass().getClassLoader()); List<Process> processes = reader.read(new StringReader(xml)); assertNotNull(processes); process = (RuleFlowProcess) processes.get(0);
XmlProcessReader reader = new XmlProcessReader(modules, getClass().getClassLoader()); List<Process> processes = reader.read(new StringReader(xml)); assertNotNull(processes); process = (RuleFlowProcess) processes.get(0);
private List<Process> parseProcess(String serializedProcess) throws SAXException, IOException { return new XmlProcessReader(modules, getClass().getClassLoader()).read(new StringReader(serializedProcess)); }
@Override public Process readProcess(String processXml) { KnowledgeBuilderConfigurationImpl configuration = new KnowledgeBuilderConfigurationImpl(); SemanticModules modules = configuration.getSemanticModules(); modules.addSemanticModule(new ProcessSemanticModule()); XmlProcessReader xmlReader = new XmlProcessReader( modules, Thread.currentThread().getContextClassLoader() ); try { List<Process> processes = xmlReader.read(new StringReader(processXml)); return processes.get(0); } catch (Throwable t) { t.printStackTrace(); return null; } }