-->

解析BPEL文件中提取活动+的XPath(Parse BPEL File to extract ac

2019-10-17 12:19发布

我需要提取的活动和他们的BPEL流程的XPath的出XML文件。

我熟悉BPEL背后的理论,但不是FILEFORMAT本身。 如果我读了BPEL文件有困难,以确定具体的活动。 还没到XPath的发言。

如何解析的方式,我让每一个活动BPEL文件,没有什么奥美配器类型,它的XPath?

PS:在java中

编辑:我想提取什么

<name>CallService1Op2</name>
<xpath>/process/sequence[1]/invoke[1]</xpath>

(在XML标签都没有实际的XML。它只是指出了我想要的东西。)

从下面的BPEL:序列

    <bpel:sequence name="main">

        <!-- Receive input from requester. 
             Note: This maps to operation defined in LoadProcess.wsdl 
             -->
        <bpel:receive name="receiveInput" partnerLink="client"
                 portType="tns:LoadProcess"
                 operation="process" variable="input"
                 createInstance="yes"/>

        <!-- Generate reply to synchronous request -->
        <bpel:assign validate="no" name="Assign">


            <bpel:copy>
                <bpel:from><bpel:literal><impl:callService2 xmlns:impl="http://loadWS.iaas.unistuttgart.de" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <impl:sleepMiliSeconds>0</impl:sleepMiliSeconds>
</impl:callService2>
</bpel:literal></bpel:from>
                <bpel:to variable="Service1PLRequest" part="parameters"></bpel:to>
            </bpel:copy>
            <bpel:copy>
                <bpel:from part="payload" variable="input">
                    <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:input]]></bpel:query>
                </bpel:from>
                <bpel:to part="parameters" variable="Service1PLRequest">
                    <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[ns:sleepMiliSeconds]]></bpel:query>
                </bpel:to>
            </bpel:copy>
        </bpel:assign>
        <bpel:invoke name="CallService1Op2" partnerLink="Service1PL" operation="callService2" portType="ns:Service1" inputVariable="Service1PLRequest" outputVariable="Service1PLResponse"></bpel:invoke>
        <bpel:assign validate="no" name="Assign1">
            <bpel:copy>
                <bpel:from><bpel:literal><tns:LoadProcessResponse xmlns:tns="de.unistuttgart.iaas.bpel.loadProcess" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <tns:result>tns:result</tns:result>
</tns:LoadProcessResponse>
</bpel:literal></bpel:from>
                <bpel:to variable="output" part="payload"></bpel:to>
            </bpel:copy>
            <bpel:copy>
                <bpel:from part="parameters" variable="Service1PLResponse">
                    <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[ns:callService2Return]]></bpel:query>
                </bpel:from>
                <bpel:to part="payload" variable="output">
                    <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
                </bpel:to>
            </bpel:copy>
        </bpel:assign>
        <bpel:reply name="replyOutput" 
               partnerLink="client"
               portType="tns:LoadProcess"
               operation="process" 
               variable="output"
               />
    </bpel:sequence>

上面是一个相当简单的例子。 在XPath的经常看起来像

/process/sequence[1]/sequence[1]/repeatUntil[1]/sequence[1]/invoke[1]

因为活动嵌套到squences,流动,循环,IFS或什么不是。

EDIT2:

用例:BPEL流程是在Apache的ODE运行。 Apache的ODE推出事件开始/停止/任何一个过程/活动。 本次活动只包含XPath的。 但我想看到的名字,所以我必须匹配对的XPath。

Answer 1:

我想你应该赤这篇文章: 从org.w3c.dom.Node中获取的Xpath

此外,在它mentionned此lib目录下: http://code.google.com/p/joox/这似乎有用

我会做:一个通用的Xpath列出从XML中的所有活动节点。 然后使用DOM或joox lib如果它很适合你(免责声明,未测试)时获得的名称和XPath字符串...

希望这可以帮助



文章来源: Parse BPEL File to extract activities + XPath