Blog del CIIN

Blog del Centro de Innovación en Integración de Cantabria

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

Enlaces Recomendados

May 2012 - Artículos

Pa’ que nadie se aburra…disponibles para descarga Windows 8 RP, Windows Server 2012 RC y Visual Studio 2012 RC!

Pues eso, para que nadie se aburra y para aquellos que tienen tiempo ya tenemos disponible para descarga al menos para suscriptores MSDN tanto Windows 8 Release Preview (RP), como Windows Server 2012 Release Candiate (RC) y Visual Studio 2012 RC….subidón!

image

Publicado 31/5/2012 21:10 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010: ¿Como cambiar / ocultar la columna Título en mis tipos de contenido?

Cómo sabéis, en SharePoint todo tipo de contenido (CT) hereda de un tipo padre. En el caso de CTs de listas, normalmente el tipo de contenido padre definido en la raíz de la jerarquía es “Item” y es aquí dónde se define la famosa columna “Title” o “Título” que tenemos en cualquier lista personalizada. Una pregunta que me han hecho hace poco es como cambiar el nombre para mostrar de esa columna o incluso ocultarlo…la respuesta es qué depende de dónde lo hagamos,

  • Si lo hacemos a nivel de interfaz de usuario, como “Title” es una columna de sitio implicaría que un cambio de nombre afectaría a todo CT en el qué se esté usando por lo que la alternativa aquí pasa por ocultar la columna y no usarla en nuestros formularios.
  • Para ello, nos vamos a la definición del CT en la galería de tipos de contenido del sitio y en la página de detalle pulsamos sobre la columna “Title”. En la página que se abre, simplemente marcamos la columna como oculta y listo.
  • Probamos en una lista en la que usemos el tipo de contenido que el cambio es efectivo…aquí tenéis que tener cuidado, ya que si el tipo de contenido antes de los cambios se había usado (por ejemplo, se habían creado elementos de lista), posiblemente tengáis errores en su uso debido a que la actualización de los cambios en el tipo no se han propagado a las listas.
image image image
  • La segunda opción disponible pasaría por usar SharePoint Designer 2010 (SPD 2010) para realizar el mismo tipo de cambio que hemos realizado en la interfaz de usuario.
  • La tercera opción, y recomendable, es usar la aproximación declarativa para definir el tipo de contenido y configurar a la carta las columnas que forman parte del mismo…tanto las heredadas, como las que añadamos. Por suerte, con Visual Studio 11 Beta (VS 11 Beta), realizar estas configuraciones es bastante sencillo.
  • Si cambiamos el nombre en el diseñador de CTS de VS 11 Beta, se actualizará la correspondiente definición.
image image
  • De manera que antes del cambio, dicha definición es de la forma:
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   3:   <!-- Parent ContentType: Item (0x01) -->
   4:   <ContentType ID="0x0100F09DE7082513424993A7A91D901E1241" Name="SPO Sample CT" Group="Custom Content Types" Description="SPO Sample CT" Inherits="TRUE" Version="0">
   5:     <FieldRefs>
   6:       <FieldRef ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="$Resources:core,Title;" Required="TRUE" Name="LinkTitle" ReadOnly="TRUE" />
   7:       <FieldRef ID="{575daf36-dbae-46a9-a8c3-1d269004a85e}" DisplayName="SPO Site Column" Required="TRUE" Name="VS11SPOSiteColumnSample" />
   8:     </FieldRefs>
   9:   </ContentType>
  10: </Elements>
  • Y tras el cambio pasa a:
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   3:   <!-- Parent ContentType: Item (0x01) -->
   4:   <ContentType ID="0x0100F09DE7082513424993A7A91D901E1241" Name="SPO Sample CT" Group="Custom Content Types" Description="SPO Sample CT" Inherits="TRUE" Version="0">
   5:     <FieldRefs>
   6:       <FieldRef ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Otro nombre" Required="TRUE" Name="LinkTitle" ReadOnly="TRUE" />
   7:       <FieldRef ID="{575daf36-dbae-46a9-a8c3-1d269004a85e}" DisplayName="SPO Site Column" Required="TRUE" Name="VS11SPOSiteColumnSample" />
   8:     </FieldRefs>
   9:   </ContentType>
  10: </Elements>
  • Cómo veis, el cambio consiste en cambiar la propiedad DisplayName en el elemento <FieldRef que hace referencia a la la columna Title…la referencia se mantiene, pero el nombre para mostrar se ha cambiado.
  • Finalmente, la cuarta opción que tenemos para realizar cambios de este tipo es mediante el uso del modelo de objetos de SharePoint. En concreto, si usamos SPField podremos cambiar el nombre para mostrar a través de la propiedad Title de esta clase.

Publicado 30/5/2012 22:39 por Juan Carlos González Martín | 2 comment(s)

