一、CRM基本知识

1.CRM2001 有几个服务端点?

答:对外公开的服务,如Web服务,WCF,Restful API

2.一个ERP系统,要访问CRM的数据,CRM2011有哪些现有的服务入口提供给我

答:从JS访问CRM数据,用的是REST。

CRM2011并不提供现成的数据库方式的访问服务。

端口就两个:rest    soap

一共3个:
a.发现服务。b.组织服务。c.组织数据服务。

CRM设置—>自定义—>自定义项—>开发人员资源

三个各提供啥服务,有啥区别?

从JS访问CRM数据,用的是REST。 这个rest的原理是什么?

1).HTTP
2).TCP/IP 
3).Socket编程
4).相关知识 OData的微软的REST自定标准
 
TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。
         UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。
        这里有一张图,表明了这些协议的关系。
 
TCP/IP协议族包括运输层、网络层、链路层。现在你知道TCP/IP与UDP的关系了吧。
 

3.常见的两个错误:

1) 未将对象引用到对象实例
2) 关键字不在字典中

声明字符串变量时未赋空值就应用变量。
未用new初始化对象。

4.MSCRM_CONFIG库有啥用?

答:存储的组织信息;MSCRM_CONFIG是安装CRM时,第一个生成的库。

保存服务器配置、服务器角色、组织信息、组织配置、用户信息、用户配置等。

5.组织发现服务是干什么用的?

答:发现组织的

6.http 和https(Hypertext Transfer Protocol over Secure Socket Layer) 对比:

1) https协议需要到ca申请证书,一般免费证书很少,需要交费。
  2) http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  3) http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4) http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
   5) https是http的安全版。

7.内部(默认)和ADFS 对比:

1).配置成ADFS(IFD)后,初始化WebService时的方式如下:

IFD 的服务前面的段必须是https,不分内部和外部。

  1. Uri orgServiceUri = new Uri("https://192.168.1.101/MicrosoftDynamicCRM/XRMServices/2011/Organization.svc");
  2. ClientCredentials credentials = new ClientCredentials();
  3. credentials.UserName.UserName = CRMUserName;
  4. credentials.UserName.Password = CRMUserPassword;
  5. OrganizationServiceProxy crmServiceProxy = new OrganizationServiceProxy(orgServiceUri, null, credentials, null);
  6. crmService = (IOrganizationService)crmServiceProxy;

2). on-premise 内部部署(AD认证),初始化WebService时的方式如下:

服务前面的段可以是https,也是可以http

如果没有路由映射 外网是访问不了   只能内网访问

  1. Uri organizationUri = new Uri("http://192.168.1.101/MicrosoftDynamicCRM/XRMServices/2011/Organization.svc");
  2. IServiceConfiguration<IOrganizationService> orgConfigInfo = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(organizationUri);
  3. var Orgcreds = new ClientCredentials();
  4. Orgcreds.Windows.ClientCredential = new System.Net.NetworkCredential("administrator", "admiN123", "DynamicCRM.com");
  5. OrganizationServiceProxy _serviceproxy = new OrganizationServiceProxy(orgConfigInfo, Orgcreds);
  6. return (IOrganizationService)_serviceproxy;

这样也可以:

  1. Uri orgServiceUri = new Uri(Config.CrmWebServiceUrl);
  2. var credentials = new ClientCredentials();
  3. credentials.Windows.ClientCredential = new System.Net.NetworkCredential(Config.CrmServerAccount, Config.CrmServerPSW, Config.CrmServerDomain);
  4. OrganizationServiceProxy _serviceproxy = new OrganizationServiceProxy(orgServiceUri, null, credentials, null);
  5. return (IOrganizationService)_serviceproxy;

8.防火墙要开起来,不要关了,关了服务安全有问题。

9.权限最大的部门业务部门是根部门。

10.怎么添加示例数据?如下图:

11.VMware vSphere Client 要学会怎么使用,这个工具很强大,可以和Hyper-V,Oracle VM VirtualBox对比下。安装服务器的时候选windows Server 2008 R2 Enterprise(完全安装) ,选自定义。如图:

12.CRM 2011 中的早期绑定 和晚期绑定 怎么理解?

  早期绑定 指实体类型直接由类确定。
  晚期绑定 指实体类型到实例化时通过参数确定。
  或强类型与弱类型的理解。 

早期和晚期绑定之间的关键区别涉及类型转换。早期绑定提供所有类型的编译时检查,以便不会发生隐式转换,而晚期绑定仅在创建对象或对类型执行操作时检查类型。Entity 类需要明确指定类型以防止隐式转换。

