• MS CRM 2011的自定义与开发(5)——关系编辑器


        在MS CRM 2011中,关系Relationship代表了实体之间的相互联系方面的信息,系统定制人员,通过关系编辑器可以设定实体之间的关系。

        MS CRM 2011提供了两种类型的关系,分别是1:N以及N:N,其中1:N关系,表示实体之间是1对多性质的连接,这种关系是相对而言的,例如A实体和B实体之间是1:N关系,那么B实体和A实体就是N:1关系,在A实体的关系编辑器设定1:N关系后,在B实体的N:1关系列表中,也会多出一条对应的记录。N:N关系代表了多对多性质的连接,在设定N:N关系时,系统会创建一个中间实体,以存储多对多的关系。这个中间实体主要由三个属性组成,分别是主键、连接到多对多两方的外键属性。对于这个中间实体,是不可以被自定义的,同时,需要通过Associate方法去创建该中间实体的记录,需要通过Deassociate方法去删除该中间实体的记录。

        下面来介绍如何使用关系编辑器设定关系,首先介绍1:N关系编辑设计器。

        打开需要创建关系的实体的实体编辑器,点击左侧导航栏中的“1:N”关系导航项,进入当前实体的1:N关系列表,如下图所示。

    clip_image002

        点击“新的一对多关系”按钮,系统弹出关系编辑器,如下图所示。

    clip_image004

        关系编辑器中,主要分为四部分内容,分别是“关系定义”、“查找字段”、“主要实体的导航窗格项”以及“关系行为”。

        在“关系定义”部分,包括有:

      1. 主要实体:也就是1:N关系中的1所指定的实体;
      2. 相关实体:N:1关系中,N所指定的实体;
      3. 名称:当前关系的架构名称,因为MS CRM系统会在后台有一个专门记录关系的数据表,并且要求组织内部的所有关系名称不能够重复;

        在“查找字段”部分,包括有:

            因为建立关系时,系统会在相关实体中添加一个代表了当前关系的属性,该属性是lookup类型,该属性的定义信息,就是在“查找字段”部分进行维护的。

      1. 显示名称:属性的显示名称;
      2. 需求级别:属性的需求级别;
      3. 名称:属性的架构名称;
      4. 说明:属性的描述信息;

        在“主要实体的导航窗格项”部分,包括有:

            创建1:N关系时,可以设定主实体表单的左侧导航栏中放置连接到相关实体列表的导航项目,那么对这个导航项目的信息就是在“主要实体的导航窗格项”进行设置的。

    1. 显示选项:共有三个选项,分别是
    • 不显示:不在主实体表单的左侧导航栏中放置连接到相关实体列表的导航项目;
    • 使用自定义标签:在主实体表单的左侧导航栏中放置连接到相关实体列表的导航项目,该导航项目的显示内容使用“自定义标签”中的文本信息;
    • 使用复数名称:在主实体表单的左侧导航栏中放置连接到相关实体列表的导航项目,该导航项目的显示信息使用相关实体的复数名称;

    2.  显示区域,共有四个选项,对应了主要实体表单的左侧导航栏的四个不同区域,分别是,详细信息、市场营销、销售以及服务,通过客户实体表单,来解释一下这四个区域所在的位置。

    clip_image006

        那么,通过在“显示区域”选择不同的下拉项目,就可以将导航项目放置于相应的区域。

    3.  自定义标签,在介绍“显示选项”时已经提及,如果设定“显示选项”为“自定义标签”选项,那么导航项目的显示文本信息就来自于“自定义标签”文本框中设定的内容;

    4.  显示顺序:设定导航项目的显示排序;

        在“关系行为”部分,包括有:

        所谓的关系行为,就是具有业务逻辑语义的级联操作设置信息。Ms crm中给定的行为类型包括有:

      1. 引用类型:如果关系设定为这种类型的行为,那么当主实体记录进行分配、重订父级、共享、取消共享以及合并这些操作时,子实体将不会进行级联操作,举例来讲,主实体记录被分配给其他用户时,当前关系设定的子实体的记录的负责人将不会改变。而对于删除操作,相关实体的记录依旧存在于系统中,不会被删除,但是指向主实体记录的lookup类型属性的值将会被清除为空;
      2. 父类型:如果设定为父类型的行为,那么主实体记录在进行除了合并之外的操作时,都将影响到相关实体的记录。而对于合并操作,相关实体的记录将不会做出改变;
      3. 引用并且禁止删除类型:如果设定“引用并且禁止删除”类型的行为,那么主实体记录在进行“删除”操作时,将会检测该记录是否有相关实体的子记录与之关联,如果有,则不允许删除主实体的记录,否则,可以删除。除了删除的其他操作,都不会影响相关实体的子记录;
      4. 可配置项的级联类型:如果选择“可配置项的级联”类型的行为,那么除了“合并”操作无法设定级联行为,对于其他几种类型的操作都可以进行配置。需要注意的是,如果所有操作的设置都是“全部级联”,那么关系行为类型就会被自动设置为“父”类型的行为类型

        可以配置的级联行为包括有四种,分别是:

      1. 全部级联:所有的相关记录都将执行主记录的操作;
      2. 可用项的级联:所有的处于可用状态的相关记录都将执行主记录的操作;
      3. 用户负责项的级联:所有的主记录负责人负责的子记录都将执行主记录的操作;
      4. 无级联:主记录的操作不会应用到任何相关记录之上;

        对于六种操作,其分别的含义是:

    • 分派:当主记录的负责人发生改变,相关记录是否同样发生改变;
    • 重订父级:若主要实体记录的重定父级操作造成负责人更改,相关记录的负责人是否发生更改;
    • 共享:当主记录进行共享操作时,是否将相关记录也进行共享;
    • 取消共享:当主记录取消共享时,是否将相关记录也取消共享;
    • 删除:当主记录被删除时,相关记录是否也要被删除、或者断开主记录与相关记录之间的连接;
    • 合并:当主记录之间进行合并时,子记录是否将合并后的记录作为父级记录;

        当创建关系成功后,可以设定主实体与相关实体的映射信息。点击关系编辑器左侧导航栏中的“映射”条目,可以导航到映射列表,如下图所示。

    clip_image008

        点击“新建”按钮,系统将弹出“映射编辑器”,可以在其中设置映射信息。如下图所示。

    clip_image010

        在映射编辑器中,左侧是主实体的属性列表,右侧是相关实体的属性列表。通过选择两个属性列表中的记录,可以完成主实体属性到相关实体属性的映射。

        需要注意的是,

    • 映射中的两个属性,必须是同一种数据类型,并且相关实体的属性的长度不得小于主实体的属性的长度;
    • 映射关系中的两个属性,其格式必须匹配,例如两个属性都是“日期和时间”类型,但格式不同,分别是“仅显示日期”和“显示日期和时间”,那么这两个字段也无法建立映射;
    • 主要实体的被映射属性,必须存在于主实体的表单中;
    • 相关实体的映射属性,必须在相关实体的表单中是可以编辑的属性;

        当以上条件不被满足时,系统将会弹出报错对话框,如下图所示。

    clip_image012

        此外,映射起作用、被触发的时机是在主实体表单中,点击左侧导航栏中连接到相关实体的导航项,再点击相关记录列表的新建按钮时,才会按照映射配置中的设定,将主实体中的被映射属性值,直接添加到相关实体记录中。举例如下图所示。

    clip_image014

        只有在客户表单中点击“联系人”导航项,而后点击Ribbon工具条中的“添加联系人”按钮,在系统弹出的联系人表单中,才会根据映射关系,将客户记录中的“商务电话”属性值直接复制给新建的联系人记录的“商务电话”属性。

    下面介绍使用关系编辑器创建N:N关系。下图是多对多关系编辑器截屏。

    clip_image016

        主要分为“当前实体”、“其他实体”以及“关系定义”三个部分。

        在“当前实体”以及“其他实体”两个部分,就是设置在N:N两方实体表单的左侧导航栏中,对应于当前关系的导航项的显示信息,和1:N关系编辑器中的“主要实体的导航窗格项”部分的内容是类似的,这里不再赘述。

    在“关系定义”部分中,

        名称,设定了当前关系的名称,和1:N编辑器的“关系定义”的“名称”部分的信息是一样的,这里不再赘述;

        关系实体名称,前面已经提及,N:N关系在建立时,ms crm系统会为此创建中间实体,而此中间实体的架构名称就是在此进行设置。因为这是实体的名称,所以,要求在组织内是唯一的,否则系统是不允许创建该N:N关系的。

    以上,介绍的就是利用MS CRM 2011关系编辑器设定实体间关系的内容。

  • 相关阅读:
    [Javascript] Closure Cove, 1
    [Backbone]7. Collection Views, Custom Events
    [Backbone]6. Collections.
    Immediately-Invoked Puzzler
    [Javascipt] Immediately-Invoker 2
    [Javascript] Using map() function instead of for loop
    [Javascript] Funciton Expression
    [Backbone]5. Model & View, toggle between Models and Views -- 2
    JS-jQuery-EasyUI:百科
    笔记-Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式
  • 原文地址:https://www.cnblogs.com/StoneGarden/p/2029934.html
Copyright © 2020-2023  润新知