¡Seminarios y Eventos de junio en el CIIN, no te los pierdas…Windows 8 is coming ;-)!

Desde el Centro de Innovación en Integración (CIIN), seguimos trabajando para dar a conocer las nuevas tecnologías y las herramientas necesarias para trabajar con ellas. Por eso, para las próximas semanas hemos programado varias actividades que giran alrededor fundamentalmente en torno Windows Phone y Windows 8, y por supuesto en trono a SharePoint 2010, Office 365 y Windows Azure.

Por eso, para este mes de junio tenemos preparada una agenda con una serie de eventos que esperamos sean de tu interés comenzando con la participación en el roadshow de soluciones de negocio con SharePoint organizado por AvePoint, para a continuación seguir con dos jornadas sobre desarrollo para Windows Phone 7 en la que de la mano de José Antonio Gallego veremos desde como desarrollar una sencilla aplicación para el s.o móvil de Microsoft hasta como podemos portarla a la nueva versión de Windows que llegará tras el verano: Windows 8. Finalmente, no te puedes perder el primer evento para desarrolladores en Windows 8 en Cantabria que realizaremos la última semana de junio en colaboración con Rafael Serna (SDM Programas) y Josué Yeray (Plain Concepts)

Resumen de eventos:

Esperamos que estos seminarios y eventos sean de tu interés y te dejes caer por alguno de ellos.

logoCIIN_GIF_Comprimida

Publicado 30/5/2012 10:41 por Juan Carlos González Martín | con no comments

Archivado en: ,

SharePoint 2010: Soporte de virtualización!

Simplemente como referencia, y para aclarar dudas al respecto, si estás pensando en hacer un despliegue de SharePoint 2010 completamente virtualizado, que no os tiemblen las piernas porque SharePoint 2010 tiene pleno soporte para despliegues en los que se quiera virtualizar todos sus componentes incluyendo los servidores de base de datos. Podéis encontrar información relativa a este soporte en los siguientes enlaces:

SharePoint2010_thumb

Publicado 29/5/2012 21:53 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010 y Azure: Integración con el Windows Azure Data Market (III)!

Siguiendo con la serie de posts sobre la integración de SharePoint y el Windows Azure Data Market, vamos a cerrar el círculo y ver como otra posibilidad de integración pasa por crear vistas de datos usando SharePoint Designer 2010 (SPD 2010). Os recuerdo antes los artículos previos de la serie:

Lo interesante de esta aproximación es que nos permite integrar datos del Windows Azure Data Market tanto en SharePoint 2010 On-Premise como en SharePoint Online (SPO) en Office 365. Para crear una vista de datos a partir de una fuente disponible en el Windows Azure Data Market:

image image image
  • De esta forma automáticamente tenemos una primera vista de datos disponible en la página y el panel de origen de datos que usaremos a continuación para generar la vista como queremos escogiendo los campos de información necesarios.
  • Eliminamos la vista que añade SPD 2010, escogemos los campos que queremos que formen parte de la vista y los arrastraos a la zona de WebParts de la página.
  • En la cinta de configuración de la vista de datos, pulsamos sobre “Add/Remove Columns” para añadir nuevas columnas y/o ordenar las columnas existentes.
image image image
  • Guardamos los cambios y previsualizamos la vista en el explorador. Y listo.

image

Publicado 28/5/2012 21:25 por Juan Carlos González Martín | 2 comment(s)

SharePoint 2010: Como ocultar una acción de la Ribbon!

A raíz de una consulta relativa a si era posible ocultar una acción de la cinta usando un Security Trimmed Control me puse a explorar que posibilidades hay en SharePoint 2010 más allá de la aproximación declarativa que se comenta en este artículo. Otras posibilidades que tenemos pasan por hacerlo de forma programática a través de:

SharePoint2010_thumb

Publicado 27/5/2012 13:17 por Juan Carlos González Martín | 1 comment(s)

SharePoint Online: Integración de SQL Azure!

Si os estáis preguntando si a día de hoy alguna forma de integrar datos de SQL Azure en SharePoint Online (SPO), la respuesta es que sí…y no pasa por el uso de los BCS (que aunque inicialmente si permitía crear tipos de contenido externo para BD’s SQL Azure, actualmente no se soporta), sino por usar la versátil Data Form WebPart que a partir de definir un origen de datos basado en SQL Azure nos deja crear vistas de datos en base a dicha fuente. Esto ya lo expliqué hace unos meses para SharePoint 2010 On-Premise y es igual de válido para SPO en Office 365. Podéis ver la mecánica de integración en este enlace.

image

Publicado 26/5/2012 10:09 por Juan Carlos González Martín | 3 comment(s)

SharePoint 2010 y Azure: Integración con el Windows Azure Data Market (II)!

