zoukankan      html  css  js  c++  java
  • [FIM]如何从A导入数据,同步到B,在A系统中删除数据,在B系统中保留数据并修改状态

    在FIM同步中,除了上次提到的,删除A库之后,同步删除B库的需求(点击这里)。还有一种比较常见的需求:

    通常在应用系统中,并不会真实删除一条数据库记录,只是做一个标记而已。

    操作思路:

    1、数据源删除用户->删除对应Metaverse对象(此时应用系统对应的CS object与对应的Metaverse对象disconnected)

    2、自定义Extension用于修改状态。

    在进行具体设置之前,我们要先了解一下FIM的默认行为:

    默认情况下,一个Metaverse对象只有当所有与之关联的CS对象都被删除之后,才会被删除。我们可以通过配置来实现,这个对象一旦在某个指定的CS中被删除后,该mv就被删除,比如某公司的HR系统,员工都离职了,我们自然可以认为与之对应的mv对象本不应存在了。

    值得一提的是,无论如何设置,FIM都会保证在最后一个MA中的CS对象与MV失去联系之后,将对应的mv删除。原因很简单,因为任何mv对象都必须要有至少一个的数据源做支撑,既然已没有数据源了,自然它没有存在的可能。

    回到本文,进入Metaverse设计界面。

    image

    如图所示红色部分,就是“当被勾选的任何一个MA中的数据disconnect的时候,删除对应Metaverse对象”。

    image

    完成该设置后,当数据在MA中删除后(IMPORT),做一次SYNC,对应Metaverse就会被删除。

    当Metaverse被删除后对应的MA会如何做呢?打开对应应用系统(需要修改状态值的)MA的配置界面,如下图所示:

    image

    值得一提的是,选项1和选项2中的disconnectors和explicit disconnector的区别,两者的相同点是,在mv删除后,都会断开,并各自处于Connect = FALSE的状态,但是前者在下次SYNC的时候,还会新建Metaverse对象,但后者则不会再创建了。

    在本文,我们应该选择最后一项,通过代码来实现。因为其他三个选项都无法表达我们要设置Status的值,为此我们要在对应的MAExtension中添加相应的代码,如果还没有使用扩展代码的,系统会提示填写一个。

    代码如下:

    DeprovisionAction IMASynchronization.Deprovision(CSEntry csentry)
    {
        csentry["Status"].Value = "Deleted";
        return DeprovisionAction.ExplicitDisconnect;
    }
    

    推荐阅读:

    1、Understanding Deprovisioning in FIM

    http://social.technet.microsoft.com/wiki/contents/articles/understanding-deprovisioning-in-fim.aspx

    2、[FIM]如何从A导入数据,同步到B,在A系统中删除数据,在B系统中删除数据
    http://www.cnblogs.com/volnet/archive/2012/01/03/2310786.html

    3、Account Deprovisioning Scenarios

    http://www.wapshere.com/missmiis/account-deprovisioning-scenarios

  • 相关阅读:
    二分图 洛谷P2055 [ZJOI2009]假期的宿舍
    并查集 洛谷P1640 [SCOI2010]连续攻击游戏
    贪心 洛谷P2870 Best Cow Line, Gold
    贪心 NOIP2013 积木大赛
    快速幂 NOIP2013 转圈游戏
    倍增LCA NOIP2013 货车运输
    树形DP 洛谷P2014 选课
    KMP UVA1328 Period
    动态规划入门 BZOJ 1270 雷涛的小猫
    KMP POJ 2752Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/volnet/p/2335764.html
Copyright © 2011-2022 走看看