Шаг 8 (необязательно). Определение ленты и действий (Ribbon.xml)
После добавления макета области задач в промежуточное декларативное решение Outlook можно также добавить определение файла настраиваемой ленты. В файле ленты определяются действия, вызываемые с ленты.
Дата последнего изменения: 22 августа 2011 г.
Применимо к: SharePoint Server 2010
Например, во многих решениях на ленте представлена кнопка для открытия области задач. Поведение при открытии области задач определяется действием. В файле ленты применяется стандартная схема ленты, используемая всеми приложениями Microsoft Office.
Действия в Business Connectivity Services могут основываться на URL-адресах и коде. При выполнении действии на основе URL-адресов осуществляется переход по заданному URL-адресу (например, при нажатии ленты кнопки). Действия на основе URL-адресов могут определяться декларативно в файле Ribbon.xml. Действия на основе кода обеспечивают выполнение кода при нажатии кнопки на ленте и должны создаваться разработчиком до того, как будут использоваться.
В статье Пример кода: декларативное решение для Outlook AdventureWorks2008 пример содержит настраиваемое меню ленты Менеджер по продажам Contoso. При открытии меню Менеджер по продажам Contoso на ленте отображаются следующие две кнопки:
Связанные заказы При нажатии этой кнопки отображается область задач с журналом заказов.
Поиск телефона При нажатии этой кнопки в окне браузера открывается страница поиска телефона MSN, и выполняется поиск номера телефона.
Создание файла ленты
Можно использовать средство создания артефактов BCS (Возможно, на английском языке) для создания файла манифеста области формы на основе модели подключения к бизнес-данным.
Кроме того, манифест области формы можно создать вручную следующим образом.
Найдите файл, указанный в Шаблон: Ribbon.xml, входящий в состав пакета SDK, скопируйте его и сохраните в папку Solution Artifacts под именем OutlookContactRibbon.xml.
Откройте файл OutlookContactRibbon.xml для редактирования в редакторе XML. При открытии XML-файла в Visual Studio присоедините схему ленты Office (Справочник Office 2010: схема XML пользовательского интерфейса Office Fluent (Возможно, на английском языке)). Это позволяет использовать функции IntelliSense для создания допустимых записей.
Замените значения, отмеченные EnterX в XML-коде, на допустимые значения. В следующем примере XML-кода показано, как они могут выглядеть после редактирования.
<customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad" loadImage="GetImage"> <ribbon> <tabs> <tab id="tabID" label="Contoso Sales Manager" getVisible="GetVisible" tag="Solution"> <group id="CustomerSalesGroupID" label="Customer Sales" getVisible="GetVisible" tag="Context[OutlookContactCustomer.CustomerSalesGroupID]"> <button id="relatedOrderHeaderButton" size="large" label="Customer Orders" onAction="OnAction" image="Arrow.jpg" getEnabled ="GetEnabled" tag="Action[OutlookContactCustomer.RelatedOrderHeaderAction]" /> </group> <group id="CustomerActionsGroupID" label="Customer Actions" getVisible="GetVisible" tag="Context[OutlookContactCustomer.CustomerActionsGroupID]"> <button id="SearchCustomerByPhoneButton" size="large" label="Phone Lookup" onAction="OnAction" image="MagGlass.png" getEnabled ="GetEnabled" tag="Action[OutlookContactCustomer.SearchCustomerByPhoneAction]" /> </group> </tab> </tabs> </ribbon> </customUI>
Сохраните и закройте файл.
Откройте файл Oir.config для редактирования. Обновите файл Oir.config, указав в нем файл ленты для загрузки и добавив атрибут RibbonFileName, как показано в следующем примере.
<ContextDefinitionGroup xsl:type="Declarative:DeclarativeContextDefinitionGroup" ItemType="OutlookContact" RibbonFileName="OutlookContactRibbon.xml">
Добавьте атрибут ContextDefinitionGroup для связи типа "Заказ", чтобы определить способ получения внешних элементов заказа, как показано в следующем примере. Это необязательный шаг, который выполняется только в тех случаях, когда требуется выводить действия в части полнофункционального списка.
<ContextDefinitionGroup ItemType="EntityView"> <!-- The content type has to be in the format: --> <!-- length_of_entity_namespace="" length_of_entity_name="" length_of_view_name="" entity_namespace="" entity_name="" view_name="" position_of_entity_namespace="" --> <ContextDefinition ContentType="12 12 24 AWWSExample OrderHeader GetSalesOrderHeaderById 9" xsl:type="Declarative:DeclarativeContextDefinition"> <Entities> <Entity Name="OrderHeader" EntityTypeName="OrderHeader" EntityTypeNamespace="AWWSExample"> <View Name="PrimaryEntityNameInContext" ViewName="GetSalesOrderHeaderById" Description="GetSalesOrderHeaderById" IsPrimary="true" /> </Entity> </Entities> <Declarative:Layouts> <Declarative:Layout Name="Edit" LayoutFileName="EditOrderHeader"> <Declarative:Properties> <Declarative:Property Name="AssociatedActionType" Value="Edit" /> </Declarative:Properties> </Declarative:Layout> </Declarative:Layouts> <Declarative:Actions> <Declarative:CodeMethodAction MethodType="EditEntity" Name="Edit" Caption="Edit Order" DisplayLocations="ItemContextMenu" DisplayOrder="2" Scope="ItemContext" /> </Declarative:Actions> </ContextDefinition> </ContextDefinitionGroup>
Обновите файл Oir.config, указав в нем для клиентской среды BCS сведения о требуемых кнопках ленты и связанных с ними действиях для атрибута Customer ContextDefinition. Добавьте следующий код ниже тега <Declarative:Layouts> в элементе Customer ContextDefinition.
<Declarative:Actions> <Declarative:CodeMethodAction Name ="RelatedOrderHeaderAction" MethodType ="ShowTaskpaneLayout"> <Declarative:Parameters> <Declarative:ConstantParameter Name="Para1" Value="RelatedOrderHeader" ValueType="System.String"/> </Declarative:Parameters> </Declarative:CodeMethodAction> <Declarative:UrlAction Name="SearchCustomerByPhoneAction" Url="http://msn.whitepages.com/search/ReversePhone?full_phone={0}"> <Declarative:Parameters> <Declarative:ExpressionParameter Name="Para1" EntityViewInstanceReference="PrimaryEntityNameInContext" Expression="Phone"/> </Declarative:Parameters> </Declarative:UrlAction> </Declarative:Actions> <Declarative:ContextEventHandlers> <Declarative:ContextActivated ActionName="RelatedOrderHeaderAction" /> </Declarative:ContextEventHandlers>
Сохраните и закройте файл.
Упакуйте и разверните решение, после чего протестируйте его на исправность.
Промежуточное декларативное решение Outlook успешно создано.