BSTEK Development Framework2(BDF2) : 3.4.替换部门

      BDF2中允许用户替换其中的用户、部门及岗位信息,而且这种替换可以根据需要只替换其中的用户信息或只替换其中的部门信息或只替换其中的岗位信息,或者全部替换掉。替换后的用户、部门及岗位信息可以来自用户定义的任何源,比如其它数据库、LDAP、WebService或其它系统。接下来我们就来介绍如何替换系统中采用的部门信息。

      替换部门与替换用户的操作基本一样,不同的地方是替换部门需要实现IDept与IDeptService两个接口,而替换用户则需要实现两个接口与一个抽象类(IUserService,IFrameworkService与AbstractUser),这里实现IDept接口,实现上相当于之前实现AbstractUser功能是一样的,都是为了实现一个我们自己的部门实体对象,这里要实现的IDeptService相当于我们在用户当中实现的IUserService接口作用是一样的,我们来看看IDept接口内容:

IDept接口源码
public interface IDept extends ICompany{
	String getId();
	String getName();
	String getParentId();
	IDept getParent();
	List<IUser> getUsers();
}

      相比AbstractUser类,IDept接口定义的方法较少,再来看看IDeptService接口:

IDeptService
public interface IDeptService {
	IDept newDeptInstance(String deptId);
	List<IDept> loadUserDepts(String username);
	IDept loadDeptById(String deptId);
	List<IDept> loadDeptsByParentId(String parentId,String companyId);
}

      定义的几个方法都比较简单,这里就不再多解释了,需要注意的是,无论我们实现IDept接口还是实现IDeptService接口,要保证所有方法都不返回null,否则可能会产生错误。写好这两个接口的实现类后,接下同样是配置到我们的datasources.xml当中,配置示例如下:

IDeptService实现类配置
	<bean id="demoDeptService" class="ext.DemoDeptService"></bean>
	<bdf:dept-service ref="demoDeptService"/>

      同样,上述的两行配置也可以被下面的一行配置取代:

IDeptService实现类另一种配置
<bean id="bdf2.deptService" class="ext.DemoDeptService"></bean>

      需要注意的是,上述配置当中,bean的ID只能是bdf2.deptService。

      这些工作完成后,替换系统中部门的工作也就完成了。