步骤 3:创建解决方案清单文件 (OIR.config)

解决方案清单文件 (OIR.config) 为主要文件,BCS 客户端运行时将其用于配置中间声明性 Outlook 解决方案。

上次修改时间: 2011年8月22日

适用范围: SharePoint Server 2010

在 OIR.config 文件中,您可以在 Outlook 声明性解决方案中描述与外部项目关联的用户界面 (UI)、行为和业务逻辑。例如,在解决方案清单文件中,可以为联系人 Outlook 项目类型进行类似指定,应使用特定 UI(例如外部数据部件),并且应调用外部系统中的特定方法(如 UpdateCustomerInstance(ID, NewInstanceValues) )来更新项目(如果其在 Outlook 中发生更改)。

解决方案清单文件从指定 Outlook 特定数据类型(主要外部内容类型映射至该数据类型)开始,例如联系人或任务。但作为集中控制文件,它不仅要定义到 Outlook 的实体映射,还要执行更多其他操作。它还要链接到其他 XML 文件,如布局文件,此文件用于定义任务窗格和功能区文件,并继而以声明方式定义任何解决方案所需的自定义功能区控件。它还指定要从功能区调用的任何动作。例如,许多解决方案在功能区上都有一个按钮,用于启动任务窗格。启动任务窗格的行为可称为一个动作

我们建议在开始时采用最少的设置创建基础解决方案清单文件。然后,在基础解决方案生效后,再对其进行扩展,使其包括动作和布局。在基础解决方案清单文件中,您可以执行以下操作:

  • 指定一般解决方案设置,例如解决方案的唯一标识符 (ID) 和显示名称。

  • 对于要显示在 Outlook 文件夹中的每种外部内容类型:

    • 定义应显示在 Outlook 中的外部内容类型的各字段以及应如何将它们映射至 Outlook 特有的字段。还可以指定非完全匹配的字段,尽管它们必须由 Outlook 可识别的 Outlook 特定数据类型(例如 Text、YesNo 或 DateTime)进行定义。这些自定义字段在创建后将显示在 Outlook 的窗体区域中。

    • 接受默认的窗体区域设置,以便 BCS 客户端运行时为您自动生成默认窗体区域。在基础解决方案生效后,您可以对其进行扩展,以包括自定义窗体区域。

    • 指定包含外部项目的 Outlook 文件夹的名称和其他详细信息。

先决条件

创建解决方案清单

您可以使用 BCS 项目生成器工具创建解决方案清单,也可以使用 SharePoint 2010 SDK 中提供的模板手动创建该清单。

使用 BCS 项目生成器工具创建解决方案清单文件

若要基于 BDC 模型创建解决方案清单文件,请下载然后运行 BCS 项目生成器工具。有关详细信息,请参阅 BCS 项目生成器工具(该链接可能指向英文页面)

