情景
web服務接收來自一些其他系統的XML形式的請求,基於該請求的Web服務應的內容執行任意數量的用戶可定義任務(例如將XML的內容存儲到數據庫,提取某些值,調用其他服務等)。請求系統的行爲不能改變(例如,針對不同的事情調用不同的動作)。設計基於輸入執行的用戶定義的操作的「管道」
提出的設計
我提出的設計將有一個接口類似...
interface PipelineTask {
public void Run(String xml);
}
隨着每個用戶操作的這個實現,比如...
public class LogToDatabaseTask implements PipelineTask {
public void Run(String xml) {
db.store(xml); // some call to database to store.
}
}
然後,一個包含規則(可能是XPath表達式)的數據庫表,以及要調用的類應該由接收的文檔滿足這些規則。然後,我會使用反射 - 或者工廠(?) - 來調用正確的實現並運行它。
問題
對我來說,這聽起來像應該有某種現有的模式來實現這樣的事情,我已經錯過了和網上任何地方都找不到的。這種方法是否合理 - 或者是否有更好的方法,或許更靈活的方法?