1.问题情境
在做BPM(业务流程处理)的过程中,我们通常要根据不同的处理流程选择相应的处理方法。这些处理流程的配置信息在数据库中,但是具体的相应的处理方法在代码中,如何能够根据数据库中的配置灵活加载相应的处理模块呢?
2.解决思路
首先,设计一个接口,包含业务处理流程的一些方法,比如发起请求,审核请求,结束流程。然后使用不同的处理方法类去实现这个接口。
然后,在数据库中配置每个流程相应的处理方法的实现类类名,根据配置信息采用反射的方式动态创建处理方法实现类的实例。
最后,设计一个适配器类(Adapter),设计一个构造函数,采用依赖注入的方式,注入一个抽象(接口)类型的引用。在实际调用的时候将反射得到的实例传进去就可以了,适配器(adapter)内部知道如何调用相应的方法进行处理。
3.具体实现
4.效果
配置信息如下:
<appSettings> <add key="ProcessName" value="ProcessC"/> </appSettings>效果如下:
如果我们改变配置
<appSettings> <add key="ProcessName" value="ProcessA"/> </appSettings>效果如下:
5.总结:
这种方式能够方便地切换不同的处理方式,使用IOC及反射实现更加灵活的处理架构,提高系统的健壮性。
源代码下载:
http://download.csdn.net/detail/afandaafandaafanda/8535249
原文链接:https://www.f2er.com/javaschema/284894.html