使用解决方案清单模板创建解决方案清单文件

  1. 找到 SharePoint 2010 SDK 中提供的模板:解决方案清单 (Oir.config),复制后将其保存至Solution Artifacts文件夹,并命名为 OIR.config。

  2. 在 XML 编辑器中打开 OIR.config 进行编辑。如果是在 Visual Studio 中打开 XML 文件,请附加 OIR.config 声明性架构(SolutionManifestDefinitions.xsdSolutionManifestDeclarativeExtensions.xsd)。这会为您提供 IntelliSense 功能并有助于您创建有效的条目。请参阅 SolutionManifestDefinitions 架构SolutionManifestDeclarativeExtensions 架构文档以获取详细信息。

  3. 使用有效值替换 XML 中标有 EnterX 的值。下面的 XML 示例演示了文件在编辑后的外观。

    <?xml version="1.0" encoding="utf-8"?>
    <SolutionDefinition xmlns:Declarative="https://schemas.microsoft.com/office/2009/05/BusinessApplications/Manifest/DeclarativeExtensions" 
    
    xmlns="https://schemas.microsoft.com/office/2009/05/BusinessApplications/Manifest" xmlns:xsl="http://www.w3.org/2001/XMLSchema-instance">
      <SolutionSettings SolutionId="ContosoSalesManager" SolutionDisplayName="Contoso Sales Manager" SolutionVersion="1.0.0.0"/>
      <ContextDefinitionGroups>
        <ContextDefinitionGroup xsl:type="Declarative:DeclarativeContextDefinitionGroup" ItemType="OutlookContact" >
          <ContextDefinition xsl:type="Declarative:DeclarativeContextDefinition" ContentType="OutlookContactCustomer">
            <Entities>
              <Entity Name="Customer" EntityTypeName="Customer" EntityTypeNamespace="AWWSExample" Description="Customer">
                <View Name="PrimaryEntityNameInContext" ViewName="GetCustomerById" Description="GetCustomerById" IsPrimary="true">
                  <PromotedProperty Name="CustomerId" ViewInstancePath="CustomerId" OfficeItemPropertyName="CustomerId" ReadOnly="true" />
                  <PromotedProperty Name="Title" ViewInstancePath="Title" OfficeItemPropertyName="Title" ReadOnly="false" />
                  <PromotedProperty Name="FirstName" ViewInstancePath="FirstName" OfficeItemPropertyName="FirstName" ReadOnly="false" />
                  <PromotedProperty Name="MiddleName" ViewInstancePath="MiddleName" OfficeItemPropertyName="MiddleName" ReadOnly="false" />
                  <PromotedProperty Name="LastName" ViewInstancePath="LastName" OfficeItemPropertyName="LastName" ReadOnly="false" />
                  <PromotedProperty Name="Email1Address" ViewInstancePath="EmailAddress" OfficeItemPropertyName="Email1Address" ReadOnly="false" />
                  <PromotedProperty Name="BusinessTelephoneNumber" ViewInstancePath="Phone" OfficeItemPropertyName="BusinessTelephoneNumber" ReadOnly="false" />
                  <PromotedProperty Name="ModifiedDate" ViewInstancePath="ModifiedDate" OfficeItemPropertyName="ModifiedDate" ReadOnly="false" />
                </View>
              </Entity>
            </Entities>
            <OfficeItemCustomizations xsl:type="OutlookItemCustomizations" ItemTypeDisplayName="Contoso Customer" MessageClass="IPM.Contact.AWWSCustomer">
              <OfficeItemProperties>
                <OfficeItemProperty Name="CustomerId" PropertyName="CustomerId" PropertyType="OutlookInteger" />
                <OfficeItemProperty Name="Title" PropertyName="Title" PropertyType="OutlookText" />
                <OfficeItemProperty Name="FirstName" PropertyName="FirstName" PropertyType="OutlookText" />
                <OfficeItemProperty Name="MiddleName" PropertyName="MiddleName" PropertyType="OutlookText" />
                <OfficeItemProperty Name="LastName" PropertyName="LastName" PropertyType="OutlookText" />
                <OfficeItemProperty Name="Email1Address" PropertyName="Email1Address" PropertyType="OutlookText" />
                <OfficeItemProperty Name="BusinessTelephoneNumber" PropertyName="BusinessTelephoneNumber" PropertyType="OutlookText" />
                <OfficeItemProperty Name="ModifiedDate" PropertyName="ModifiedDate" PropertyType="OutlookDateTime" />
              </OfficeItemProperties>
              <FormRegions xsl:type="Declarative:DeclarativeFormRegions" AutoGenerate="true"></FormRegions>
              <OutlookFolder Name="ContosoCustomers" FolderDisplayName="Contoso Customers" NativeType="FolderContacts" SubscriptionName="AWWSExampleCustomerSubscription" FolderName="ContosoCustomerFolderID" CanCreate="true" CanUpdate="true" CanDelete="false">
                <Views />
                <Associations />
              </OutlookFolder>
            </OfficeItemCustomizations>
          </ContextDefinition>
        </ContextDefinitionGroup>
      </ContextDefinitionGroups>
    </SolutionDefinition>
    
  4. 保存并关闭该文件。

您已成功创建中间声明性 Outlook 解决方案所需的基础 OIR.config。

后续步骤

步骤 4:打包和部署声明性 Outlook 解决方案