使用早期绑定实体类的优点是在编译时检查所有类型引用。已编译的可执行文件包含调用类型的属性、方法和事件所需的代码。

  目前我们主要使用晚期绑定,和PLUGIN没关系,体现在实体,也就是数据上。

  客户在系统里是一个实体,一条实体记录就是一条数据。
  早期绑定,晚期绑定指的是实体类的实现方式。实体类是干什么的?就是保存实体数据的

13.CRM中的元数据?

元数据是数据的定义。一个实体有哪些字段,哪个字段是主属性,哪个字段是ID,哪个字段什么类型,实体有什么关系等,这些定义就是元数据。

14.plugin 的异步和同步?

原则:能用同步的就不要用异步。

同步就是立即执行 异步就是不立即执行。
如果不是实时验证就用异步,大多时候是同步的。

如果我们要同步一个表单的状态给另外一个表单 那么就可以设置为异步
因为同步的是需要占用资源的,异步可以排队的执行,这样就可以节省很多资源了。

同步也是排队的 根据注册插件的顺序。

二、基本问题:

1. explain in details about the event execution pipeline.
事件执行管道可以通过同步或异步方式处理事件。
平台核心操作和为同步执行注册的所有插件都会立即执行。为事件注册的同步插件按明确定义的顺序执行。
为异步执行注册的插件由异步队,列代理放入队列中并在稍后由异步服务执行。
具体可以看SDK。Request,Reponse 请求和响应,然后执行(Excute)

2. when do we register a plugin in child pipeline. give examples
CRM 2011中没有,不区分父管道和子管道,就是父管道。
CRM 4.0里面有,就是plugin中触发plugin,子管道。

3. What are images. Why are they used.
前期镜像,后期镜像,就是操作之前的值和操作之后的值。
比如执行Delete操作的时候,只能获取当前记录的ID,而不能获取当前实体的其他属性的值。用iamges就可以。

4. What is early binding and late binding. How is it used in CRM
早期绑定 指实体类型直接由类确定。
晚期绑定 指实体类型到实例化时通过参数确定。
目前我们主要使用晚期绑定,和PLUGIN没关系,体现在实体,也就是数据上。
客户在系统里是一个实体,一条实体记录就是一条数据。早期绑定,晚期绑定指的是实体类的实现方式,实体类是保存实体数据的

5.How do you debug a plugin
利用Plugin注册工具 参考:Microsoft Dynamics CRM 2011 Plugin 插件开发和调试

6. What is PrinciplalObjectAccess table, why is it used.
主要对象访问,设计到权限,配置权限。

7. What is the use of stringmap(字符串映射) table.
字符串映射就是实体的选项集(OptionSetVaue),每个int类型会对应一个字符串(中文)
比如:状态,草稿(10000),已提交(10001),已审批(10002)
1).select case pd.new_status when 10000 then '草稿' when 10001 then '已提交' when 10002 then '已审批' end as状态 
from new_test as pd
2).select (select Value from stringmap S where attributename='new_status' 
and objecttypecode =(select objecttypecode from metadataschema.entity 
where logicalname='new_test')
and langid='2052' and AttributeValue=pd.new_status) as 状态
from new_test as pd

8.How do you set a recurrening activity in CRM
可以通过新建实体,下面勾选定义为活动实体。

9. when can infinite loop occur in a plugin. How do you avoid infinite loops in plugin code.
发生在一个插件时,可以无限循环。如何避免在插件代码无限循环。
1).自己尽量写好,可以使用preOperate和验证前,localContext.PluginExecutionContext.InputParameters["Target"]= target_entity;
2).注册plugin的时候,选择你要触发的具体哪个字段(Filtering),一般很多人这里都全选了,最好不要这样。

10. How do you avoid sql deadlock.
可以再sql的查询语句中加,with nolock.数据库要设计好。尽量避免使用触发器,用plugin处理。

11. How many types of relationships are available in crm
4种(1:n,m:n,n:1,自引用)

