同步AD的组织结构到Ofbiz

该博客介绍了如何将LDAP的组织结构,包括部门和人员,同步到Ofbiz系统中。部门映射到PartyGroup,人员映射到Party,利用PartyRelationship表进行上下级关系映射,并使用特定角色实现双向同步。人员的职位通过EmplPositionType和EmplPositionFulfillment管理,未分配人员的EmplPosition会被删除。博客内容涵盖视图定义、同步服务的设定及实现。
摘要由CSDN通过智能技术生成

 * 将LDAP中的组织结构同步过来,包括部门和人员
 * 部门对应于Ofbiz中的Party和PartyGroup,Party的角色是INTERNAL_ORGANIZATIO和LDAP,角色LDAP是用于实现双向同步的比对
 * 上下级映射用PartyRelationship表,关系类型的partyRelationshipTypeId为GROUP_ROLLUP,删除时将Party的状态标记为Disabled

 * 人员对应于Ofbiz中的Party和Person,Party的角色是EMPLOYEE和LDAP,所尾部门是用PartyRelationship表,关系类型的partyRelationshipTypeId为EMPLOYMENT,删除时将Party的状态标记为Disabled
 * 同时将UserLogin中的enabled改为N

 人员的职位对应于EmplPositionType,若软件工程师部属于IT部,则在IT部下面新建EmplPosition。同时将职位下的人员通过EmplPositionFulfillment加进EmplPosition中。若EmplPositionFulfillment的下面没有人,则删除对应的EmplPosition

一、定义一个视图

 <view-entity entity-name="EmplPositionFulfillmentAndParty" package-name="org.apache.ofbiz.plugin.wasion">
      <member-entity entity-alias="EMPPOS" entity-name="EmplPosition"/>
      <member-entity entity-alias="EMPPOSFUL" entity-name="EmplPositionFulfillment"/>
      <member-entity entity-alias="PARTY" entity-name="Party"/>
      <alias name="partyId" entity-alias="PARTY"></alias>
      <alias name="statusId" entity-alias="PARTY"></alias>
      <alias name="emplPositionId" entity-alias="EMPPOS"></alias>
      <view-link entity-alias="EMPPOS" rel-entity-alias="EMPPOSFUL" rel-optional="true">
        <key-map field-name="emplPositionId"/>
      </view-link>
      <view-link entity-alias="EMPPOSFUL" rel-entity-alias="PARTY">
        <key-map field-name="partyId"/>     
      </view-link>
    </view-entity>

二、定义同步的服务:

<service name="syncPartyByLdap" auth="true" transaction-timeout="3600" 
           engine="groovy" location="component://wasion/script/ldap.groovy" invoke="syncParty" >
       <description>从LDAP中同步组织结构</description>
       <attribute name="result" mode="OUT" type="Map"></attribute>
   	</service> 

三、服务的实现类:

import javax.naming.directory.*;
import javax.naming.*;
import java.util.*;

import org.apache.ofbiz.service.ModelService
import org.apache.ofbiz.service.ServiceUtil;
import org.apache.ofbiz.base.util.*;
import org.apache.ofbiz.entity.GenericEntityException
import org.apache.ofbiz.entity.GenericValue;
import org.apache.ofbiz.entity.condition.EntityCondition
import org.apache.ofbiz.entity.condition.EntityJoinOperator
import org.apache.ofbiz.entity.condition.EntityOperator
import org.apache.ofbiz.entity.util.EntityQuery
/*
 * 将LDAP中的组织结构同步过来,包括部门和人员
 * 部门对应于Ofbiz中的Party和PartyGroup,Party的角色是INTERNAL_ORGANIZATIO和LDAP,角色LDAP是用于实现双向同步的比对
 * 上下级映射用PartyRelationship表,关系类型的partyRelationshipTypeId为GROUP_ROLLUP,删除时将Party的状态标记为Disabled
 * 
 * 人员对应于Ofbiz中的Party和Person,Party的角色是EMPLOYEE和LDAP,所尾部门是用PartyRelationship表,关系类型的partyRelationshipTypeId为EMPLOYMENT,删除时将Party的状态标记为Disabled
 * 同时将UserLogin中的enabled改为N
 * 
 * 人员的职位对应于EmplPositionType,若软件工程师部属于IT部,则在IT部下面新建EmplPosition。同时将职位下的人员通过EmplPositionFulfillment加进EmplPosition中。若EmplPosit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值