SharePoint 2010: 使用BCS构建解决方案
一般来讲,使用BCS构建的解决方案分为3种类型:
- 使用BCS开箱功能的简单解决方案
- 中级声明式解决方案
- 基于代码的高级解决方案
前2种解决法案不需要编写代码,但它们可以复用开发人员发布的基于代码的组件。这非常重要,因为有2个原因:
- 可以极大的扩大能够构建这类解决方案的用户群体,从而解放开发人员和IT组织,让他们把资源专注于解决其它问题。并且,
- 中央IT管理部门可以控制这类解决方案的功能,减少IT管理复杂度和负效应,更加方便把这类解决方案"转变"为受中央IT支持的应用,并且扩大使用范围(因为这类解决方案是使用标准的功能集和工具创建的)。
高级解决方案是完全基于代码,使用Visual Studio进行代码开发,然后发布其中可复用的组件或者整个端到端的解决方案。
简单解决方案——使用BCS开箱即用的功能
在SharePoint Foundation 2010中,我们可以使用将外部数据暴露到外部数据列表,或者利用Business Data Web Part或者Chart Web Part通过Web Part页面来展示外部数据。同时我们也可以为标准SharePoint列表或者文档库添加外部数据列。在Word中,外部数据列也可以被发布为QuickPart(也叫内容控件)。
使用Outlook 2010可以把SharePoint Server 2010(带企业客户端访问授权)外部数据列表离线同步下来,用户在Outlook里就可以和外部数据进行交互。用户看到的是和常规的Outlook项目完全一样格式的内容(如:联系人、会议、任务或者Post)。这类BCS解决方案使用内置的BCS Outlook Add-in(安装Office 2010时已经安装这个插件)运行。
也可以使用SharePoint Workspace 2010把SharePoint Server 2010(带企业客户端访问授权)外部数据列表离线同步下来,用户在SharePoint Workspace里就可以和外部数据进行交互。虽然BCS服务并没有提供扩展简单BCS解决方案的扩展编程模型,但我们可以将InfoPath表单和外部数据列表进行关联,这样我们就可以自定义在SharePoint和Workspace中展示外部数据的表单。
用户使用Outlook和Workspace时,可以直接和外部系统同步,默认每3小时同步一次,也可以执行立即同步。同时也可以检查外部数据列表的更新,如外部数据列表的结构、表单或者视图。
支持的工具
可以使用SharePoint Designer、Visual Studio或者任何一个XML编辑器创建外部内容类型,然后使用浏览器或者SharePoint Designer创建外部数据列表,接下来在SharePoint中点击一个按钮将外部数据连接到Outlook或者SharePoint Workspace。要创建显示外部数据的Web Part页或者外部数据列,我们可以用浏览器或SharePoint Designer。
中级声明式解决方案
最常见的中级解决方案是那些经过自定义的简单解决方案,这些自定义的简单解决方案一般来讲都添加了新的功能,如自定义的InfoPath表单、SharePoint工作流以及SharePoint Web Part页面。我们可以 修改用来显示外部数据的InfoPath表单的外观和体验,添加声明规则和业务逻辑,也可以添加后台代码。如果要添加后台代码,我们需要把InfoPath表单发布为需要管理员部署的表单。我们可以使用SharePoint Designer添加工作流,如:配置默认的SharePoint List Activity进行数据读取或写入,使用Visual Studio创建的自定义工作流(已发布到SharePoint)与外部数据列表或者BDC Runtime对象模型进行交互。最后,我们可以使用默认的Web Part(如:Business Data Item, List, Related List, Actions, Item Builder, Filter和Chart web part)创建一些Web Part页面,我们还可以在不同的Web Part间配置数据连接。Web Part的外观和体验可以通过编辑每个Web Part的XSLT文件进行定制(在Web Part的工具面板中)。
另外一种类型的中级解决方案是自定义Outlook 2010中的外部数据。比如:当用户打开一个业务联系人窗体时,在自定义任务面板中显示相关的订单信息。
以某Outlook项目为基础,我们可以自定义显示外部数据的文件夹的视图。在Outlook中打开文件夹,使用标准命令控件构建,然后保存新视图。BCS提供了将自定义视图保存到SharePoint的命令,可以将自定义视图保存为外部数据列表的一个子文件夹,这样未来只要用户将外部数据列表连接到Outlook,他们就可以看到这个视图。
其它对Outlook的定制相比中级自定义解决方案较为复杂,需要创建XML文件(如:BDC模型,Solution Manifest (OIR.Config),Subscription,Ribbon以及Layouts),并且使用BCS的SDK工具创建ClickOnce包。用户只需要安装ClickOnce安装包就可以把解决方案部署到Outlook。我们可以对这样的解决方案定义自定义的任务面板,使用External Data Parts (托管在任务面板里)显示外部数据。也可以定义Ribbon文件和自定义Action(暴露在Ribbon或者某个外部数据部件里)触发代码或者导向到另外一个URL。最后,我们还可以自定义BCS自动生成的Outlook表单,调整并且保存/导出这些文件。这类自定义使用了BCS服务富客户端Runtime(包括BCS Outlook插件),在运行时展示了XML文件定义的元素。
支持的工具
包括InfoPath Designer (设计表单)、SharePoint Designer (设计流程)、浏览器(设计SharePoint Web Part页面)以及Outlook(自定义表单和视图)在内的很多工具都可以用于构建中级BCS解决方案。
可以使用任意的XML编辑器创建Outlook声明式解决方案所需的XML文件,Visual Studio可以提供IntelliSense功能,这在创建XML文件时很有帮助。可以参考MSDN上的示例BCS Developer Documentation和SDK Resources。BCS服务提供了一个用户创建Outlook声明式解决方案ClickOnce安装包的SDK工具。
基于代码的高级解决方案
这类解决方案包括创建可复用的组件(如:用于统计和转化外部系统数据的.Net装配件连接器,自定义Web Part,自定义工作流Activity,有后台代码的InfoPath表单,基于代码的Action,以及Outlook声明式解决方案使用的外部数据部件,等),或者使用公共BCS服务对象模型的端到端的完整解决方案。
使用Visual Studio创建的基于代码的.Net Framework解决方案可以使用公共BCS服务对象模型的任何元素,实现用户和外部数据的充分交互。这类解决方案使用BDC对象模型注册为BDC服务,然后在SharePoint, Office 2010应用(如:Excel)或自己开发的应用中展示数据。BCS对象模型随SharePoint Foundation 2010和Office 2010一起安装。当这些应用和BDC服务处于连接状态时,数据直接从外部系统获取,也可以从BCS富客户端缓存进行本地获取(一般来讲,需要预先用SharePoint Workspace或者Outlook使外部数据列表离线)。这类解决方案可以用来将BCS扩展到默认不支持BCS的Office应用程序,如Excel或者PowerPoint。
对于端到端的解决方案,开发人员控制所有的用户界面,软件打包和部署。这类解决方案无法使用BCS服务富客户端运行时(富客户端运行时只能在简单和中级解决方案中用于将数据集成到Office应用程序)。
支持的工具
基于代码的解决方案需要使用Visual Studio 2010进行开发。VS 2010带有一个BDC项目类型的模板,方便.Net装配件连接器的创建。
总体来看,使用BCS可以构建各种各样的解决方案,从依赖开箱即用功能的简单解决方案到能够对SharePoint 2010和Office 2010进行自定义的中级解决方案,再到涉及代码编写的高级解决方案,如端到端解决方案或者可以在中级解决方案中使用的可复用的组件。