12. What is the difference when the ownership is user vs organizaion for a custom entity.
用户或团队和组织,一般用web服务创建一个记录,用户为8,给这个用户有权限只有这个用户才可以看,团队为9,给这个团队附加权限,该团队下的所有用户都可以看到。a.用户 按用户区分权限,比如控制A的东西不能让用户B看到。
b.组织 按组织区分权限,要么可以看到,要么不可以看到,不区分用户,只按角色区分。
用户和团队:角色权限有:空心圆(无权限)、1/4分圆(用户级别),1/2分圆(部门级别)、3/4分圆(上下级部门:只能看本级和下级,不能看上级) 全心圆(组织级别)。
组织:角色权限有空心圆(无权限)和全心圆(组织级别)。
像客户实体,是按用户级别,我的客户可以不让你看到。
像省份、城市之类的基础数据,一般按组织级别,把一个省份分给一个用户是没有意义的。
这个建实体时要想好,因为实体建完之后不可以改这个属性的。

13. what are filtered views?
筛选视图,一般在reporting service中,有select * from A as CRMAF_FilteredA,考虑到权限的问题,就需要加Filtered

14. if you delete a record from UI, what happens in database. can you bring the record back?
在数据库中会执行deleg from A where AId='{11}',删除操作,删除了,不能bring the record bakck。

15. what is deletion service? can you change its schedule(运行)?
就是一个deleteRequest,deleteReponse,传递给 Execute 方法,不能。

三、CRM必备知识:

1.你如何对CRM的数据库进行优化? 

答:建索引,优化SQL语句,通过SQL Server Profiler来调试。

2.怎么做报表开发?报表开发工具有哪些?SSIS、SSRS是什么?

答:1) CRM的报表一般是.rdl,也就是sql reporting service 报表。可以参考: 【Reporting Services 报表开发】— 总结

2) 利用Visual Studio或ReportBuilder3工具,比如安装SQL Server 200 R2之后,有对应的Visual Studio 2008。

3) SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案(包括数据仓库的提取、转换和加载 (ETL) 包)的平台。

SSRS是Microsoft SQL Server Reporting Services (SSRS),是一个实用的开发、发布报表的工具。这个用的

3.如何时在CRM中嵌入web页面,如Asp.net。

将写好的.aspx文件,放在CRM安装目录的ISV文件下,然后IFrame嵌入。

4.如何限制视图的记录数?如何让视图记录条数不显示? 参考:MSCRM 2011 修改显示记录数

1)这个记录数是指 lookup 弹出来是视图的记录以及Homepage页面的记录

a.每页的记录数。

use 组织名_MSCRM

update UserSettings
  set PagingLimit = 60 --默认为50

b.数据库修改的是一共可以查询的记录数(针对全局的显示记录数最大值设置),

MSCRM_Config数据库中表名为DeploymentProperties的系统级的参数设定表,找到ColumnName为PagingLimt的记录,修改IntColumn的值,修改完成后重启IIS(iisreset)生效.如下:

use MSCRM_CONFIG

update DeploymentProperties
set IntColumn = 600 --默认为500
where ColumnName='PagingLimit'

2)不显示记录数是用第三方。

5.银行账号的部分显示(即 **** **** **** 9331)如何做?

1).可以在crm的客户实体上新建两个字段银行账号(new_bankaccount),文本型,和账号(new_account),通过配置new_bankaccount的字段安全性配置可以达到这样的效果,然后拼接new_bankaccount和account字符串。

具体如下图:

a.设置->管理->字段安全性配置文件

b.字段安全性配置

下面的用户必须不是拥有系统管理员权限的用户,比如为ang。

配置读取为否

然后以ang登陆,查询查看客户记录,发现银行账号都为......和(****差不多),然后拼接两个字段,就达到效果了。

2).可以用插件监控实体的Retrieve,对OutputParameter进行修改。具体怎么做,我还不知道。

retrieve的plugin很影响性能 每次打开都得触发 我们不到万不得已都避免用。

6.怎么按角色显示不同的窗体?

权限配置。
7.用户权限等级有哪些?团队与用户有什么区别,如何应用?

1) 用户权限等级有空心圆(无权限)、1/4分圆(用户级别),1/2分圆(部门级别)、3/4分圆(上下级部门:只能看本级和下级,不能看上级) 全心圆(组织级别)。

用户或团队和组织,一般用web服务创建一个记录,用户为8,给这个用户有权限只有这个用户才可以看,团队为9,给这个团队附加权限,该团队下的所有用户都可以看到。

