gpt4 book ai didi

java - 解析 BPEL 文件以提取 Activity + XPath

转载 作者:太空宇宙 更新时间:2023-11-04 07:54:18 25 4
gpt4 key购买 nike

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

我熟悉 BPEL 背后的理论,但不熟悉文件格式本身。如果我阅读 BPEL 文件,我很难识别特定的 Activity 。更不用说 XPath 了。

如何以获取每个 Activity 的方式解析 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]

因为 Activity 嵌套在序列、流程、循环、if 或其他内容中。

编辑2:

用例:BPEL 流程在 Apache-ODE 上运行。 Apache-ODE 提供进程/Activity 的启动/停止/任何事件。该事件仅包含 XPath。但我想看到这个名字,所以我必须与 XPath 进行匹配。

最佳答案

我认为你应该检查这篇文章:Get Xpath from the org.w3c.dom.Node

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

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

希望这有帮助

关于java - 解析 BPEL 文件以提取 Activity + XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com