BDF2中允许用户替换其中的用户、部门及岗位信息,而且这种替换可以根据需要只替换其中的用户信息或只替换其中的部门信息或只替换其中的岗位信息,或者全部替换掉。替换后的用户、部门及岗位信息可以来自用户定义的任何源,比如其它数据库、LDAP、WebService或其它系统。接下来我们就来介绍如何替换系统中采用的岗位信息。
替换岗位与替换部门的操作基本一样,不同的地方是替换岗位需要实现IPosition与IPositionService两个接口,而替换部门则需要实现IDept与IDeptService接口,我们来看看IPosition接口内容:
IPosition接口源码
public interface IPosition extends ICompany{ String getId(); String getName(); List<IUser> getUsers(); }
相比IDept类,IPosition接口定义的方法较少,再来看看IPositionService接口:
IPositionService
public interface IPositionService { public static final String BEAN_ID="bdf2.positionService"; IPosition newPositionInstance(String positionId); List<IPosition> loadUserPositions(String username); IPosition loadPositionById(String positionId); /** * 分页加载岗位数据 * @param page Dorado7分页对象,其中包含pageNo,pageSize,分页后的数据也填充到这个page对象当中,该参数不可为空 * @param companyId 要加载哪个companyId下的岗位信息,该参数不可为空 * @param criteria Dorado7条件对象,可从中取到相应的条件值,该参数可为空 */ void loadPagePositions(Page<IPosition> page,String companyId,Criteria criteria); }
定义的几个方法都比较简单,这里就不再多解释了,需要注意的是,无论我们实现IPosition接口还是实现IPositionService接口,要保证所有方法都不返回null,否则可能会产生错误。写好这两个接口的实现类后,接下同样是配置到我们的datasources.xml当中,配置示例如下:
IPositionService实现类配置
<bean id="demoPositionService" class="ext.DemoPositionService"></bean> <bdf:position-service ref="demoPositionService"/>
同样,上述的两行配置也可以被下面的一行配置取代:
IPositionService实现类另一种配置
<bean id="bdf2.positionService" class="ext.DemoPositionService"></bean>
需要注意的是,上述配置当中,bean的ID只能是bdf2.positionService。
这些工作完成后,替换系统中岗位的工作也就完成了。