组织结构配置文件的诡异行为

组织结构配置文件(OrganizationProfile),大家可能比较陌生,尤其对编程访问。具体的操作我就不在这里一一列举了,SDK里面也有例子,这里面只说一个可能和我们的预期不太一样的一个API行为。

在组织结构配置文件中,一个组织中的成员分为两种类型,Leader和Member。可以通过OrganizationProfile的AddMember方法来向这两个部分中加入用户(通过一个参数来进行区分是Leader还是Member),并通过RemoveMember的方式删除之。

如果这个用户不在Member中,我们可是使用下面这句话把用户user1加为Leader

   1: orgProfile.AddMember("domain\\user1", 
   2:               OrganizationMembershipType.Leader);

假设在之前这个组织中空无一人,执行完上面这句话的时候,user1既会出现在Leader中,也会出现在Member中,也就是说这个用户同时会自动加到Member里。这个行为很好理解,也make sense。

BUT!(又来了)

假设这个时候user1已经是Leader了(当然他也是Member),看下面这个代码:

   1: orgProfile.AddMember("domain\\user1",    
   2:               OrganizationMembershipType.Member);

执行完这句话你觉得会发生什么?把user1又一次加为Member,你觉得在上面那种假设情况下,应该不会发生任何变化是吧?错了!当我们执行完这句话的时候,user1还在Member中,但已经从Leader中消失掉了。很奇怪吧……我相信这是一个By Design的Bug……

换句话说,当我们要把一个用户加为成员的话,首先你得看一下这个用户是不是已经在成员中了,如果他已经存在,就不要再加一遍了。否则,万一这位用户是这个组织的领导,你一加,领导就没了(这在中国的项目中是多么可怕的行为)

posted on 2011-06-30 21:42  Erucy  阅读(225)  评论(0编辑  收藏  举报

导航