【发布时间】:2022-06-15 02:44:59
【问题描述】:
我的 drools 引擎在远程服务器上运行,可以从我的机器访问。当尝试获取可以在该机器上的工件下看到的 jar 时,我收到以下错误。
Caused by: java.lang.RuntimeException: XSD validation failed against the new schema (cvc-complex-type.3.2.2: Attribute 'sequential' is not allowed to appear in element 'kbase'.) and against the old schema (cvc-elt.1.a: Cannot find the declaration of element 'kmodule'.).
at org.drools.compiler.kproject.models.KieModuleModelImpl$KieModuleValidator.validate(KieModuleModelImpl.java:317)
at org.drools.compiler.kproject.models.KieModuleModelImpl$KieModuleValidator.validate(KieModuleModelImpl.java:282)
at org.drools.compiler.kproject.models.KieModuleModelImpl$KieModuleValidator.access$100(KieModuleModelImpl.java:257)
at org.drools.compiler.kproject.models.KieModuleModelImpl$kModuleMarshaller.fromXML(KieModuleModelImpl.java:204)
at org.drools.compiler.kproject.models.KieModuleModelImpl.fromXML(KieModuleModelImpl.java:152)
at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:289)
... 113 common frames omitted
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'sequential' is not allowed to appear in element 'kbase'.
at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)
at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:511)
at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3587)
at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processAttributes(XMLSchemaValidator.java:2992)
at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2286)
at java.xml/com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:829)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2725)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:541)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.validation.StreamValidatorHelper.validate(StreamValidatorHelper.java:176)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:115)
at java.xml/javax.xml.validation.Validator.validate(Validator.java:124)
at org.drools.compiler.kproject.models.KieModuleModelImpl$KieModuleValidator.validate(KieModuleModelImpl.java:308)
... 118 common frames omitted
当我在本地机器上按照完全相同的步骤运行 drools docker 时,相同的代码可以正常工作。
public KieContainer kieContainer()
throws IOException {
KieServices ks = KieServices.Factory.get();
KieResources resources = ks.getResources();
String url = ""; // url of the jar created in the drools workbench UI
UrlResource urlResource = (UrlResource) ks.getResources().newUrlResource(url);
urlResource.setUsername("Username");
urlResource.setPassword("Password"`enter code here`);
urlResource.setBasicAuthentication("enabled");
InputStream stream = urlResource.getInputStream();
KieRepository repo = ks.getRepository();
KieModule k = repo.addKieModule(resources.newInputStreamResource(stream));
return ks.newKieContainer(k.getReleaseId());
}
工作台中的 Kmodule:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.drools.org/xsd/kmodule">
<kbase name="ShipmentCheck" default="false" eventProcessingMode="stream" equalsBehavior="identity" packages="splitshipment">
<ksession name="ShipmentCheck" type="stateful" default="true" clockType="realtime"/>
</kbase>
<kbase name="InventoryCheck" default="false" eventProcessingMode="stream" equalsBehavior="identity" packages="inventoryavailability">
<ksession name="InventoryCheck" type="stateful" default="true" clockType="realtime"/>
</kbase>
<kbase name="CapacityCheck" default="false" eventProcessingMode="stream" equalsBehavior="identity" packages="capacity">
<ksession name="CapacityCheck" type="stateful" default="true" clockType="realtime"/>
</kbase>
<kbase name="SafetyStockCheck" default="false" eventProcessingMode="stream" equalsBehavior="identity" packages="safetystock">
<ksession name="SafetyStockCheck" type="stateful" default="true" clockType="realtime"/>
</kbase>
</kmodule>
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
-
请包含工作台返回的 kmodule。
标签: java spring jar drools rule-engine