Siguiendo con la serie de posts sobre como integrar Windows Azure Data Market y SharePoint 2010, en esta ocasión vamos a ver como podemos realizar dicha integración a través de un Business Data Connectivity Model o simplemente un conector de BCS (Business Connectivity Services) que crearemos en Visual Studio 11 Beta (VS 11 Beta) y que luego desplegaremos en nuestro ambiente de SharePoint. Empecemos:

  • Lo primero que tenemos que hacer como siempre es conocer la forma que tenemos de integrar la fuente de datos del Windows Azure Data Market. En mi caso, voy a trabajar con el set de datos 2006 – 2008 Crime in the United States que se puede integrar de forma muy sencilla en nuestras aplicaciones sin más que añadir una referencia al correspondiente servicio que en este caso es: https://api.datamarket.azure.com/data.gov/Crimes/
  • Como siempre, antes de ponernos a  hacer nada podemos jugar con el set de datos directamente desde el Data Market.
  • En VS 11 Beta creamos un proyecto de tipo SharePoint 2010 Project al que añadimos un elemento de tipo Business Data Connectivity Model que pasaremos a parametrizar a continuación. Este modelo tendrá una única entidad, Crime, que nos permitirá acceder a la información de los crímenes que expone el servicio.
image image image
  • En lugar de trabajar con el diseñador del Business Data Connectivity Model, vamos a agregar en primer lugar la lógica necesaria para acceder a los datos del servicio. Para ello, añadimos en primer lugar una referencia al citado servicio en nuestro proyecto. Tendremos que añadir además una referencia a System.Data.Services.Client.
  • A partir de aquí, en el explorador de soluciones vamos a preparar las dos clases que se crean al añadir el elemento de tipo Business Data Connectivity Model al proyecto: Entity1 y Entity1Service. La primera clase modela la entidad tipo que nos permite integrar los datos del servicio en SharePoint a través de una serie de propiedades. La segunda, contiene los métodos que permiten trabajar con entidades de tipo Entity1.
  • En mi caso, he renombrado Entity1 a Crime y le he añadido las siguientes propiedades que luego se mapearán a propiedades del set de datos expuestos por el servicio:
   1: public partial class Crime
   2: {
   3:     //TODO: Implement additional properties here. The property Message is just a sample how a property could look like.
   4:     public int ID { get; set; }
   5:     public string State { get; set; }
   6:     public string City { get; set; }
   7:     public int Year { get; set; }
   8:     public int Population { get; set; }
   9:     public int Burglary { get; set; }
  10:     public int LarcenyTheft { get; set; }
  11:     public int MotorVehicleTheft { get; set; }
  12: }
  • A continuación iremos por la clase Entity1Service que en este caso renombramos a CrimeService. En la misma añadimos referencias a System.Net, System.Data.Services.Clien y al servicio de Windows Azure Data Market.
  • Añadimos a la clase un método que nos permita devolver un proxy al servicio. Como veis, simplemente se trata de devolver dicho proxy y además lidiar con no tener problemas de conexión por SSL usando para ello ServicePointManager y confiando en certificados del Windows Azure Data Market. Este proxy nos permitirá acceder a los datos del servicio.

 

   1: private static datagovCrimesContainer GetProxy()
   2: {
   3:     ServicePointManager.ServerCertificateValidationCallback =
   4:         ((sender, certificate, chain, sslPolicyErrors) => 
   5:             certificate.Subject.Contains("datamarket"));
   6:     Uri serviceUri =
   7:         new Uri("https://api.datamarket.azure.com/Data.ashx/data.gov/Crimes");
   8:     datagovCrimesContainer proxy =
   9:         new datagovCrimesContainer(serviceUri);
  10:     proxy.Credentials =
  11:         new NetworkCredential("Yor Data Market Account",
  12:             "Your Data Market Key");
  13:     return proxy;
  14:  
  15: }
  • Esta clase al menos tiene que implementar dos métodos:
    • Uno de tipo “Specific finder” que devuelva una entidad de tipo Crime en base a un parámetro como por ejemplo puede ser un identificador. En este caso, el método en cuestión se ha renombrado a ReadCrime. Cómo veis, a partir de un identificador y el proxy podemos acceder fácilmente a un registro expuesto por el servicio y devolverlo.
   1: public static Crime ReadCrime(int id)
   2: {
   3:     datagovCrimesContainer proxy = GetProxy();
   4:  
   5:     var results = from stat in proxy.CityCrime
   6:                   where stat.ROWID == id
   7:                   select stat;
   8:  
   9:     Crime currentStat = new Crime();
  10:  
  11:     currentStat.ID = results.Single().ROWID;
  12:     currentStat.City = results.Single().City;
  13:     currentStat.State = results.Single().State;
  14:     currentStat.Year = results.Single().Year;
  15:     currentStat.Population = results.Single().Population;
  16:     currentStat.Burglary = results.Single().Burglary;
  17:     currentStat.LarcenyTheft = results.Single().LarcenyTheft;
  18:     currentStat.MotorVehicleTheft = results.Single().MotorVehicleTheft;
  19:  
  20:     return currentStat;
  21: }
  •  
    • Uno de tipo “finder” que nos devuelva una colección de objetos de tipo Crime. En este caso se ha renombrado el método a ReadCrimes(). Como antes, a partir del proxy es sencillo obtener una colección de objetos CityCrime expuestos por el servicio que luego usaremos para devolver la colección de objetos de tipo Crime.
   1: public static IEnumerable<Crime> ReadCrimes()
   2: {
   3:     List<Crime> queryResults = new List<Crime>();
   4:  
   5:     datagovCrimesContainer proxy = GetProxy();
   6:  
   7:     IEnumerable<CityCrime> crimes = 
   8:         proxy.CityCrime.Where(c => c.State ==
   9:                "Washington" && (c.Year == 2008 || c.Year == 2007));
  10:  
  11:     //Procesando el set de datos devuelto
  12:     foreach (var c in crimes)
  13:     {
  14:         Crime cr = new Crime();
  15:         cr.ID = c.ROWID;
  16:         cr.City = c.City;
  17:         cr.State = c.State;
  18:         cr.Year = c.Year;
  19:         cr.Population = c.Population;
  20:         cr.Burglary = c.Burglary;
  21:         cr.LarcenyTheft = c.LarcenyTheft;
  22:         cr.MotorVehicleTheft = c.MotorVehicleTheft;
  23:  
  24:         queryResults.Add(cr);
  25:     }
  26:  
  27:     return queryResults.ToList();
  28: }
  • A partir de aquí, de vuelta al explorador del modelo de BDC tenemos que configurar adecuadamente la entidad Crime para que se usen estos métodos y tenga los miembros correspondientes de acuerdo a la definición de la clase. Este trabajo lo haremos en el diseñador del modelo y el explorador.
  • En el diseñador configuraremos el nombre de la entidad y de los métodos expuestos. Mientras que en el explorador del modelo configuraremos adecuadamente los parámetros de entrada y de salida de cada uno de estos métodos.
  • Una vez creado el conector, simplemente lo desplegamos y en nuestro sitio de SharePoint creamos la correspondiente lista externa que mostrará los datos expuestos por el servicio.
