bpelx:exec を介して BPEL から Java クラスを呼び出しています。クラスが特定の障害 (パートナー リンクの 1 つから BPEL に認識されている) をスローできれば、物事は大幅に簡素化されます。これを AdapterFault と呼びましょう。AdapterFault は、wsimport とサブクラスの Exception によって生成されます。
Embedded Java ブロック内のコードは次のとおりです。
Object wfr = getVariableData("inputVariable","request");
Object req = getVariableData("V_CreateServiceRequest","createTNRequestPart");
somepackage.EndpointIterator it =
new somepackage.EndpointIterator();
it.setWFRequest(wfr);
it.setPlatformName("MMSC");
it.setOperationName("createTN");
it.setRequest(req);
Object reply = it.invoke();
setVariableData("V_CreateServiceResponse","createTNResponsePart",reply);
Java メソッドが AdapterFault をスローするものとして宣言すると、BPEL は例外が捕捉されていないと不平を言ってデプロイを拒否します。Java コールアウト ステップは BPELFault のみを宣言しているようです。
catch(AdapterFault) の代わりに CatchAll ブロックに送られる RuntimeException しかスローできません。
Java コールアウトからチェック済みの Fault をスローする簡単な方法はありますか?