a.用户 按用户区分权限,比如控制A的东西不能让用户B看到。
  b.组织 按组织区分权限,要么可以看到,要么不可以看到,不区分用户,只按角色区分。
  用户和团队:角色权限有:空心圆(无权限)、1/4分圆(用户级别),1/2分圆(部门级别)、3/4分圆(上下级部门:只能看本级和下级,不能看上级) 全心圆(组织级别)。
  组织:角色权限有空心圆(无权限)和全心圆(组织级别)。
  像客户实体,是按用户级别,我的客户可以不让你看到。
  像省份、城市之类的基础数据,一般按组织级别,把一个省份分给一个用户是没有意义的。
  这个建实体时要想好,因为实体建完之后不可以改这个属性的。

8.说说对PreEntityImages,PostEntityImages、InputParameters、OutputParameters的了解,平时如何使用?

1) PreEntityImages  前期实体镜像集合

private readonly string preImageAlias = "image";

Entity preImageEntity = (context.PreEntityImages != null && context.PreEntityImages.Contains(this.preImageAlias)) ?                context.PreEntityImages[this.preImageAlias] : null;

2) PostEntityImages 后期实体镜集合

private readonly string postImageAlias = "PostImage";

Entity postImageEntity = (context.PostEntityImages != null && context.PostEntityImages.Contains(this.postImageAlias)) ? context.PostEntityImages[this.postImageAlias] : null;

3) InputParameters  输入参数集合

Entity targetEntity = localContext.PluginExecutionContext.InputParameters["Target"] as Entity;

4) OutputParameters 输出参数集合

可以用插件监控RetrieveMultiple,和监控Create、Update一样的

EntityCollection conn = localContext.PluginExecutionContext.OutputParameters["BusinessEntityCollection"] as EntityCollection;
       string message = Parentcontext.MessageName;
       if (Parentcontext.PrimaryEntityName == "实体名")

比如执行Delete操作的时候,只能获取当前记录的ID,而不能获取当前实体的其他属性的值。用镜像就可以取到属性的值。

9.CRM的JS API中Xrm.Page.context、Xrm.Page.data.entity、Xrm.Page.ui、Xrm.Utility分别用于哪些开发?

1) Xrm.Page.context

2) Xrm.Page.data.entity

用的最多的就是

获取当前记录的GUID:   Xrm.Page.data.entity.getId();

获取当前记录的实体名:Xrm.Page.data.entity.getEntityName();

3) Xrm.Page.ui

用的最多的是Xrm.Page.ui.getFormType()  获取当前表单的操作类型。比如:create,update

4)Xrm.Utility


10.前期绑定和晚期绑定的区别是什么?

答:早期绑定 指实体类型直接由类确定。
         晚期绑定 指实体类型到实例化时通过参数确定。
         目前我们主要使用晚期绑定,和PLUGIN没关系,体现在实体,也就是数据上。
         客户在系统里是一个实体,一条实体记录就是一条数据。早期绑定,晚期绑定指的是实体类的实现方式,实体类是保存实体数据的。

11.自定义工作流如何开发?和Plugin类似,基本一致。
12.Plugin调试有哪些方式?参考:Microsoft Dynamics CRM 2011 Plugin 插件开发和调试

13.解决方案(Solution)托管和非托管的区别?

托管的是可以修改的,非托管的是不可修改的。

二者的区别体现在再次部署,导入后的行为上面。参考:MS CRM2011中的解决方案—托管与非托管

托管的可以修改非托管的 意思:解决方案为托管状态的时候,可以修改方案下非托管的实体。

14.高级查找将数据导成XML,查询FetchXml。

这个直接使用高级查找,查询之后,导出来。

15.Plugin各执行阶段的差异?前期验证是否一定在事务外?

1) 

2) 否


16.一般你是否会将配置保存在web.config中?你如何保存平时开发中使用的各种配置?

会的,比如需要使用一些连接CRM数据库的字符串,组织服务。

可以通过xml获取它的值。

比如:修改域用户密码,自定义页面的开发。

17.解决方案导入后如何撤消它?

托管的解决方案是可以,非托管的解决方案是不可以的。

18.Filtered视图和视图的区别?Filtered视图的弊端?

筛选视图,一般在reporting service中,有select * from A as CRMAF_FilteredA,考虑到权限的问题,就需要加Filtered。

视图就是CRM中的实体英文名,在CRM2011中,它是由Base表和ExtensionBase表组成的。

区别就是有权限设置。

弊端就是查询Filtered视图效率很慢。

四、这都是CRM开发必须要知道的知识,如有不正确的地方,希望各位大侠指出来,谢谢。

