1

BPEL プロセスのアクティビティとその XPath を xml ファイルから抽出する必要があります。

私は BPEL の背後にある理論には精通していますが、ファイル形式自体には精通していません。BPEL ファイルを読んでも、特定のアクティビティを特定するのは困難です。XPath については言うまでもありません。

どのようなオーケストレーション タイプとその XPath を考慮せずに、すべてのアクティビティを取得する方法で BPEL ファイルを解析するにはどうすればよいですか?

PS:Javaで

編集:抽出したいもの

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

(xml-tags は実際には 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 などにネストされているためです。

EDIT2:

ユースケース: BPEL プロセスは Apache-ODE で実行されています。Apache-ODE は、プロセス/アクティビティの開始/停止/その他のイベントを出力します。イベントには XPath のみが含まれます。しかし、名前を見たいので、XPath と照合する必要があります。

4

1 に答える 1

1

この投稿を確認する必要があると思います: Get Xpath from the org.w3c.dom.Node

また、このライブラリについて言及されています:http://code.google.com/p/joox/これは便利だと思われます

私がすること: xml からすべてのアクティビティ ノードを一覧表示するための一般的な Xpath。次に、Dom または joox lib がうまく機能する場合 (免責事項、テストされていません) を使用すると、名前と xpath 文字列が取得されます...

お役に立てれば

于 2012-12-14T09:16:59.193 に答える