image image image

 

Y hasta aquí llega este segundo post sobre la integración de SharePoint 2010 y el Windows Azure Data Market.

Publicado 25/5/2012 14:05 por Juan Carlos González Martín | 2 comment(s)

SharePoint 2010 y Azure: Integración con el Windows Azure Data Market (I)!

Otro gran punto de integración entre SharePoint 2010 y Windows Azure es a través del Windows Azure Data Market de manera que podemos acceder a datos publicados utilizando artefactos de SharePoint como pueden ser WebParts o conectores de BCS. En este primer post os voy a mostrar como podemos usar Bing Translator, que ya está incluido en el Windows Azure Data Market, para poder realizar traducciones en una WebPart. Comencemos:

image image image

Partimos del ejemplo de uso de Microsoft Translator que pasa por descargarse el proxy C# disponible en la página de detalle de Microsoft Translator en el Data Market. A partir de aquí, ya estamos listos para codificar de acuerdo a los siguientes pasos:

  • Agregar referencia a System.Data.Services.Client puesto que los datos del Data Market los consultaremos a través de servicios REST.
  • Añadir directivas using a System.Data.Services.Client, System.Net y el espacio de nombres del proxy que nos hemos bajado (Microsoft en este caso).
  • Especificar la cuenta y clave de uso del Azure Data Market.
  • Evitar el infame error: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel, date una vuelta por este enlace para saber de que estamos hablando. Como veis, en mi caso y dado que esto son pruebas uso SharePointManager para saltarme problemas de certificados y dar por válidos los certificados usados por el Azurre Data Market. Si quieres específicamente confiar únicamente en los certificados del Windows Azure Data Market, basta con cambiar que se confía en todos los certificados (valor true) por certificate.Subject.Contains("datamarket").
  • Creamos una instancia del objeto TranslatorContainer definido en el proxy y que nos permite realizar la consulta de traducción.
  • Especificamos la url del servicio de Microsoft Translator y las credenciales de acceso al Windows Azure Data Market.
  • A partir de aquí especificamos que queremos traducir, el idioma de destino y el de origen…realizamos la traducción y procesamos los resultados.
   1: try
   2: {
   3:     this.txtTranslation.Text = "";
   4:     // tUri del Servicio 
   5:     Uri uServiceRootUri =
   6:                    new Uri(
   7:                        "https://api.datamarket.azure.com/Bing/MicrosoftTranslator/");
   8:  
   9:     //  Claves de acceso
  10:     string sAccountUser = "TuCuenta";
  11:     string sAccountKey = "TuClave";
  12:  
  13:     // Objeto Translator Container
  14:     ServicePointManager.ServerCertificateValidationCallback =
  15:         ((MySender, certificate, chain, sslPolicyErrors) => true); 
  16:     TranslatorContainer tc = 
  17:         new TranslatorContainer(uServiceRootUri);
  18:  
  19:     // Credenciales de acceso 
  20:     tc.Credentials = 
  21:         new NetworkCredential(sAccountUser,sAccountKey); 
  22:  
  23:     //*****************************************
  24:     //A traducir
  25:     //*****************************************
  26:  
  27:     // Generamos la consulta 
  28:     var translationQuery = 
  29:         tc.Translate(this.txtWordToTranslate.Text,"en","es");
  30:  
  31:     // Ejecutamos la consulta
  32:     var translationResults = translationQuery.Execute();
  33:  
  34:     // Procesamos los resultados
  35:     if (translationResults!=null)
  36:     {
  37:         foreach (var item in translationResults)
  38:         {
  39:             this.txtTranslation.Text += item.Text;
  40:         }
  41:     }                
  42:  
  43: }
  44: catch (Exception ex)
  45: {
  46:  
  47:     this.lblError.Text = "Error: " +
  48:         ex.Message;
  49: }

