Preguntas más frecuentes: solución declarativa de Outlook

Última modificación: viernes, 16 de abril de 2010

Hace referencia a: SharePoint Server 2010

En este artículo
Tengo un escenario de solo lectura para la solución declarativa y las operaciones Create, Update y Delete no tienen mucho sentido. Sin embargo, el tipo de contenido externo es compatible con estas operaciones. ¿Puedo quitarlas del modelo BDC?
¿Cómo se actualiza la memoria caché en un código de acción?
¿Cuál es el formato de icono aceptable en las distintas ubicaciones? ¿Cuáles son los formatos de archivo aceptables y los tamaños esperados?
¿Cómo puedo obtener una vista personalizada para cargar solo para mi tipo de tarea? De manera predeterminada, parece que se restablece a la vista predeterminada.
¿Se puede reemplazar completamente el formulario predeterminado de Outlook con un formulario de InfoPath?
¿Se puede asociar código con la cinta de opciones en una solución declarativa de Outlook?
¿Se puede actualizar el publicador de la solución?
¿En una solución declarativa de Outlook, cómo puede una parte de datos externos personalizada de un diseño comunicarse con otros elementos del mismo diseño?

En este tema se responden algunas preguntas más frecuentes acerca de las soluciones declarativas intermedias de Outlook.

Tengo un escenario de solo lectura para la solución declarativa y las operaciones Create, Update y Delete no tienen mucho sentido. Sin embargo, el tipo de contenido externo es compatible con estas operaciones. ¿Puedo quitarlas del modelo BDC?

Sí, se pueden quitar del modelo BDC. Además, también puede cambiar la carpeta de Microsoft Outlook 2010 a solo lectura para una mejor experiencia de usuario. El siguiente es un ejemplo del archivo OIR.config que muestra cómo hacer que una carpeta sea de solo lectura.

<OutlookFolder StoreType="Solution" Name="GetBug" FolderDisplayName="Bugs Under PR" NativeType="FolderTasks"  SubscriptionName="816979bb-32c7-489b-861a-3f4b61ec2c9b" FolderName="816979bb-32c7-489b-861a-3f4b61ec2c9b" CanCreate="false" CanUpdate=" false " CanDelete="false">

¿Cómo se actualiza la memoria caché en un código de acción?

Vea el siguiente ejemplo de código para obtener información acerca de cómo desencadenar una actualización de caché en función de una determinada suscripción: Fragmento de código: Solicitud mediante programación de una actualización de caché a una aplicación cliente.

¿Cuál es el formato de icono aceptable en las distintas ubicaciones? ¿Cuáles son los formatos de archivo aceptables y los tamaños esperados?

Los requisitos para formatos de archivo de icono y tamaños esperados están determinados por el esquema de extensibilidad de la Cinta de Outlook.

  • Icono de nivel de carpeta: puede tener un formato de archivo .jpg, .bmp, .ico o .png. Debe tener 16 x 16 píxeles.

  • Icono de nivel de elemento: solo puede tener el formato de archivo .ico, pero puede tener cualquier tamaño.

  • Botón de la cinta de opciones: puede tener un formato de archivo .png, .jpg, .bmp o .ico. Puede tener cualquier tamaño.

¿Cómo puedo obtener una vista personalizada para cargar solo para mi tipo de tarea? De manera predeterminada, parece que se restablece a la vista predeterminada.

Especifique el nombre de la vista personalizada en el archivo OIR.config. En el ejemplo siguiente se muestra cómo hacerlo.

<OutlookFolder Name="ContosoCustomers" FolderDisplayName="Contoso Customers" ……….>
      <Views<FolderViewDefinition Name="ContosoCustomerViewName" ViewName="ContosoCustomerView" ViewType="TableView" IsDefault="true" ViewFileName="ContosoCustomerView.ovd" />
  </Views>

¿Se puede reemplazar completamente el formulario predeterminado de Outlook con un formulario de InfoPath?

Sí, se puede definir un DeclarativeFormRegion + Layout + Action para usar un diseño con un formulario de Microsoft InfoPath 2010 o un parte de datos externos para reemplazar el formulario de Outlook predeterminado.

