7
_ from(A)
_ .split()...
_ .choice() //Choice 1
_ .when(predicate)
_ .process()
_ .choice() // Choice 2
_ .when(x)
_ .to(X)
_ .otherwise()
_ .to(Y)
_ .end() // to terminate inner choice
_ .endchoice() // tell camel we're back in the outer-choice - gets exception
_ .otherwise() // Choice 1
_ .to(Z)
_ .end()
を持つようにしたいが、私はendChoice(上の実行時例外を取得)
java.lang.ClassCastException: org.apache.camel.model.SplitDefinition cannot be cast to org.apache.camel.model.ChoiceDefinition
私はそれなし時エラーをコンパイルし得る
I疑わしいend()は内側と外側の選択を終了しています、私は内側のものを終了するだけです。
end()に入れていない場合は、otherwise()をinner-choiceの拡張として扱います。それはない。
私はサブルートに2番目の選択肢を入れて「直接:SUB_ROUTE」という形で回避策を見つけましたが、可能であれば上記で概説したより単純な構造を使用することをお勧めします。 Choices in Choicesを達成する方法はありますか、これはJava DSLの単なる制限ですか?
私は、endChoice()が選択した1つの分岐を終了し、end()が構造全体を終了したと考えました。私はこれを試してみる。 –
うーん、それを試して、それは正常に働いた。私は理解していないと思うチョイス() –
参照のためのソリューションのコードを提出してください – TecHunter