2010年3月14日日曜日

Oracle BPEL/Java Embedding/正規表現

正規表現のグループ機能を使いたいが、matches(intputString, regexPattern) だとマッチングの成否を返すだけなので、Java Embedding を使ってみることにした。

環境:Fusion Middleware 11g + JDeveloper 11g

やりたい事は、例えば「テキストに含まれる最初の日付文字列から曜日を取り出す」といった感じの問題で、こんなふうにしたい。
<soapenv:Body>
<bpel:process>
<bpel:input>
こんにちは
今日の日付は 2010/03/13(土)
です。
</bpel:input>
</bpel:process>
</soapenv:Body>
<env:Body>
<processResponse xmlns="http://xmlns.oracle.com/OracleBpelTest1App_jws/Project1/BPELProcess1">
<result>土</result>
</processResponse>
</env:Body>

試しにBPEL デザイナ上でこんなコードを書いてみた。
更にソースエディタで、Java_Embedding_1 の直前に 以下のようにimport を記述する。
    <bpelx:exec import="org.w3c.dom.Element"/>
<bpelx:exec import="java.util.regex.*"//>

SoapUI から動かすと、期待したリクエスト/レスポンスが得られることが確認できた。

まあわりとすんなりいくが、以下、若干イラっとした点。
最初、org.w3c.dom.Element を import し忘れていたため、コンパイル時に普通に「シンボルが見つからない」という事になるが、コンパイラビューのメッセージには「クラスパスが正しくないので、正しく設定しろ」との文言が出る。これに騙されて、本来の原因に気づくまでクラスパス関連を確認し始めたりして、時間を無駄する羽目になる。JDeveloper はこういうミスリーディングな挙動が本当に多すぎてストレスがたまる。

0 件のコメント:

コメントを投稿