`
isiqi
  • 浏览: 16497126 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

MSDN Visual系列:在MOSS中创建一个BDC实体

阅读更多
业务数据目录--BDC(Business Data Catalog)是MOSS中新加的一个功能。它可以将LOB(Line-of-Business)数据组合到SharePoint的其他基本功能中。比如我们可以利用BDC组合业务数据到列表或企业搜索中。为此,我们必须先构建一个XML文件,用于标识数据存储的位置(MS SQL Server数据库或Web服务)以及数据是什么样子的(比如,数据类型是什么,主键是哪个)。
本文将通过创建一个BDC元数据文件定义一个简单的LOB数据实体。在此之前,需要具备下列的环境:
  1. 安装Microsoft SQL Server 2005并部署了AdventureWorks数据库
  2. 拷贝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的实体。

  1. 在 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>
  2. 定义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
    &gt;@minCustomerIDand
    customerID
    &lt;@maxCustomerID)
    </Property>
    <PropertyName="RdbCommandType"Type="System.String">Text</Property>
  3. 回到实体层次,定义属性和标识。用下面的XML替换Properties和Identifiers占位符元素。
    <Properties>
    <PropertyName="Title"Type="System.String">Name</Property>
    </Properties>
    <Identifiers>
    <IdentifierName="CustomerID"TypeName="System.Int32"/>
    </Identifiers>
  4. 定义方法参数。添加下面的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>
  5. 定义方法的实例。添加下面的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. 保存文件。

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用户筛选结果。

分享到:
评论

相关推荐

    2007开发系列课程(2):MOSS2007之开发概述

    这个开发系列课程的第二部分将深入探讨MOSS 2007的开发方面,帮助开发者理解和利用其强大的工具和API来构建自定义解决方案。 1. **基础架构**: MOSS 2007基于.NET Framework 3.0,支持ASP.NET、Windows Workflow ...

    Microsoft Office Sharepoint Server 2007开发系列课程(4):MOSS2007之EventHandler开发

    而在MOSS 2007中,一个EventHandler可以注册多个事件类型,这意味着同一个处理程序可以响应多种操作,减少了代码重复。 2. **异步事件处理**:MOSS 2007引入了异步事件处理,允许事件处理程序在不阻塞用户界面的...

    Microsoft Office Sharepoint Server 2007开发系列课程(1):MOSS2007之概述

    在这一系列课程中,我们将首先从宏观层面理解MOSS 2007的概述。SharePoint Server 2007是Office System的一个重要组成部分,它提供了强大的文档管理、工作流自动化、知识管理、网站创建和企业搜索等功能。这些功能...

    MOSS开发常用集锦

    "MOSS开发常用集锦"是一个关于Microsoft Office SharePoint Server (MOSS)开发的学习资源集合,主要针对SharePoint 2007平台。MOSS是微软提供的一个企业级内容管理和协作平台,它允许组织构建和管理网站、文档库、...

    MOSS中实现自动上传图片

    在Microsoft Office SharePoint Server (MOSS) 中,自动上传图片的功能是一项重要的协作工具,它能够极大地提升团队工作效率,尤其是在处理大量图像资源时。MOSS 提供了一个集成的平台,用于存储、管理和共享各种...

    moss中使用第三方邮箱解决方案

    描述中提到的“请大家多指教”,表明这是一个讨论性质的话题,可能是在寻求社区成员的建议或经验分享,关于如何在MOSS中配置和使用这些第三方邮件系统。 在实际操作中,集成第三方邮箱到MOSS通常涉及以下步骤: 1....

    MOSS2007最佳实战StepByStep系列课程(1):MOSS2007概览及其常见应用

    总的来说,MOSS 2007 提供了一个全面的协作平台,涵盖了企业中的多个工作领域。通过本系列课程的学习,你将掌握如何规划、部署和管理MOSS 2007环境,以满足组织的各种需求。无论是新手还是经验丰富的IT专业人员,都...

    Microsoft Office Sharepoint Server 2007开发系列课程(2):MOSS2007之开发概述

    在信息技术领域,Microsoft Office SharePoint Server 2007(简称MOSS 2007)是一个强大的企业级协作和内容管理平台。它提供了丰富的功能,如网站创建、文档管理和工作流程,为企业内部和外部的信息共享提供了便利。...

    MOSS 2007开发日记

    在开发过程中,搜索功能是一个重要的组成部分,因为它允许用户高效地查找和访问信息。以下是对"MOSS 2007开发日记"中可能涉及的关键知识点的详细解释: 1. **SharePoint架构**:理解MOSS 2007的基础架构至关重要,...

    MOSS中使用Ajax步骤详解和相关资料

    3. **服务器端处理**:在MOSS中,你可以创建一个ASP.NET Web服务(.asmx)或使用WCF服务,来处理这些Ajax请求。确保服务返回的数据格式与前端期望的相符,比如JSON或XML。 4. **客户端处理响应**:当Ajax请求成功...

    Microsoft Office Sharepoint Server 2007开发系列课程(3):MOSS2007之WebPart开发

    在本课程中,我们将深入探讨Microsoft Office SharePoint Server (MOSS) 2007的WebPart开发,这是MOSS2007开发系列课程的第三部分。WebPart是SharePoint平台的核心组件之一,它们提供了构建高度自定义和交互式用户...

    MOSS2007之开发概述

    MOSS2007作为SharePoint技术的一个重要版本,提供了丰富的开发接口和工具,为开发者提供了强大的自定义和扩展能力。 本课程的目标是为开发者提供MOSS2007开发的概览,包括开发环境的搭建、开发场景的介绍、WSS...

    MOSS 工作流部分

    在SharePoint平台中,MOSS(Microsoft Office SharePoint Server)是一个强大的企业级协作工具,其中的工作流(Workflow)功能是其核心特性之一。工作流是一种自动化业务过程的技术,它定义了一系列步骤,指导用户...

    Moss2007开发入门教程

    压缩包中的"SharePoint 2007教程.chm"是一个非常实用的学习资料,它可能包含了关于MOSS 2007的详细教程,涵盖上述所有主题。"MeetingRoomControl.sln"可能是一个示例项目,可以帮助你理解Webpart或Event Handler的...

    Moss2007下创建Form Authentication站点

    在MOSS 2007(Microsoft Office SharePoint Server 2007)中创建一个使用Form Authentication(表单验证)的站点,是为了提供一种非Windows集成身份验证的登录方式,适用于那些不依赖于Active Directory(AD)域服务...

    MOSS2007的定制

    在实际应用中,为了满足企业的个性化需求,MOSS 2007的定制成为了一个关键环节。本篇将深入探讨MOSS 2007的定制技术及其应用场景。 1. **页面布局与Web部件定制** - 页面布局:MOSS 2007支持自定义页面布局,开发...

Global site tag (gtag.js) - Google Analytics