Y finalmente la prueba del algodón:

image

Otros posts sobre la integración de SharePoint y Azure:

Publicado 24/5/2012 17:46 por Juan Carlos González Martín | 3 comment(s)

SharePoint 2010: Tipos de campo soportados como “Projected Fields” al relacionar listas!

Cómo sabéis, en SharePoint 2010 (como en la versión predecesora) es posible relacionar dos listas a través de columnas de tipo búsqueda (Lookup). La novedad que incorporó SharePoint 2010 es que además de relacionar dos listas mediante un campo de búsqueda definido en la lista padre que apunte a una columna de la lista hija, podemos traer columnas adicionales de la lista hija a través de la característica de campos proyectados. Ahora bien, hay que tener en cuenta que no todos los campos definidos en la lista hija pueden ser campos proyectados…en concreto, los siguientes tipo de campos se soportan como proyectados al relacionar dos listas y por ende se pueden usar en consultas CAML definidas a las dos listas:

  • Calculated (treated as plain text).
  • ContentTypeId.
  • Counter.
  • Currency.
  • DateTime.
  • Guid.
  • Integer.
  • Note (one-line only).
  • Number.
  • Text.

Por último, os recomiendo que reviséis la sección de la SharePoint Guidance en la que se tratan estos temas y en los que se resumen de forma muy esquematizada:

  • Como relacionar dos listas mediante campos de lookup.
  • Como se define un campo de lookup en SharePoint 2010.
Ff798514.84ceee0b-1351-487a-a0b6-e10050bb1998(en-us,PandP.10).png Ff798514.ae9fd5b2-ccab-481f-84e2-56d0efeac718(en-us,PandP.10).png

Referencias:

Publicado 23/5/2012 23:22 por Juan Carlos González Martín | 1 comment(s)

SharePoint Online: Microsoft incrementa “y bastante” el número de usuarios externos que se pueden invitar!

SharePoint Online (SPO) en Office 365 permite modelar escenarios Extranet en los que puedan colaborar usuarios externos a partir de la característica de “Invitar a usuarios externos” disponible tanto para planes P como para planes E. Hasta ahora esta característica tenía unas limitaciones que Microsoft ha decidido mejorar ya que:

  • En planes P sólo se podía invitar hasta 50 usuarios externos, y si necesitabas invitar a más usuarios externos no te quedaba otra que cambiar a un plan de tipo E.
  • En planes E, se incluía en el precio la invitación a 50 usuarios externos y si necesitabas más podías adquirir paquetes adicionales de invitaciones a 50 usuarios externos.

Por suerte, y como se comenta en este enlace, estos límites se han extendido ampliamente de manera que en planes P se pueden invitar hasta a 500 usuarios externos y en planes E ya no hay límite…simplemente genial.

image

Publicado 23/5/2012 10:24 por Juan Carlos González Martín | 3 comment(s)

SharePoint 2010: Cómo crear un flujo re-utilizable de forma global!

Como sabéis, con SharePoint 2010 contamos con la posibilidad de crear flujos de trabajo re-utilizables en SharePoint Designer 2010 (SPD 2010), es decir, flujos que no están “atados” a una lista concreta o incluso a un tipo de contenido concreto de manera que el flujo puede ser re-utilizado en todo el sitio vinculándolo a cualquier lista o tipo de contenido del mismo. Una pregunta que puede surgir es si es posible re-utilizar este flujo en otros sitios, la respuesta es que inicialmente no, pero podemos configurarlo para que sea globalmente re-utilizable:

  • Abrimos un sitio cualquiera con SPD 2010 y nos vamos a la sección de flujos de trabajo. Pulsamos la opción de la Ribbon que nos permite crear un flujo de trabajo re-utilizable.
  • En la pantalla inicial de definición del flujo, especificamos un nombre y descripción para el mismo. En principio, no lo vinculamos a un tipo de contenido concreto.
  • En el diseñador de flujos, modelamos un sencillo flujo de trabajo.
