`
flashcloud
  • 浏览: 185026 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java插件式编程的开源框架:JPF

阅读更多
一款Java插件式编程的插件管理引擎框架:JPF

目前,正在做一个业务员绩效提成的模块,需要用到插件式编程,在GOOGLE找到它,研究中。。。
好像知道的人不多,不知道解决此类问题,朋友们都是采用什么方式,或三方框架进行。我的要求不高,精简,小巧的插件引擎就行,自己懒得发明轮子,有知情的朋友给点意见。
分享到:
评论
3 楼 flashcloud 2009-09-22  
     经过仔细考虑,现在放弃了采用JPF这样的比较厚重的解决方案,采用了最轻巧的命令模式。

     所有的的插件均实现一个命令接口:

/**
 *  方案规则执行器 插件接口
 */
public interface RuleExecutor {
	
	/**
	 *  执行提成计算
	 * @return boolean
	 */
	public boolean execute();
	
}


将插件的包名及类名存放到数据库,采用如下的动态方式加载即可达到目的:

RuleExecutor executor = (RuleExecutor)Class.forName(pluginName).newInstance();


非常简单有效。当然,相信采用JPF来实现会更加灵活和强大,但从进度来讲,本方案是具性价比的,也符合迭代式开发的思想。

该插件接口的完整版本如下,给点意见:
/**
 *  方案规则执行器 插件接口
 */
public interface RuleExecutor {
	
	/**
	 * 提成计算所必须的计算参数,包括提成方案
	 * @param inputParameter the inputParameter to set
	 */
	public void setInputParameter(InputParameter inputParameter);
	public InputParameter getInputParameter();	
	
	/**
	 *  Dao工厂,为插件提供数据
	 * @return
	 */
	public DaoFactory getDaoFactory();
	public void setDaoFactory(DaoFactory daoFactory);
	
	/**
	 *  执行提成计算
	 * @return boolean
	 */
	public boolean execute();
}


2 楼 flashcloud 2009-09-22  
      实际上这是一个使用Drools进行复杂的业务员提成计算的子模块。简单来说,是要对客户销售的几千个品种进行不同的提成方案计算。不同的规则,插入到Drools的Working Memory的数据是不一样的。例如,对于到月末按销售数量提成的方案,需要插入的是销售汇总数据;而有的提成是按单走,业务员按产品的扣率,及在指定的时间内的回款率来提成,这时,需要传入销售单、销售单明细、回款明细等更复杂的数据;当然还有其他更多的及将来随时可以灵活应对客户的更加复杂多变的提成方案。

      针对上述情况,我现在的考虑是将数据插入到Working Memory这一块以插件的形式提供,配合Drools的Rule Templates,同时,将iBatis的SqlMapClient以Global的方式放到drt的规则模板中,再将模板数据以xls电子表的形式提供给最终用户。这样,对本模块就非常的灵活了。

      当然,我现在只是有一个大概方向和轮廓,至于插件这一块,本也用不着这么复杂的插件引擎来实现,实在不行,自己写一个也可以。当然,面对OPEN SOURCE,能在最短的时间加以熟悉并利用到项目中是最好的了。

      也希望有Drools使用经验的朋友给点意见。
1 楼 魔力猫咪 2009-09-21  
详细说明一下可以吗?为什么想到用插件?这个插件主要用来处理什么?

相关推荐

Global site tag (gtag.js) - Google Analytics