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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。