image image image
  • Guardamos el flujo y para publicarlo de forma global, no tenemos más que usar la opción correspondiente de la Ribbon (“Publish Globally”), de manera que se muestra un mensaje informativo indicando que el flujo se publicará en el catálogo de flujos globales de nuestro despliegue de SharePoint de manera que podremos utilizarlo en otros sitios.
  • Comprobamos que efectivamente el flujo aparece en otro sitio.
image image

Publicado 22/5/2012 11:30 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010 & SharePoint Online: Como automatizar el despliegue de una aplicación de Access Services (II)!

Siguiendo con la serie de posts sobre como automatizar el despliegue de una aplicación Access Services en SharePoint OnPremise u Online (SPO), en esta ocasión vamos a empatar el resultado del partido y casi a ganarlo ya que una vez que os muestre el camino alternativo de publicación, es muy fácil pensar en como mediante el modelo de objetos automatizar al máximo el despliegue de una aplicación de Access Services. Empecemos pues.

  • Lo primero que tenemos que hacer es crear una aplicación Access 2010 Web o bien partir de una existente.
  • En mi caso, he creado una nueva aplicación usando como base la plantilla Charitable Contributions.
  • Una vez que hemos realizado todas las personalizaciones e implementaciones de nuestra aplicación Access Web, empieza la “fiesta” para la publicación alternativa de la misma en los servicios de Access. Lo que tenemos que hacer es guardar la aplicación como plantilla de tipo “Database template” (ACCDT) a través de la opción “Save & Publish”.
image image image
  • De esta forma se abre una ventana en la que especificaremos los datos de la plantilla ACCDT a generar.
  • Una vez especificados estos datos, pulsamos “OK” y nos quedamos con la ruta dónde se guarda la plantilla.
  • Nos vamos a un sitio de SharePoint OnPremise o SPO y cargamos la plantilla en la galería de soluciones. Activamos la plantilla.
image image image
  • Una vez activada, nos vamos a Acciones del sitio –> Crear y buscamos nuestra plantilla (cuidado con el idioma). Configuramos los parámetros de creación del nuevo sitio y pulsamos “Crear”.
  • En mi caso, la prueba la he hecho en SPO y el proceso a finalizado con un error no especificado, pero creando el nuevo sitio por lo que deduzco que se ha debido dar algún Time Out en el proceso de creación…pero el resultado es qué la aplicación se crea, por lo que JC empata el partido.
  • Por supuesto, la aplicación está completamente operativa.
image image image

 

Referencia:

http://www.slideshare.net/patenik2/access-services-in-sharepoint-2010-all-you-need-to-know

Publicado 21/5/2012 8:34 por Juan Carlos González Martín | 4 comment(s)

SharePoint Online: Cómo registrar un manejador de eventos contra una lista personalizada (II)!

Siguiendo con la serie de posts sobre como registrar un manejador de eventos contra una lista personalizada de SharePoint Online (SPO), en esta ocasión toca ver la aproximación programática a través del modelo de objetos de SharePoint:

  • Una vez creado el manejador en VS 11 Beta, tenemos que averiguar la información del ensamblado correspondiente ya que la necesitaremos para registrar el manejador a la lista mediante el modelo de objetos. Para obtener esta información, simplemente usamos la utilidad Strong Name de VS 11 Beta que nos la vuelca en la ventana de salida.
  • A continuación, para registrar el manejador de eventos en la lista mediante el modelo de objetos tenemos que recurrir a un Feature Event Receiver…y es aquí dónde nos esperan las malas noticias: no es posible registrar el manejador de eventos mediante el modelo de objetos cuando se trata de una solución de tipo Sandbox…básicamente el método Add() que necesitamos para añadir el manejador a la colección de manejadores de la lista en cuestión no está disponible.
image image

Referencias:

Publicado 20/5/2012 18:21 por Juan Carlos González Martín | 3 comment(s)

WebCast: Estaré hablando sobre SharePoint Foundation para la comunidad IT Pro!

Pues eso, el próximo 21 de junio y gracias a la invitación de la comunidad IT Pro de España estaré hablando sobre SharePoint Foundation a nivel de posibilidades y de arquitectura de la plataforma. Los detalles completos del WebCast los podéis encontrar en este enlace. Podéis inscribiros al WebCast a través de este otro enlace.

