0
public ParseEvents()
{       
    String classpathLocation_plm = "com/esper/Resources/dataPkt.xsd";
    String classpathLocation_status = "com/esper/Resources/helloPkt.xsd";
    URL schemaURL_plm = this.getClass().getClassLoader().getResource(classpathLocation_plm);
    URL schemaURL_status = this.getClass().getClassLoader().getResource(classpathLocation_status);
    //System.out.println(schemaURL.getPath());
    ConfigurationEventTypeXMLDOM plmcfg = new ConfigurationEventTypeXMLDOM();
    ConfigurationEventTypeXMLDOM plmstatus = new ConfigurationEventTypeXMLDOM();
    epService = EPServiceProviderManager.getDefaultProvider();
    epService1 = EPServiceProviderManager.getDefaultProvider();
    plmcfg.setRootElementName("PACKET");
    plmcfg.setSchemaResource(schemaURL_plm.toString());
    plmstatus.setRootElementName("PACKET");
    plmstatus.setSchemaResource(schemaURL_status.toString());
    plmAdm = epService.getEPAdministrator();
    plmAdm1 = epService1.getEPAdministrator();
    plmAdm.getConfiguration().addEventType("PlmEvent", plmcfg);  
    plmAdm1.getConfiguration().addEventType("PlmStatus", plmstatus);

我在 java 项目的类路径中有两个模式。现在进入 esper 引擎的 xml 文件(作为事件)不知道要理解哪个模式。如何解决这个问题?请高手指点!

4

2 回答 2

0

如果所有 XML 事件都具有相同的根元素名称,则使用 E​​ventSender 来识别正在发送的事件类型,即:EventSender s1 = epService.getEPRuntime().getEventSender("PlmEvent") EventSender s2 = epService.getEPRuntime().getEventSender (“Plm状态”)

创建一些 EPL 语句,例如“select * from PlmEvent”并通过“s1.sendEvent(xmldoc)”发送事件

于 2013-01-18T12:27:10.430 回答
0

感谢您的解决方案。我尝试了不同的出路。xml事件发送后,DOM解析器解析xml后创建一个文档,然后将该文档作为事件发送给Esper引擎。我正在检查标签名称,然后 xml 事件正在询问相应的模式。

doc = builderFactory.newDocumentBuilder().parse(source);
            doc.getDocumentElement().normalize();           
            if((doc.getElementsByTagName("PSTATUS").getLength() != 0))
            {
                System.out.println("*** In Status packet ***");
                EPStatement cepStatement3 = plmAdm1.createEPL("select * from " + "PlmStatus"); 
                cepStatement3.addListener(new CEPListener2());
            }
            else
            {
                System.out.println("*** In Energy packet ***");

            }
于 2013-01-23T12:27:01.650 回答