情景
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表达式)的数据库表,以及要调用的类应该由接收的文档满足这些规则。然后,我会使用反射 - 或者工厂(?) - 来调用正确的实现并运行它。
问题
对我来说,这听起来像应该有某种现有的模式来实现这样的事情,我已经错过了和网上任何地方都找不到的。这种方法是否合理 - 或者是否有更好的方法,或许更灵活的方法?