Tôi muốn cólạc đà Java DSL Choice trong một Choice
_ 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()
nhưng tôi nhận được ngoại lệ thời gian chạy trên endChoice()
java.lang.ClassCastException: org.apache.camel.model.SplitDefinition cannot be cast to org.apache.camel.model.ChoiceDefinition
tôi nhận được biên dịch lỗi thời gian mà không có nó
tôi nghi ngờ kết thúc() là kết thúc sự lựa chọn bên trong và bên ngoài, tôi chỉ muốn nó kết thúc một bên trong.
không đặt vào cuối() làm cho nó xử lý thứ hai khác() như là phần mở rộng của lựa chọn bên trong. Mà nó không phải là.
Tôi đã tìm thấy giải pháp thay thế bằng cách đặt lựa chọn thứ hai trong một tuyến đường phụ và "trực tiếp: SUB_ROUTE" vào trong đó, nhưng tôi muốn sử dụng cấu trúc đơn giản hơn mà tôi đã nêu ở trên nếu có thể. Có cách nào để đạt được Lựa chọn trong Lựa chọn hay đây chỉ là hạn chế của DSL của Java?
Tôi nghĩ endChoice() chỉ kết thúc một nhánh đơn lẻ và kết thúc() đã kết thúc toàn bộ cấu trúc. Tôi sẽ thử cái này –
hmm, đã thử và nó hoạt động tốt. đoán tôi không hiểu endChoice() –
vui lòng gửi mã của giải pháp để tham khảo – TecHunter