首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析BPEL文件以提取activities + XPath

解析BPEL文件以提取activities + XPath
EN

Stack Overflow用户
提问于 2012-12-13 18:58:21
回答 1查看 1.1K关注 0票数 1

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

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

我如何解析一个业务流程执行语言文件,让我得到每一个活动,不管是什么编排类型,以及它的XPath?

ps:在java中

编辑:我要提取的内容

代码语言:javascript
复制
<name>CallService1Op2</name>
<xpath>/process/sequence[1]/invoke[1]</xpath>

( xml标记实际上并不在xml中。它只是为了指出我想要什么。)

来自以下bpel:序列

代码语言:javascript
复制
    <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通常看起来像这样

代码语言:javascript
复制
/process/sequence[1]/sequence[1]/repeatUntil[1]/sequence[1]/invoke[1]

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

EDIT2:

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

EN

回答 1

Stack Overflow用户

发布于 2012-12-14 17:16:59

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

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

我要做的是:一个通用的Xpath来列出xml中的所有活动节点。然后使用Dom或joox lib,如果它对您运行良好(免责声明,未测试),您将获得名称和xpath字符串……

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13858380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档