业务数据目录--BDC(Business Data Catalog)是MOSS中新加的一个功能。它可以将LOB(Line-of-Business)数据组合到SharePoint的其他基本功能中。比如我们可以利用BDC组合业务数据到列表或企业搜索中。为此,我们必须先构建一个XML文件,用于标识数据存储的位置(MS SQL Server数据库或Web服务)以及数据是什么样子的(比如,数据类型是什么,主键是哪个)。
本文将通过创建一个BDC元数据文件定义一个简单的LOB数据实体。在此之前,需要具备下列的环境:
- 安装Microsoft SQL Server 2005并部署了AdventureWorks数据库
- 拷贝BDC架构文件, Bdcmetadata.xsd和Bdcmetadataresource.xsd, 到Visual Studio 2005的Schema库中。将上面的两个文件从program files\Microsoft Office Servers\12.0\Bin\ 拷到 program files\Microsoft Visual Studio 8\Xml\Schemas\。
下面开始构建BDC元数据文件来定义一个简单的LOB数据实体:
1. 首先,创建一个空的XML文件
打开Visual Studio 2005,创建一个 XML文件。右击文档,选属性。在架构(Schemas)属性框上,点省略号,把Bdcmetadata.xsd 架构文件附加到该文档上。
2.定义一个 LobSystem
添加下面的XML来定义最上层的LobSystem及其参数:
<LobSystem
Type="Database"
Version="1.0.0.01"
Name="CRM"
xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
</LobSystem>
3.定义最上层的安全性相关参数
注意:这是可选的,我们也可以在BDC的管理页面中进行操作。
添加下面的XML到LobSystem元素的末尾(在结束标记</LobSystem>之前)。注意,我们必须更新Principal属性值,以使其指向正确的域名和用户或组名。
<AccessControlList>
<AccessControlEntryPrincipal="yourdomain\you">
<RightBdcRight="Execute"/>
<RightBdcRight="Edit"/>
<RightBdcRight="SetPermissions"/>
<RightBdcRight="SelectableInClients"/>
</AccessControlEntry>
<AccessControlEntryPrincipal="yourdomain\yourBDCusers">
<RightBdcRight="Execute"/>
<RightBdcRight="SelectableInClients"/>
</AccessControlEntry>
</AccessControlList>
4.定义一个LOB系统的实例
对于数据库来说,一个系统实例定义了BDC中使用的数据库的连接参数。添加下面的XML,作为LobSystem元素的一个子节点(在AccessControlList元素后)。注意,我们必须用正确的服务器名替换server_name。
<LobSystemInstances>
<LobSystemInstanceName="CRMDB">
<Properties>
<PropertyName="AuthenticationMode"Type="System.String">
PassThrough</Property>
<PropertyName="DatabaseAccessProvider"Type="System.String">
SqlServer</Property>
<PropertyName="RdbConnectionDataSource"Type="System.String">
your_server_name</Property>
<PropertyName="RdbConnectionInitialCatalog"Type="System.String">
AdventureWorks</Property>
<PropertyName="RdbConnectionIntegratedSecurity"Type=
"System.String">SSPI</Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
使用pass-through方式作验证的缺点是操作系统只暴露用户名和密码。因此,如果一个公司使用双因素验证(即用户需要提供用户名,密码以外的其它特定的私有信息),我们就不能使用pass-through方式了。
如果不用考虑上面这些缺点,那么pass-through方式是我们在测试环境下的一个不错的选择。如果您的公司使用双因子验证,并且您还需要连BDC到一个SQL Server数据库,那么您可以使用SSO(Single Sign Sn),对此,这里就不做更深的介绍了。
5.定义一个实体---Customer
一个实体包括一个标题(定义在元素属性中),一个唯一标识(等同于主键),和一些方法(用于定义实体中的字段,并告诉BDC如何将实体数据从LOB系统中取出来)。下面的步骤定义了一个名为Customer的实体。
- 在 LobSystemInstances 元素后面为该实体添加XML核心代码。这里包括我们用来定义实体标题的占位符元素,统一标识和一个返回所有Customer的方法。
注意:一个方法包含一个Properties元素用于定义数据库查询(或Web服务方法),一个Properties 元素定义从查询返回的数据,和一个MethodInstances 元素,标识MOSS中的特定功能。
<Entities>
<EntityName="Customer">
<Properties>
<!--Propertiesgohere-->
</Properties>
<Identifiers>
<!--Identifiersgohere-->
</Identifiers>
<Methods>
<MethodName="GetCustomers">
<Properties>
<!--MethodPropertiesgohere-->
</Properties>
<Parameters>
<!--MethodParametersgohere-->
</Parameters>
<MethodInstances>
<!--MethodInstancesgohere-->
</MethodInstances>
</Method>
</Methods>
</Entity>
</Entities>
- 定义GetCustomers方法中的属性。对于数据库,我们的实体属性告诉BDC查询的内容和如何进行查询。为GetCustomers 方法添加下面的XML到Properties 元素内。注意,在我们的T-SQL语句中有一个WHERE子句,包含了参数minCustomerID 和maxCustomerID 的引用,我们必须提前定义出来。同时,还要注意避免出现大于和小于号。
这里我们不要按顺序写。先把注意力放到方法属性上,不要管更高一层的实体属性。因为这是我们定义查询的地方,它直接决定了实体其他部分的内容。
<PropertyName="RdbCommandText"Type="System.String">
SELECT
customerID,
LastName+','+FirstNameasName,
Phone,
EmailAddress
FROM
Sales.vIndividualCustomer
WHERE
(customerID>@minCustomerIDand
customerID<@maxCustomerID)
</Property>
<PropertyName="RdbCommandType"Type="System.String">Text</Property>
- 回到实体层次,定义属性和标识。用下面的XML替换Properties和Identifiers占位符元素。
<Properties>
<PropertyName="Title"Type="System.String">Name</Property>
</Properties>
<Identifiers>
<IdentifierName="CustomerID"TypeName="System.Int32"/>
</Identifiers>
- 定义方法参数。添加下面的XML到GetCustomers 方法的Parameters 元素中。这里定义了3个参数。头两个是输入参数,通过CustomerID过滤了列表。第三个参数定义了由SQL查询返回的数据。
所有这3个参数都包括了一个到前面我们创建的标识的引用。这个标识是实体的非常重要的一个部分。MOSS用它来查询一个特定的元素(因此标识被定义在输入参数中)。它同时还用于输出实体的各种附加功能中(比如应用于Business Data Action中)。没有标识,实体就会严重瘫痪。
返回参数通常比较复杂。它被定义为一个数据的记录集。这样就告诉了MOSS,将会有多个实体被返回。
<ParameterDirection="In"Name="@minCustomerID">
<TypeDescriptorTypeName="System.Int32"Name="customerID"IdentifierName="CustomerID">
<DefaultValues>
<DefaultValueMethodInstanceName="CustomerFinderInstance"Type="System.Int32">
0</DefaultValue>
<DefaultValueMethodInstanceName=
"CustomerSpecificFinderInstance"Type="System.Int32">
0</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<ParameterDirection="In"Name="@maxCustomerID">
<TypeDescriptorTypeName="System.Int32"Name="customerID"IdentifierName="CustomerID">
<DefaultValues>
<DefaultValueMethodInstanceName="CustomerFinderInstance"Type=
"System.Int32">9999999</DefaultValue>
<DefaultValueMethodInstanceName=
"CustomerSpecificFinderInstance"Type="System.Int32">
9999999</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<ParameterDirection="Return"Name="Customers">
<TypeDescriptorTypeName="System.Data.IDataReader,System.Data,Version=2.0.3600.0,
Culture=neutral,PublicKeyToken=b77a5c561934e089"IsCollection="true"
Name="CustomerDataReader">
<TypeDescriptors>
<TypeDescriptorTypeName="System.Data.IDataRecord,System.Data,
Version=2.0.3600.0,Culture=neutral,PublicKeyToken=
b77a5c561934e089"Name="CustomerDataRecord">
<TypeDescriptors>
<TypeDescriptorTypeName="System.Int32"IdentifierName=
"CustomerID"Name="customerID"/>
<TypeDescriptorTypeName="System.String"Name="Name"/>
<TypeDescriptorTypeName="System.String"Name="Phone"/>
<TypeDescriptorTypeName="System.String"Name="EmailAddress">
<LocalizedDisplayNames>
<LocalizedDisplayNameLCID="1033">EmailAddress
</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
- 定义方法的实例。添加下面的XML到MethodInstances 元素中。MOSS通过Finder 方法获取所有实体的已知实例。而且,MOSS通过finder方法来支持Business Data List WebPart。MOSS通过特定的Finder方法来获取查询特定方法实例的类型。搜索,业务数据操作,筛选,几乎所有其他的BDC功能都会用到该方法。
一个方法通常只支持0或1个方法的实例。在本例中,我们只有一个方法,可以返回所有的customers或单个customer。当您定义您的实体时,您会发现或许使用两个方法会更容易些,一个GetCustomers 方法和一个GetSingleCustomer 方法。我们在这里只是为了简化XML,所以写的比较简练。
<MethodInstance
Name="CustomerFinderInstance"
Type="Finder"
ReturnParameterName="Customers"
ReturnTypeDescriptorName="CustomerDataReader"/>
<MethodInstance
Name="CustomerSpecificFinderInstance"
Type="SpecificFinder"
ReturnParameterName="Customers"
ReturnTypeDescriptorName="CustomerDataReader"/>
- 保存文件。
6.将完成的元数据文件上传到SSP(Shared Service Provider)
打开管理中心,点左侧导航栏中的共享服务(通常名为SharedServices1)。在BDC一节中,点导入应用程序定义。点浏览,找到刚刚创建的元数据文件,双击。其他的应用程序定义项都用默认值就好,点导入。
7. 使用业务数据列表部件来显示Customer数据
在一个我们创建好的站点里,在页面中添加一个业务数据列表部件。 打开属性面板,在“类型”中输入Customer然后回车。MOSS会分析该属性,并得到Customer(CRMDB) 实体。 点确定,该实体就会显示在WebPart中了。
MOSS中的BDC功能允许我们将处于门户以外的LOB数据包括进来,用于列表和企业搜索。BDC需要一个XML元数据文件用于定义到外部数据源的连接参数、各种查询(或Web服务方法调用),以及用于查询或方法调用的所有的输入输出参数。定义一个元数据文件,关键是理解其结构。理解BDC的关键就是理解实体。实体包括:
属性,允许BDC开发人员在实体层次定义特定的元数据,比如默认的显示元素(Title)。
标识,LOB字段的集合,唯一标识该实体。
方法, 包括T-SQL或Web服务方法,用于获取实体数据。实体可以包括多个方法,可以随意包含参数和筛选,可供BDC用户筛选结果。
分享到:
相关推荐
在创建Silverlight应用程序来访问SharePoint列表数据的练习3中,文档指导了如何建立一个Silverlight应用程序项目,并编写相应的代码来获取SharePoint列表数据。文档还演示了如何将该Silverlight应用程序嵌入到...
总结,"SharePoint_VS2010源代码.rar"提供了一个实践性的起点,让初学者能够深入理解SharePoint的BDC功能,从而更有效地开发出连接外部系统并与之交互的SharePoint解决方案。通过研究这些示例,开发者不仅可以学习到...
在SharePoint中,每个实体都有一个唯一的ID,并且可以映射到特定的字段,如数据库的列。 3. **定义操作**: 操作定义了与实体相关的CRUD(创建、读取、更新、删除)动作。每个操作都关联了一个方法,方法定义了如何...
可以快捷的编辑sharepoint bdc文件
"BDC"通常代表“Business Data Connector”,这是一个在企业应用中用于集成不同数据源的技术,尤其在Microsoft SharePoint中常见。这个项目可能涉及到创建或定制一个连接器,以便从各种来源收集和管理客户数据。 ...
在开发方面,SharePoint 2007提供了一个强大的开发平台,支持多种开发工具,如Visual Studio和VSeWSS。开发者可以利用.NET Framework创建自定义Web部件、列表、字段类型,甚至复杂的解决方案。通过使用SharePoint ...
BDC部署 用于在 SharePoint 中创建 BDC 连接器的部署项目
接着,为了实现BDC,定义了一个标准的BDC表T_BDC,这是BDC过程的核心,它记录了屏幕字段的ID和相应的值,以便于模拟用户在GUI上的操作。在程序执行时,会将L_VBAK内部表中的数据填入到T_BDC中,然后通过BDC方法提交...
2.4.1 在WSS安装中创建第一个网站 24 2.4.2 创建第一个MOSS网站 24 2.5 配置网站 25 2.6 小结 26 第3章 使用网站和页面 27 3.1 设计网站结构 27 3.1.1 定义与网站有关的术语 28 3.1.2 规划顶级网站 28 3.1.3 定义...
这份压缩包包含了与《Microsoft SharePoint 2010 Building Solutions for SharePoint》一书相关的源代码,旨在帮助读者深入理解如何利用SharePoint 2010开发解决方案。通过分析这些代码,我们可以学习到以下关键知识...
1. 创建一个TXT文件,包含物料编号和描述信息。 2. 使用SHDB录制 modify material description 操作。 3. 使用ABAP Editor生成BDC程序。 4. 在BDC程序中,读取TXT文件,使用DO-ENDDO循环将数据填充到BDCData ...
包括Excel服务、Access服务以及如何在SharePoint中创建仪表板和管理应用程序。 知识点十三:资源和帮助 最后,作为一本高级教程,本书可能还会提供一些额外的资源和帮助章节,包括常见的问题解答、学习资源链接、...
- **架构与组成**:SharePoint 2007是Microsoft Office Server System的一个组成部分,提供了协作、文档管理、企业搜索和商业智能等功能。 - **版本**:包括三个主要版本——SharePoint Foundation 2007、SharePoint...
SharePoint 2010是微软公司推出的企业级内容管理和协同工作平台,它提供了一个统一的框架,允许用户创建网站、共享文档、管理业务流程,并进行协作。在本书中,作者将带你深入了解SharePoint 2010的核心特性,包括:...
标题"BDC.rar_bdc.youzack_com_单词_背单词"揭示了这是一个与英语学习相关的压缩文件,可能包含一个名为"BDC"的应用程序或工具,由youzack.com开发,专为帮助用户背诵单词设计。这个工具利用金山词霸的界面,使用户...
例如,为了修改物料主数据,我们可以创建一个内部表`BDCDATA`,其中包含`MATNR`(物料号)、`MAKTX`(描述)等字段。 2. **录制操作**: - 使用`SHDB`交易代码,开始录制(`Start Recording`),并选择需要执行的事务...
在SAP ABAP开发的学习过程中,BDC是一个非常重要的章节,它能够帮助开发者自动化处理数据传输,从而提高工作效率。 首先,我们来理解一下BDC的基本概念。BDC主要用于处理标准SAP事务代码的数据输入,通过预先定义好...
#### 一、开发人员在 Microsoft Office SharePoint Server 2007 中的新特性 在《SharePoint 2007 和 Office 开发:专家解决方案》一书中,作者们深入探讨了 Microsoft Office SharePoint Server 2007 为开发人员...