Microsoft Dynamics CRM 2011中的扩展框架如下图所示。图中,标记为蓝色的、标记有齿轮的条块,均是其扩展点。下面进行介绍。
从下向上看,MS CRM系统分为三层,分别是存储层、应用层以及前端展现层。
在数据存储层中,包含有两部份信息,分别是元数据Metadata数据库以及业务数据Data数据库两部分。所谓元数据,就是本系列之前部分文章介绍的实体、属性、关联、表单、视图等部分的内容。系统基于定之后的元数据模型,可以生成业务数据存储以及业务逻辑处理和前端界面展现等信息。举例来讲,员工实体Employee,包含有姓名、性别、年龄等字段,那么,可以通过在实体编辑器中自定义一个实体与之相对应,而展现界面,可以通过表单编辑器来设定,这些信息会存储在Metadata数据库中。在使用中,系统会依据表单编辑器的设定信息,渲染出对应的表单,以方便End User进行录入、更新等操作,End User创建的员工张三,将会存储在Data数据库中。
应用层中,由下至上,包括有数据访问平台层Data Access Platform、数据访问组件层Data Access Components、业务实体组件层Business Entity Components、异步或同步业务逻辑层Synchronous and Asnynchronous Business Logic、安全管理模块Security以及工作流模块Workflow,而应用层通过web service的方式,向外部暴露其中包括的各种方法,从而便于系统的前端表单、其他系统的调用。而系统提供的扩展点,在应用层,包括有插件扩展以及自定义工作流活动扩展。即上图中的Pre-Event Plugins、Post-Event Plugins以及Custom Workflow三个条块中的内容。
所谓的插件Plugin,笔者建议,可以将其看作是有业务语意的触发器Trigger。在数据库中,触发器Trigger会基于对数据表的某些操作而被数据库调用、执行,可以是Before方式运行,也可以是Instead方式运行,可以触发的操作包括有Insert、Update以及Delete。而微软CRM系统中的插件,可以被触发的操作要更多一些,更加的贴近业务层面的操作,操作的类型包括有记录创建、记录更新、记录删除、记录分派、记录合并的状态等等操作。插件可以在前置执行,即Pre-Event插件,也可以后置执行,即Post-Event插件。同时,插件还可以是同步执行、或者也可以以异步形式运行。
MS CRM 2011使用了微软的工作流框架作为其工作流引擎,目前使用的是WF(Windows workflow foundation)的版本是4.0,故此,实施人员可以基于WF4.0的规范,开发自己的工作流活动,以扩展系统的功能,从而满足自己的业务需求。
在前端展现层,可以通过之前的一系列文章中的实体编辑器、表单编辑器、以及后续会介绍的web资源、脚本资源等模块完成表单的自定义与开发;使用表单编辑器中提供的IFrame等组件完成表单页面级别的集成;通过调用应用层公布的web service以完成后端的server到server的集成;还可以使用sql脚本来自定义开发报表、使用仪表板、图表、Excel,完成数据展现上面的扩展。