20120621 Banner Sharepoint Fundation

Publicado 19/5/2012 20:10 por Juan Carlos González Martín | 3 comment(s)

Archivado en:

SharePoint Online: Cómo registrar un manejador de eventos contra una lista personalizada (I)!

A raíz de una cuestión relativa a manejadores de eventos en SharePoint Online (SPO), me he encontrado con la sorpresa de qué cuando creas un manejador para una lista de tipo personalizada este no se registra por defecto y por lo tanto no funciona. El manejador en sí se despliega de forma correcta a través de la correspondiente solución Sandbox, pero a la hora de verlo en acción nada de nada…ante este comportamiento, cabían dos posibles respuestas:

  • En primer lugar, no es posible registrar de forma declarativa un manejador de eventos para una lista personalizada de SPO…lo cuál me extrañaba.
  • En segundo lugar, este registro igual sólo se puede hacer de forma programática con un manejador de característica por ejemplo.

Ante estas dudas, tocaba hacer las correspondientes pruebas…la primera ver si el registro declarativo nos deja alguna opción para agregar un manejador a una lista personalizada y la respuesta es qué sí…el truco pasa por usar el atributo ListUrl en lugar del ListTemplateId de forma que nos aseguremos que el manejador se registra y además lo hace para una lista concreta…y efectivamente, así es:

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   3:   <Receivers ListUrl="Lists/SPCustomList">
   4:       <Receiver>
   5:         <Name>CustomListERItemAdding</Name>
   6:         <Type>ItemAdding</Type>
   7:         <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
   8:         <Class>SPOERPOC.CustomListER.CustomListER</Class>
   9:         <SequenceNumber>10000</SequenceNumber>
  10:       </Receiver>
  11:   </Receivers>
  12: </Elements>

La segunda aproximación, pero ya en otro post, pasa por realizar el registro de forma programática en la lista en cuestión. Finalmente, os dejo otros posts relacionados con este tema:

Publicado 18/5/2012 20:43 por Juan Carlos González Martín | 4 comment(s)

SharePoint 2010 & SharePoint Online: Como automatizar el despliegue de una aplicación de Access Services (I)!

Pues esta es la cuestión que se me vino a la cabeza cuando pensé en Access 2010 y los servicios de Access como una buena solución para crear aplicaciones sencillas con un look & feel atractivo y la funcionalidad deseada, todo sobre SharePoint pero sin parecerlo. Lo primero que me vino a la cabeza de cara a automatizar el despliegue de una aplicación Access 2010 desplegada en SharePoint fue la de aprovechar que dado un sitio de SharePoint, es posible guardarlo como plantilla de manera que se genera el correspondiente .wsp que contiene un Web Template:

  • Navegamos hasta la aplicación en cuestión (en el ejemplo, la aplicación de gestión de campañas que forma parte de la demo de Fabrikan para SharePoint Online).
  • Nos vamos a la configuración del sitio y a la opción de guardar el sitio como plantilla.
  • A continuación simplemente especificamos el nombre del archivo .wsp a generar y de la plantilla (Nota: No os olvidéis de marcar el check de incluir contenido).
image image image
  • Si todo va bien, el proceso de guardado concluirá con éxito y podremos ir a la galería de soluciones de la colección de sitios para descargarnos el .wsp generado.
  • Nos lo descargamos y lo cargamos en una galería de soluciones de otra colección de sitios. Por supuesto, activamos la solución.
  • Procedemos a crear un nuevo sitio en base a esta plantilla que aparece entre las plantillas de sitio disponibles.
image image image
  • Y aquí empiezan los problemas…primer petardazo indicando que alguna característica que está incluida en la definición no está activa…la identifico y la activo, pero sigue dando errores por lo que desisto de intentar crear el sitio (la solución pasaría por importar el WSP en Visual Studio 2010 y hacer limpieza de aquellas características que se han incluido en la definición y que no son necesarias).
  • Pero no todo está perdido, lo que hago para probar si es posible desplegar la aplicación con un .wsp es crearme una aplicación Access Web en Access 2010 y la publico esta vez en una colección de sitios cuyo sitio raíz se ha creado con la plantilla Blank Site. En este caso, al usar la plantilla generada para crear un nuevo sitio ya no hay errores, pero el sitio generado es completamente inútil….y esto fue porque olvide marcar el check de incluir contenido al guardar el sitio como plantilla.
  • Repito los pasos, pero generando la plantilla de sitio de forma que se incluya el contenido. Al crear el sitio en base a la plantilla parece que este empiza a mostrarse de forma correcta hasta que da el infame error que aparece en la última captura de pantalla y que no se soluciona
image image image

Por lo tanto, Servicios de Access 1 – JC 0, veremos si soy capaz de averiguar que hace por debajo el proceso de publicación desde Access 2010 para ver si es posible realizar la automatización que os comentaba…pero esto ya os lo contaré (si es que es posible) en otro post.

