【问题标题】:Parse BPEL File to extract activities + XPath解析 BPEL 文件以提取活动 + XPath
【发布时间】:2012-12-01 06:09:06
【问题描述】:

我需要从 xml 文件中提取 BPEL 流程的活动及其 XPath。

我熟悉 BPEL 背后的理论,但不熟悉文件格式本身。 如果我阅读 BPEL 文件,我很难识别具体的活动。 更不用说 XPath。

我如何解析 BPEL 文件以获取每个活动,不知道什么编排类型及其 XPath?

ps:在java中

编辑:我要提取的内容

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

(xml标签实际上不在xml中。它只是为了指出我想要的。)

来自以下 bpel:sequence

    <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]

因为活动嵌套在序列、流、循环、ifs 中。

编辑2:

用例:BPEL 流程在 Apache-ODE 上运行。 Apache-ODE 为进程/活动的启动/停止/任何事件输出事件。该事件仅包含 XPath。但是我想看名字,所以我必须匹配XPath。

【问题讨论】:

  • 这个有用例吗?您是否尝试过使用 bpel 库?至于您的问题,您只想获得没有顺序的活动列表吗?还是要保留结构?你想准确提取什么?
  • 用例:BPEL 流程在 Apache-ODE 上运行。 Apache-ODE 为进程/活动的启动/停止/任何事件输出事件。该事件仅包含 XPath。但是我想看名字,所以我必须把它和一些东西匹配起来。顺序并不重要。我想提取活动名称,它是 XPath(编辑了我的问题)。
  • 您可以添加一个示例 BPEL 以及您想要提取的内容吗?这会有所帮助:)
  • 所以您想按名称查找活动,然后获取他们的 xpath 定位器?对吗?
  • 我想获取每个活动的名称和 xpath。我也不知道。

标签: java xpath xml-parsing bpel apache-ode


【解决方案1】:

我认为你应该看看这个帖子:Get Xpath from the org.w3c.dom.Node

其中还提到了这个库:http://code.google.com/p/joox/ 这似乎很有用

我会做什么: 一个通用 Xpath,用于列出 xml 中的所有活动节点。 然后使用 Dom 或 joox lib,如果它适合您(免责声明,未经测试),您将获得名称和 xpath 字符串...

希望对你有帮助

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 2020-09-30
  • 2023-03-21
  • 2016-11-15
  • 1970-01-01
  • 2012-03-27
相关资源
最近更新 更多