Paso 8 (opcional): definición de la cinta de opciones y las acciones (Ribbon.xml)
Ahora que ha agregado un diseño de panel de tareas a una solución intermedia declarativa de Outlook, también puede agregar una definición de archivo de cinta personalizada. Este archivo especifica las acciones a las que se llama desde la cinta de opciones.
Última modificación: lunes, 22 de agosto de 2011
Hace referencia a: SharePoint Server 2010
Por ejemplo, muchas soluciones tienen un botón en la cinta de opciones con el que se abre el panel de tareas. El comportamiento para abrir el panel de tareas sería una acción. El archivo de cinta usa el esquema de cinta de opciones estándar que usan todas las aplicaciones de Microsoft Office.
Las acciones de Servicios de conectividad empresarial pueden estar basadas en una dirección URL o en código. Las acciones basadas en dirección URL navegan a una dirección URL especificada cuando la acción se ejecuta (por ejemplo, cuando se hace clic en un botón de la cinta de opciones). Estas acciones se pueden definir de forma declarativa en el archivo Ribbon.xml. En cuanto a las acciones de código, ejecutan código cuando se hace clic en un botón de la cinta de opciones y las debe crear un desarrollador para que se puedan usar.
El Ejemplo de código: Solución declarativa de Outlook AdventureWorks2008 tiene un menú de cinta de opciones personalizado, Contoso Sales Manager. Al hacer clic enél, se muestran dos botones de la cinta de opciones:
Related Orders Al hacer clic en él, se muestra el panel de tareas con el historial de pedidos.
Phone Lookup Al hacer clic en él, se abre una ventana del explorador con la página de búsqueda de teléfonos de MSN y se busca el número de teléfono del cliente.
Para crear un archivo de cinta de opciones
Puede usar BCS Artifact Generator (generador de artefactos de BCS) para crear el archivo de manifiesto de área de formulario basado en el modelo BDC.
Como alternativa, puede crear el manifiesto del área de formulario de forma manual, como se indica a continuación.
Busque la Plantilla: Ribbon.xml que se proporciona en el SDK y cópiela. A continuación, guárdela en la carpeta Solution Artifacts como OutlookContactRibbon.xml.
Abra el archivo OutlookContactRibbon.xml para editarlo en un editor XML. Si va a abrir el archivo XML en Visual Studio, adjunte el esquema de cinta de opciones de Office (Referencia de Office 2010: esquema XML de interfaz de usuario de Office Fluent). De esta forma, dispondrá de la funcionalidad IntelliSense y podrá crear entradas válidas.
Reemplace los valores marcados con EnterX en el XML con valores válidos. El siguiente ejemplo de XML muestra el aspecto que podría tener después de la edición.
<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>
Guarde el archivo y, a continuación, ciérrelo.
Abra el archivo OIR.config para editarlo. Agregue el atributo RibbonFileName para actualizar OIR.config de forma que especifique el archivo de cinta de opciones que desea cargar, tal y como se muestra en el ejemplo siguiente.
<ContextDefinitionGroup xsl:type="Declarative:DeclarativeContextDefinitionGroup" ItemType="OutlookContact" RibbonFileName="OutlookContactRibbon.xml">
Agregue ContextDefinitionGroup para que la asociación de Order especifique cómo obtener los elementos externos de Order, como se muestra en el ejemplo siguiente. Este paso es opcional y solo es necesario si desea exponer las acciones en el elemento de lista enriquecida.
<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>
Actualice el archivo OIR.config para proporcionar al Tiempo de ejecución del cliente BCS la información sobre los botones de la cinta de opciones que desee y las acciones asociadas a ContextDefinition de Customer. Agregue el siguiente código debajo de la etiqueta <Declarative:Layouts> en ContextDefinition de Customer.
<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>
Guarde el archivo y, a continuación, ciérrelo.
Empaquete la solución, impleméntela y, a continuación, compruébela para asegurarse de que funciona según lo esperado.
Ya ha creado correctamente una solución intermedia declarativa de Outlook.