Publicado 18/5/2012 9:25 por Juan Carlos González Martín | 6 comment(s)

SharePoint Online: Como publicar un calendario privado en mi sitio público!

Hace un tiempo publicada como dado un sitio público de SharePoint Online (SPO) en Office 365, podemos habilitar el acceso anónimo en listas que requieran autenticación sin más que crear un manejador de eventos que realizase todo el trabajo de permitir que estos usuarios anónimos pudiesen trabajar en estas listas de la misma forma que un usuario con los privilegios adecuado. Lo qué me lleva al título de este artículo y la consiguiente pregunta: ¿se puede publicar un calendario privado de SPO en un sitio público de forma similar a lo que se puede hacer con calendarios de Exchange? La respuesta es qué depende de en qué nivel esté ese calendario:

  • Si es un calendario creado bajo el sitio público, entonces podemos usar la aproximación comentada de habilitar el acceso a usuarios anónimo vía rotura de permisos ya que tenemos acceso anónimo a nivel de colección de sitios.
  • Si es un calendario creado bajo un sitio privado, no podremos usar esta aproximación ya que aunque podemos romper permisos, domina la configuración de la colección de sitios raíz que en este caso no tiene habilitado el acceso anónimo.

image

Publicado 17/5/2012 8:25 por Juan Carlos González Martín | 3 comment(s)

SharePoint 2010: Opciones para migrar carpetas públicas de Exchange (I)!

Desde que SharePoint 2007 vio la luz, todo el mundo decía que además de todas sus bondades y capacidades, venía a sustituir las carpetas públicas de Exchange que por entonces, y también ahora, se siguen usando de forma intensiva para almacenar información de una organización. El caso es que, con SharePoint 2010 a punto de dar la señal de salida a una nueva versión de producto, resulta que las carpetas públicas de Exchange se siguen usando y mucho por lo que cuando se habla de sustituirlas por SharePoint aparece en escena una palabra que hace que te entren sudores fríos: “migración”. A la vista de esto, la pregunta es: ¿Qué posibilidades tengo para migrar carpetas públicas de Exchange a SharePoint 2010?

Aproximación manual:

Aproximación mediante desarrollo que implicaría necesariamente:

  • Crear una aplicación a nivel de Exchange o de Outlook que a través del modelo de objetos en cliente o los servicios web de SharePoint permitiese realizar el volcado de los contenidos de las carpetas públicas en bibliotecas y listas de SharePoint.

Herramientas de terceros:

Si nos vamos a la opción de usar herramientas de terceros, aparte de hacer pruebas con sus versiones trial, sería recomendable que dispusiese de capacidades como:

  • Soporte para migraciones en masa de carpetas públicas.
  • Soporte para migraciones de archivos .PST.
  • Permita mapear elementos de las carpetas públicas a elementos propios de SharePoint:
  • Migraciones granulares, posibilitando la migración a nivel de elemento.
  • Posibilidad de mapeo de metadatos, es decir, recoger metadatos de los elementos en carpetas públicas y mapearlos con metadatos de tipos de contenido.
  • Migración no intrusiva, es decir, que el número de componentes o elementos a introducir en el entorno de SharePoint sea el mínimo imprescindible.

Otros recursos:

Publicado 16/5/2012 12:45 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010 y SSRS 2012: Trabajo con suscripciones y alertas (III)!

Siguiendo con la serie de posts sobre trabajo con suscripciones y alertas cuando tenemos una integración entre SharePoint 2010 y SSRS 2012, en esta ocasión vamos a ver como configurar alertas personalizadas para un informe de manera que cuando haya un cambio en los datos del mismo nos llegue el correspondiente aviso. Pero antes, os recuerdo los artículos previos de la serie:

Para carear una alerta que se dispare ante cambio de datos de un cierto informe:

  • En el visor de informe, pulsamos sobre Actions –> New Data Alert.
  • De esta forma, se muestra una ventana que es una aplicación Silverlight que nos permite configurar las alertas.
  • Para configurar una alerta, tenemos que seleccionar una región de datos válida del informe y a continuación definir la condición de generación de la misma. Por ejemplo, que la información de una cierta caja de texto tenga un valor superior a un cierto valor fijo. A continuación configuramos la frecuencia de envio de la alerta, la dirección de envío de la alerta, el asunto y una descripción para la alerta.
image image image
  • Para visualizar las alertas de un cierto informe, nos vamos a la biblioteca dónde está almacenado y a través del menú contextual pulsamos sobre la opción de administración de alertas del informe.
  • A continuación se mostrarán el listado de alertas disponibles para dicho informe.
image image

Publicado 15/5/2012 8:32 por Juan Carlos González Martín | 2 comment(s)

Más artículos Página siguiente >