Reemplazo del formulario de Outlook predeterminado con un formulario de InfoPath

  1. Defina un DeclarativeFormRegion.

    <FormRegions i:type="mx:DeclarativeFormRegions" >
      <mx:DeclarativeFormRegion  Type="Replacement" InternalName="CustomerReplaceFormRegion" ShowInspectorComposeMode="true" Name="CustomReplaceFormRegion" Title="MyCustomReplaceFormRegion"/>
    </FormRegions>
    
  2. Defina una acción.

    <CodeMethodAction MethodType="ShowRegionLayout" Name="ShowRegionLayoutAction">
      <Parameters>
        <ConstantParameter Name="Param1" ValueType="System.String" Value="IPLayout"/>
        <ConstantParameter Name="Param2" ValueType="System.String" Value=" ArtistReplaceFormRegion" />
      </Parameters>
    
  3. Desencadene la acción a cuando se abre el inspector.

      <mx:ContextEventHandlers>
        <mx:ContextActivated ActionName="ShowRegionLayoutAction"/>
      </mx:ContextEventHandlers>
    
  4. Defina un diseño.

      <Layouts xmlns="https://schemas.microsoft.com/office/2009/05/BusinessApplications/Manifest/DeclarativeExtensions">
        <Layout Name="IPLayout" LayoutFileName="IPLayout">
        </Layout>
      </Layouts>
    
  5. Cree un archivo de diseño para definir qué mostrar en el diseño.

¿Se puede asociar código con la cinta de opciones en una solución declarativa de Outlook?

Sí. Sin embargo, de manera predeterminada, en una solución declarativa, solo se puede vincular el código al evento OnClick, el evento que se desencadena cuando se hace clic en un botón de la cinta de opciones.

Para asociar código con el evento OnClick

  1. Defina la cinta de opciones como se muestra en el siguiente archivo Ribbon.xml de ejemplo.

    <customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad" loadImage="GetImage">
      <ribbon>
        <tabs>
          <tab id="tabIssueID" label="Team Review" getVisible="GetVisible" tag="Solution">
            <group id="IssueGroupID" label="Issue Actions" getVisible="GetVisible" tag="Context[TeamIssues.IssueGroupID]">
              <button id="AllIssueButton"
                          size="large"
                          label="All Issues"
                          onAction="OnAction"
                          image="Issue.ico"
                        getEnabled ="GetEnabled"
                        screentip="Display All Existing Issues in Task Pane"
                        tag="Action[TeamIssues.ListIssueAction]"
                      />
    
  2. Defina una acción en el archivo Oir.config.

    <mx:CodeMethodAction MethodType="Custom" Name ="OpenBugRibbonAction" MethodName="OpenBugMethod" QualifiedTypeName="CustomCodeActionNameSpace.CustomCodeActionClassName, CustomCodeActionAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3c6b236b1e85d97a">
      <mx:Parameters>
        <mx:ExpressionParameter Name="p1" EntityViewInstanceReference="PrimaryEntityNameInContext" Expression="BugID"/>
      </mx:Parameters>
    </mx:CodeMethodAction>
    
  3. Implemente una acción de código personalizado.

    using System;
    using System.Text;
    using Microsoft.Office.BusinessApplications.Runtime.OIM;
     
    namespace CustomCodeActionNameSpace
    {
       public class CustomCodeActionCalssName
       {
            public void CustomCodeActionMethod(params object[] parameters)
            {
                //BCS Client Runtime passes in the Current Entity Instance as First parameter by default.
                 IEntityInstance iei = parameters[0] as IEntityInstance;
     
                // Other parameters are passed in based on the configuration within oir.config.
                // Process the Action based on parameters.
            }
        }
    }
    

Nota

Si usa un administrador de cinta de opciones personalizado, la solución podrá escuchar eventos adicionales relacionados con la cinta de opciones.

¿Se puede actualizar el publicador de la solución?

El nombre del publicador proviene del certificado. La solución debe estar firmada con un certificado emitido por una entidad de certificación de confianza. Debido a la limitación de las herramientas de desarrollo de Office para Visual Studio (vea KB970682), el certificado de la entidad de certificación debe estar en el almacén de certificados de la entidad de certificación raíz de confianza del cliente.

¿En una solución declarativa de Outlook, cómo puede una parte de datos externos personalizada de un diseño comunicarse con otros elementos del mismo diseño?

Llame a this.Parent.Parent para obtener el diseño de la parte de datos externos y busque y compare todos los elementos secundarios de dicho diseño para encontrar el elemento deseado. El fragmento de código siguiente muestra cómo hacerlo.

WinFormsOBPartBase MyEDP;
ControlCollection allContainersUnderSameLayout = this.Parent.Parent.Controls;
foreach (Control container in allContainersUnderSameLayout)
{
    ControlCollection allEDPsUnderSameContainer = container.Controls;
    foreach (Control edp in allEDPsUnderSameContainer)
    {
        if (edp.Name == "MyEDPName")
        {
            MyEDP = edt as WinFormsOBPartBase;
            break;
        }
    }
}