Microsoft Dynamics CRM2011 必备知识点的更多相关文章

  1. Microsoft Dynamics CRM2011 导入解决方案时,失败的原因小结

    将大的自定义文件导入到 Microsoft Dynamics CRM 时发生超时? 如图: 首先: a.首先需要确认两面的CRM 环境是一致,比如都是Roll up 11等. b.然后确认导出解决方案 ...

  2. Microsoft Dynamics CRM2011 Javascript

    一.CRM2011 Javascript  禁用子网格 // Disable a subgrid on a form function disableSubgrid(subgridName) {    ...

  3. Microsoft Dynamics CRM2011 更换Logo

    之前操作过但没做过记录,这里记录下以防以后有需要时记不起来还有迹可循 IE收藏栏的图标,在网站根目录下的的/favicon.ico CRM网页中的Logo,替换/_imgs/crmmastheadlo ...

  4. 一、Microsoft Dynamics CRM 4.0 SDK概述

    Chapter 1. Microsoft Dynamics CRM 4.0 SDK Overview(SDK概述) You are probably reading this book because ...

  5. Microsoft Dynamics CRM 2011 相关-摘自网络

    Microsoft Dynamics CRM Server 2011硬件需求: 组件 *最低要求 *推荐配置 处理器 x64 体系结构或兼容的双核 1.5 GHz 处理器 四核 x64 体系结构 2 ...

  6. Microsoft Dynamics CRM 2011 安装完全教程

    作者:卞功鑫,转载请保留.http://www.cnblogs.com/BinBinGo/p/4302612.html 环境介绍 WINDOWS 2008 R2 Datacenter Microsof ...

  7. Session for SSRS Report of Microsoft Dynamics AX

    Session for SSRS Report of Microsoft Dynamics AX 版权声明:本文为博主原创文章,未经博主允许不得转载. Contract •A data contrac ...

  8. Introduction to Microsoft Dynamics 365 licensing

    Microsoft Dynamics 365 will be released on November 1. In preparation for that, Scott Guthrie hosted ...

  9. Microsoft Dynamics CRM 分销行业解决方案

    Microsoft Dynamics CRM 分销行业解决方案 方案亮点 360度动态渠道信息管理 充分的客户细分 全面的业务代表考核指标 业务代表管理和能力建设 业务代表过程管理 业务代表费用管理 ...

随机推荐

  1. 【转】 golang slice array

    1. array   同一类型数据的集合     var arr [n]type    //声明type类型一维数组     var arr [m][n]type //声明type类型二维数组     ...

  2. python发布文件(windows)

    怎样发布文件 首先发布本地文件有一个好的用处,就是省去了朋友同import的时候还要使用sys.path,省的自己出错 1.新建文件夹d:\ tool 在的d:\tool文件夹中建立login.py ...

  3. 分布式消息队列kafka系列介绍 — 核心API介绍及实例

    原文地址:http://www.inter12.org/archives/834 一 PRODUCER的API 1.Producer的创建,依赖于ProducerConfig public Produ ...

  4. 多个Tomcat同时运行环境配置 - imsoft.cnblogs

    解压下载好的Tomcat压缩包,两次.此例中分别命名为tomcat和tomcat2. 1. 在MyEclipse中配置好第一个Tomcat环境,可以正常运行项目后. 2. 再配置tomcat2这个项目 ...

  5. C# Form 非法字符

    头部加上 EnableEventValidation="false" ValidateRequest="false"

  6. Map/Reduce的类体系架构

    Map/Reduce的类体系架构 Map/Reduce案例解析: 先以简单的WordCount例程, 来讲解如何去描述Map/Reduce任务. public static void main(Str ...

  7. Apache CXF 101 Win Eclipse开发环境搭建

    前言 博客草稿中“SOA生态系统初探”一文一直没有进展,感觉要将SOA.Web Service(WS).REST等概念阐述清楚还需要一些酝酿. 顶天须得立地,这里记录一些“下里巴人”的实践,主要考察A ...

  8. 增加mvc:resources后访问不了注解配置的controller的问题

    刚开始没有配置mvc:resourcescontroller能够正确访问,但是由于web.xml使用/拦截了所有的请求,所以静态资源访问不上增加mvc:resources之后,静态资源是能访问上了,但 ...

  9. leetcode 127. Word Ladder ----- java

    Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t ...

  10. JSBinding + SharpKit / 生成JavaScript绑定

    将 UnityEngine 的代码导出到 JavaScript.就可以在 JavaScript 中使用 Unity 的功能. 如何导出? 将需要导出的类添加到 JSBindingSetting.cla ...