Nuevo BizTalk Knowledge Center: BizTalk Blogs!

Microsoft ha creado una potente y nuevo blog sobre BizTalk en la que distintos MVP’s, equipos de desarrollo y otras personas expertas (como David Chappel) del entorno de BizTalk van a contarnos todas las novedades, trucos y tendencias en torno a BizTalk: desde WCF a BTS, pasando por EDI, pipelines customizadas, etc.

La Feed RSS de esta nueva Knowledge Center es http://biztalkblogs.com/RssDoc.xml

 

MicrosoftBizTalkBlogs

Además de todo lo relativo a BizTalk, en este nuevo blog se incluirán contenidos relativos a .NET Framework en general, y a WF y WCF en particular. Finalmente, junto con los posts, desde el sitio principal se puede acceder a toda una serie de recursos sobre BizTalk, SOA y .NET Framework, así como a los distintos blogs de los grandes expertos en estos temas a nivel mundial.

WSS 3.0 & MOSS: Recopilación de enlaces interesantes (XII)

Una vez más, en esta nueva entrega recogemos el recopilatorio de enlaces, recursos y diferentes elementos de interés que han aparecido en la extensa comunidad de desarrolladores en tecnología SharePoint. Por este año 2007, este será el último recopilatorio, pero en 2008 seguiremos realizándolo para poder centralizar la gran cantidad de información que tenemos sobre plataforma SharePoint. Empecemos.

Artículos

Tips & Tricks

 Recursos, Novedades & Utilidades

  • El equipo del BDC Meta Man ha creado la BDC Calendar WebPart para visualizar en un calendario tipo de SharePoint datos del BCD.
  • El equipo del BDC Meta Man no para, y ya tenemos disponible la versión 2.0.0.8 una de cuyas principales novedades es el SQL Query Wizard para la creación de métodos con múltiples entidades.

image

  • SharePoint Solutions, partner de Microsoft, ha creado un Add-on para MOSS denominado Alert Manager 2007 que mejora las capacidades de alertas y alarmas en MOSS permitiendo:
    • The ability to create customized alert templates
    • The aility to subscribe not just oneself, but other users to alerts on any list, library or item
    • The ability to manage alerts for one or more users in a site
    • The ability to search for users to add to alerts using various attributes such as login or email address or by using wildcards, partial words or pattern matching
    • The ability to create a dynamic list of users to send alerts to
    • And more…
  • Como muchos sabéis, en noviembre Microsoft liberó la primera release candidate para Microsoft Search Server…pues bien, algunos partners ya se han puesto manos a la obra y han creado los primeros conectores que permitan realizar búsquedas fuera de Search Server…un ejemplo lo tenéis en el conector para Documentum de Vorsite.
  • Microsoft ha liberado el Office Sharepoint Training Portal, está construido con el Sharepoint Learning kit y básicamente se trata de unas plantillas creadas para probar las capacidades de MOSS.
  • Ya tenemos disponible la versión beta  de System Center Capacity Planner models for WSS 3.0 and SharePoint Server.
  • Aaron Robertson ha liberado para uso libre la columna BDC extendida que ha creado para poder utilizar en content types, listas, etc. En este enlace podéis ver el funcionamiento de esta columna, y en este el enlace dentro de Codeplex.
  • Simego proporciona otra herramienta para crear BDC’s: BDC Design Studio.

  • Se acaba de liberar el MS Filter pack que contiene los siguientes IFilters para MOSS:
    • Metro (.docx, .docm, .pptx, .pptm, .xlsx, .xlsm, .xlsb)
    • Zip (.zip)
    • OneNote (.one)
    • Visio (.vdx, .vsd, .vss, .vst, .vdx, .vsx, .vtx)
  • SharePoint Monitor Toolkit.
  • Cómo se comenta en esta entrada, aparte del kit de accesibilidad para SharePoint creado por HiSoftware, Imtech ICT Business Solutions está diseñando y desarrollando su propio kit de accesibilidad.

Sin más, hasta aquí llega la 12ª edición del tradicional recopilatorio de recursos de WSS 3.0 & MOSS. Desearos a todos unas felices fiestas y nos vemos en Geeks.Ms a la vuelta de las navidades con un nuevo año ya estrenado.

Liberada para descarga la RC del SP1 de Windows Vista!

Pues eso, la noticia es que desde hoy es posible descargar la primera versión RC (Release Candidate) del primer service pack de Windows Vista. Tal y como se comenta en el enlace de descarga, antes de instalar la RC del SP1 hay que tener en cuenta los siguientes puntos:

  • If you have a prior version of SP1 beta installed, you must uninstall it prior to installing SP1 RC.
  • Microsoft does not recommend installing this software on primary or mission critical systems.
  • Windows Vista SP1 Release Candidate is time-limited software.

En cuanto a la mejor forma de instalarlo, se comenta que la opción más eficiente es a través de Windows Update…esperemos que esta primera RC y la futura RTM (Ready To Manufacture) resuelva mucho de los problemas y quejas que hasta ahora ha dado Windows Vista en su poco más de un año de vida (Por cierto, las últimas actualizaciones se están comiendo por dentro mi sobremesa…que tendrán!).

LINQPad: ¿Adios a SQL Server Management Studio?…Creo que no, pero…

Varios meses después de la última vez que escribimos sobre LINQ, hacía tiempo que tenía ganas de escribir sobre una utilidad (gratuita!) relacionada con LINQ y que no había podido probar hasta la semana pasada durante un descanso de uno de los seminarios del CIIN…y esta utilidad no es otra que LINQPad, el equivalente a SQL Server Management Studio para bases de datos de datos SQL Server Express, pero para LINQ To SQL puesto que esta utilidad solo funciona con bases de datos SQL Server. Según la página de su creador, además de permitirnos definir y probar nuestras consultas LINQ contra BD’s SQL Server, también podremos hacerlo contra objetos (LINQ To Objects) o archivos XML (LINQ To XML). En este post os mostraré como de sencillo resulta probar nuestras consultas LINQ To SQL mediante LINQPad. Empecemos.

Conectándonos a una BD SQL Server

Nada más iniciar la aplicación (por cierto, es un simple archivo ejecutable que no tiene ningún requisito de instalación y que es autoactualizable…yo lo estoy ejecutando con una máquina virtual con Visual Studio 2008 RTM instalado y también con WSS 3.0), lo primero que podemos hacer es añadir una nueva conexión (al estilo de lo que ya conocemos de SQL Server Management Studio) para la que especificamos el servidor de BD, el modo de visualización, si vamos a atachar un archivo físico de base de datos, el tipo de autenticación,…vamos lo normal y conocido:

LINQPad1 LINQPad2 LINQPad3

Creando una consulta LINQ

Una vez conectados a la BD, a través de la correspondiente editor de consulta, podremos definir la correspondiente consulta LINQ. En este caso yo voy a definir una consulta LINQ sencilla sobre una BD compuesta únicamente por tres tablas (podéis ver el diagrama de base de datos correspondiente), de manera que al ejecutarla obtenemos el resultado esperado…

LINQPad4 LINQPad5

Nota: La consulta LINQ ejecutada es la siguiente (bastante sencilla como ya os comenté):

from c in MD_Clientes
    join ve in MD_ClienteVehiculos on
    c.ID_Cliente equals ve.ID_Cliente
    join v in MD_Vehiculos on
    ve.ID_Vehiculo equals v.ID_Vehiculo
    orderby c.ID_Cliente descending
    select new{NIF=c.ID_Cliente,Nombre=c.SNombre + ” ” + c.SApellidos,
        Dieccion=c.SDireccion, Coche=v.SMarca + ” ” + v.SModelo}

Como veis, en la consulta LINQ estoy utilizando algunas de las novedades en el lenguaje C# 3.0 que ya vimos en este post:

  • Inicializadores de objetos.
  • Operadores estándar de consulta.

Analizando la información que nos da LINQPad

Además de comprobar que la consulta LINQ definida devuelve los resultados esperados, LINQPad adicionalmente nos permite:

  • Visualizar las expresiones lambda sobre las que se asienta la consulta, y que en este caso genera el siguiente listado lleno de estas expresiones, inicializadores de objetos y métodos de extensión (los propios operadores estándar de consulta)

MD_Clientes
   .Join (
      MD_ClienteVehiculos,
      c => c.ID_Cliente,
      ve => ve.ID_Cliente,
      (c, ve) =>
         new 
         {
            c = c,
            ve = ve
         }
   )
   .Join (
      MD_Vehiculos,
      temp0 => temp0.ve.ID_Vehiculo,
      v => v.ID_Vehiculo,
      (temp0, v) =>
         new 
         {
            <>h__TransparentIdentifier0 = temp0,
            v = v
         }
   )
   .OrderByDescending (temp1 => temp1.<>h__TransparentIdentifier0.c.ID_Cliente)
   .Select (
      temp1 =>
         new 
         {
            NIF = temp1.<>h__TransparentIdentifier0.c.ID_Cliente,
            Nombre = ((temp1.<>h__TransparentIdentifier0.c.SNombre + ” “) +
                  temp1.<>h__TransparentIdentifier0.c.SApellidos
               ),
            Dieccion = temp1.<>h__TransparentIdentifier0.c.SDireccion,
            Coche = ((temp1.v.SMarca + ” “) + temp1.v.SModelo)
         }
   )

  • La consulta T-SQL que es enviada a la BD, y que como vimos en este post, es generada por el objeto data context, que es el auténtico interprete y traductor de las consultas LINQ a las correspondiente sintaxis T-SQL. En este caso, el correspondiente objeto data context ha generado la siguiente consulta:

SELECT [t0].[ID_Cliente] AS [NIF], ([t0].[sNombre] + @p0) +
[t0].[sApellidos] AS [Nombre], [t0].[sDireccion] AS [Dieccion],
([t2].[sMarca] + @p1) + [t2].[sModelo] AS [Coche]
FROM [MD_Clientes] AS [t0]
INNER JOIN [MD_ClienteVehiculo] AS [t1] ON
[t0].[ID_Cliente] = [t1].[ID_Cliente]
INNER JOIN [MD_Vehiculos] AS [t2] ON
[t1].[ID_Vehiculo] = [t2].[ID_Vehiculo]
ORDER BY [t0].[ID_Cliente] DESC

— @p0: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]
— @p1: Input NVarChar (Size = 1; Prec = 0; Scale = 0) [ ]
— Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8

¿Y que más…?

Además de servirnos como herramienta de pruebas para nuestras consultas LINQ, LINQPad viene con un montón de ejemplos precargados (más de 200) que aparecen en el libro C# 3.0 in a Nutshell de Joseph y Ben Albahari, autores de esta interesantísima herramienta. En la propia página de la herramienta tenéis disponible todos los listados de código que aparecen en dicho libro (me parece que habrá que echarle un vistazo profundo), así como un pequeño Quiz para demostrar lo que sabemos de C# 3.0.

Sin más, esto es lo que os quería contar sobre LINQPad…os animo a probarla, es realmente chula y pude darnos mucho juego para probar nuestras consultas LINQ.

Configuración del icono ¡Nuevo! de SharePoint

Siempre que en alguna lista o librería de SharePoint se agrega algún registro o documento, aparece durante un periodo de tiempo un icono de ¡Nuevo! para advertir la existencia de este nuevo elemento.

clip_image002

Esta propiedad que esta activa por defecto en todas las instalaciones de SharePoint se puede programar para cambiar el icono, establecer los días de permanencia o directamente decir que no aparezca.

Cambiar el icono

Este icono de nuevo no es más que una imagen que esta en el directorio ‘..12templatelayouts<idioma>images’ del servidor y se denomina ‘new.gif’, por lo que directamente modificando este fichero o creando uno personalizado con el mismo nombre podemos dotar de otro aspecto a esta advertencia.

Modificar los días de permanencia

Para modificar los días de permanencia de este icono o directamente decir que no aparezca tenemos que configurarlo desde la línea de comandos por mediación comando ‘stsadm.exe’ y los siguientes parámetros:

stsadm.exe –o setproperty –propertyname <name> –propertyvalue <value> –url <url>

Ejemplo de configuración:
stsadm.exe –o setproperty –propertyname days-to-show-new-icon –propertyvalue 0 –url http://litwaredemo

Donde el valor del parámetro ‘propertyvalue’ especifica los días de permanencia, y con el valor 0 hacemos que no aparezca.

WSS 3.0 & MOSS: Creación de actividades para SD 2007!

Hace un par de semanas veíamos como crear un workflow de máquina de estados para plataforma SharePoint. Como sabéis, este tipo de workflows para SharePoint sólo se pueden crear con Visual Studio y las plantillas específicas de creación de workflows. Ahora bien, esto no es así en el caso de workflows secuenciales puesto que los podemos crear con Visual Studio 2005 o bien de manera más rápida y visual (aunque limitada) utilizando SharePoint Designer 2007 (SD 2007)…¿cuáles son las diferencias fundamentales entre estas dos posibilidades de creación de workflows para SharePoint? Pues hay varias y a modo de resumen:

Worflows diseñados con el Diseñador VS 2005 Workflows diseñados con Sharepoint Designer 2007
Se pueden escribir workflows para WSS o MOSS Se pueden escribir workflows para WSS o MOSS
Los archivos de código permiten escribir código customizado para modelar procesos de negocio El fichero de reglas de workflow encapsula los procesos de negocio
Se pueden asociar a múltiples sitios y listas Sólo se pueden asociar a una única lista en tiempo de diseño
Los distintos ficheros que componen el workflow se compilan en un assembly Los distintos ficheros que componen el workflow se almacenan sin compilar en una librería de documentos específica de WSS
El workflow (template) ha de estar asociado con cada lista o elemento en que debe estar disponible La asociación (automática) se da en el momento en que se crea el workflow en una cierta lista
Se puede usar cualquier tipo de formulario: ASPX o InfoPath Solo se pueden utilizar formularios de tipo ASPX
Se pueden incluir modificaciones en el workflow No permite incluir modificaciones en el workflow
Se puede crear actividades customizadas Sólo se pueden usar las actividades disponibles
El assembly y definición del workflow se empaquetan como una feature de WSS, y luego se despliegan en el sitio (manual) El despliegue es realizado de forma automática
Se puede usar un formulario de inicialización para recoger información del usuario cuando se arranca el workflow Se puede usar un formulario de inicialización para recoger información del usuario cuando se arranca el workflow
Se pueden usar formularios customizados para interactuar con tareas de WSS Se pueden usar formularios customizados para interactuar con tareas de WSS
Disponible debugging de VS No es posible el modo debugging
Se pueden crear workflows secuenciales y de máquina de estados Sólo se pueden crear workflows de tipo secuencial

Cómo ya comentaba hace tiempo Carlos Segura en un par de posts (este y este otro), las piezas para la creación de workflows con SD 2007 son las actividades que tengamos disponibles. Estas actividades en el fondo son actividades de Windows Workflow Foundation (WF), pero específicas para SD 2007 y que en este entorno se clasifican en dos tipos: acciones y condiciones. La idea de este post es refrescar los conceptos básicos (que Carlos ya nos explicó) de creación de acciones para SD 2007 y detallar como crear una condición para SD 2007. Empecemos.

Creación de acciones para SD 2007

El cometido de la acción a crear dentro de SD 2007 será determinar y asignar una fecha laboral (de lunes a viernes) a un ítem de una lista o librería de documentos. Lo primero que haremos es crear un proyecto de actividad de workflow. Para ello ejecutamos VS 2005y dentro de los proyectos de tipo C# seleccionamos la opción Workflow. Veremos que VS 2005 nos da varias plantillas de proyecto para crear workflows. Seleccionamos la plantilla Workflow Activity Library.

image image

Una vez creada la actividad, el siguiente paso es añadirle las propiedades y métodos necesarios para modelar su comportamiento (nos vamos a la vista de código de la actividad). Empecemos por las propiedades. Para la definición de las propiedades, vamos a aprovechar las facilidades que nos aporta VS2005 a través del uso de code snippets. Para ello, y debajo del constructor de la actividad pulsamos el botón derecho y a continuación las opciones: Insert Snippet.. -> Workflow -> DependencyProperty – Property. De este modo podremos crear una propiedad vinculada a nuestra actividad.

image image image

Dentro del código que nos genera el snippet, introducimos los siguientes cambios:

§  myProperty, por WorkingDayDate.

§  Type,  de tipo DateTime.

§  Description, Working Day Date.

§  Category, GetWorkDayDate.

Al introducir estos cambios, el código debería ser similar al siguiente:

public static DependencyProperty WorkingDayDateProperty =

System.Workflow.ComponentModel.DependencyProperty.Register(“WorkingDayDate”,

typeof(DateTime), typeof(GetWorkDayDate));

[Description(“Working Day Date”)]

[Category(“GetWorkDayDate”)]

[Browsable(true)]

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

public DateTime WorkingDayDate

{

get

{

return ((DateTime)(base.GetValue(GetWorkDayDate.WorkingDayDateProperty)));

}

set

{

base.SetValue(GetWorkDayDate.WorkingDayDateProperty, value);

}

}

En mi caso, la acción a crear tendrá otras dos propiedades de dependencia que se crean siguiendo el método comentado. Una vez creadas las propiedades, vamos a añadir los métodos correspondientes a la actividad. En particular, vamos a añadir un método Execute a nuestra actividad para poder calcular un día laboral válido teniendo en cuenta que el mismo tiene que estar comprendido entre el lunes y viernes de una semana cualquiera. Para ello sobreescribimos el método Execute de nuestra actividad. El código necesario sería el siguiente:

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
    DateTime dt = DateTime.Now;
    switch (this.Unit)
    {
        case “days”:
            dt=dt.AddDays(this.AddValue);
            break;
        case “months”:
            dt = dt.AddMonths(this.AddValue);
            break;
        case “years”:
            dt = dt.AddYears(this.AddValue);
            break;
        default:
            break;
    }

    if (dt.DayOfWeek==DayOfWeek.Saturday)
    {
        WorkingDayDate = dt.AddDays(-1);
    }
    if (dt.DayOfWeek == DayOfWeek.Sunday)
    {
        WorkingDayDate = dt.AddDays(+1);
    }

    return ActivityExecutionStatus.Closed;
}

Lo que hace el código anterior es añadir el número adecuado de días/semanas/meses a la fecha actual y modifica el resultado para obtener un día comprendido dentro de la semana laboral. Compilamos la solución para asegurarnos que no hay errores. Una vez compilado, lo que hacemos es firmar el ensamblado para darle un strong-name. Una vez que tenemos compilado y firmado el ensamblado de la actividad, ya estamos listos para desplegarla y usarla con SD 2007 como una custom action. Lo primero que tenemos que hacer es copiar el assembly generado al compilar al proyecto en la GAC de la máquina dónde tenemos instalado SD 2007, así como en la GAC del servidor de WSS 3.0 & MOSS dónde vamos a crear los workflows.

Lo siguiente que tenemos que hacer es modificar el archivo web.config de la web application en la que vamos a crear workflows con SD 2007:

·         Abrimos el archivo web.config (con el bloc de notas o Visual Studio).

·         Añadimos el assembly en la sección authorizedTyes (que especifica la lista de ensamblados que se permiten en la web applications) añadiendo lo siguiente:

<authorizedType Assembly=”WorkDayDate, Version=1.0.0.0, Culture=neutral,

PublicKeyToken=5edf8dddd72c45e5” Namespace=”WorkDayDate” TypeName=”*” Authorized=”True” />

  • Creamos un archivo denominado WorkDayDate.actions (con el bloc de notas o Visual Studio) ubicado en Program FilesCommon FilesMicrosoft Sharedweb server extensions12TEMPLATE1033workflow.  Le añadimos a este archivo el siguiente contenido:

<?xml version=”1.0″ encoding=”utf-8″?>

<WorkflowInfo Language=”en-us”>

<Actions Sequential=”then” Parallel=”and”>

<Action Name=”Get Working Day Date”

ClassName=”WorkDayDate.GetWorkDayDate”

Assembly=”WorkDayDate, Version=1.0.0.0, Culture=neutral,

PublicKeyToken=5edf8dddd72c45e5″

Category=”Custom”

AppliesTo=”all”>

<RuleDesigner Sentence=”Get Nearest Working Day %1 %2

from current date (store in %3)”>

<FieldBind Field=”AddValue” DesignerType=”Integer” Text=”Number” Id=”1″/>

<FieldBind Field=”Unit” DesignerType=”Operator”

OperatorTypeFrom=”DropDownMenu”

Text=”timeframe” Id=”2″>

<Option Name=”days” Value=”days”/>

<Option Name=”months” Value=”months”/>

<Option Name=”years” Value=”years”/>

</FieldBind>

<FieldBind Field=”WorkingDayDate” DesignerType=”parameterNames”

Text=”WorkingDayDate” Id=”3″/>

</RuleDesigner>

<Parameters>

<Parameter Name=”AddValue” Type=”System.Int32, mscorlib” Direction=”In” />

<Parameter Name=”Unit” Type=”System.String, mscorlib” Direction=”In” />

<Parameter Name=”WorkingDayDate” Type=”System.DateTime, mscorlib”

Direction=”Out” />

</Parameters>

</Action>

</Actions>

</WorkflowInfo>

El listado anterior nos permite que la actividad sea accesible en SD 2007 y configura como es visualizada por el usuario que la va a utilizar desde SD 2007.

·         Hacemos un IIS Reset desde la línea de comandos.

     Una vez que ya hemos desplegado la actividad para ser utilizada como una custom action de SD 2007, ya estamos listos para utilizarla en SD 2007. Para ello, nos vamos a SD 2007 y creamos un nuevo flujo de trabajo asociado a una lista o biblioteca de documentos de SharePoint:

image image

En la pantalla de diseño del workflow seguimos los siguientes pasos:

  • Pulsamos sobre Actions.
  • Seleccionamos la opción More Actions…
  • En la ventana que se abre:
    • Seleccionamos Custom en el combo Select a Category. 
    • En el listado que se muestra aparecerá nuestra actividad customizada: Get Working Day Date. La seleccionamos y nos aparecerá como acción del workflow de acuerdo al formato especificado en el archivo WorkDayDate.ACTIONS.

image 

Creación de una condición para SD 2007

Estas condiciones de no son más que simples clases que contienen al menos un método estático (compartido).  En nuestro caso, tenemos dos posibilidades para crear nuestras propias custom conditions:

  1. Seguir la filosofía de la sección anterior, crear un proyecto de tipo class library y añadirle el método o métodos estáticos que se consideren necesarios.
  2. Aprovechar el trabajo realizado en la sección anterior y añadirle a la custom action el método o métodos estáticos que se consideren oportunos

Vamos a seguir la opción 2. que implica que no es necesario modificar el archivo web.config.

image

Una vez creada la clase, simplemente tenemos que añadirle un método estático a la clase. Este método estático tiene que devolver obligatoriamente un valor True. 

        public static bool ReturnTrue()       
                {
           
                return true;
       
                }

Una vez añadido el método a la clase, compilamos todo el proyecto para asegurarnos que no hay ningún error.Para hacer el despliegue de la Custom Condition, tenemos que repetir algunos de los pasos seguidos en el despliegue de la Custom Action mostrado en el apartado anterior. En concreto:

  • Copiar de nuevo el assembly del proyecto en la GAC.
  • Modificar el archivo WorkDayDate.Actions añadiendo el siguiente contenido al que ya tiene el archivo: 

<Conditions>

                               <Condition Name=”AlwaysTrue”

                                  FunctionName=”ReturnTrue”

                                  ClassName=”WorkDayDate.GetWorkDayDate”

                                  Assembly=”WorkDayDate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5edf8dddd72c45e5″

                                     AppliesTo=”list”  UsesCurrentItem=”true”>

                                               <RuleDesigner Sentence=”true”>                                                       

                                               </RuleDesigner>

                                               <Parameters>                                                      

                                               </Parameters>

                               </Condition>

                </Conditions>

  • Realizar un IIS Reset.

Para probar que la condición está disponible en SD 2007, seguimos los pasos ya comentados en la sección anterior. En este caso, tendremos que pulsar sobre Conditions y luego sobre nuestra Custom Condition que aparecerá disponible:

image 

Sin más, hasta aquí llega lo que os quería contar con respecto a la creación de custom actions y condiciones para ser utilizados en SD 2007 y dotar así de mayor poder y capacidad a los workflows que podamos crear con esta herramienta. Espero que el post os haya resultado interesante.

Links de descarga del primer Service Pack de WSS y MOSS

En un post de la semana pasada explicamos todos los detalles que iba a solucionar el primer service pack de SharePoint, tanto para WSS como para MOSS, pues bien, hoy por fin acaban de publicar los links de descarga tanto para las versiones de 32 como de 64 bits:

Windows SharePoint Services 3.0 Service Pack 1 (SP1)

Microsoft Office SharePoint Servers 2007 Service Pack 1 (SP1)

Nota: Es importante comentar que para instalar el SP 1 de MOSS, previamente hay que poner el de WSS.

MOSS, WF, BTS 2006 R2: ¿Cuándo?, ¿Dónde?, ¿Sirven para lo mismo?,…

 

Cómo sabéis, el pasado día 4 de diciembre tuvo lugar en Madrid la 2ª SOA Conference organizada por Microsoft. Este evento es una prolongación de la conferencia que sobre la misma temática se realiza con anterioridad en Redmon y trata de compartir a nivel de España las principales conclusiones obtenidas sobre SOA, su evolución presente y futura, y la relación con otros términos que hemos comentado en posts previos como: Software + Services (S+S), Enterprise Service Bus (ESB) o la propia filosofía que gira en torno a las Service Oriented Architecture (SOA). Las distintas ponencias presentadas en el evento fueron muy interesantes, aunque hubo dos que me interesaron particularmente. La primera, y que está relacionada con este post, la impartió Eduardo Azanza y trataba sobre como elegir la combinación adecuada de BizTalk Server 2006 R2 (BTS 2006 R2), Windows Workflow Foundation (WF) y Microsoft Office SharePoint Server (MOSS). La segunda ponencia trataba sobre Office Business Applications y fue impartida por Pablo Pélaez…la demo que nos hizo con VSTO, la API de OXML, Excel Services y workflows en MOSS fue espectacular.

Centrándonos en el título del post…cuando se habla de escenarios de integración, de necesidad de workflows, de entornos colaborativos o de comunicación, todos pensamos en BTS 2006 R2, WF o MOSS, pero seguramente os habréis preguntado en qué escenarios aplica cada una de estas plataformas y en cuáles no, así como su complementariedad  (que la hay y muy clara). Para resolver estas dudas, vamos a ir viendo en qué escenarios aplica cada uno de estos monstruos y en cuales no.

BTS 2006 R2

Antes de hablar de escenarios de aplicación, lo primero que tenemos que saber es qué capacidades tiene BTS 2006 R2…Uff, podríamos estar horas y horas hablando de estas capacidades, por lo que vamos a resumirlas:

  • Capacidades de integración y mensajería, gracias a que permite integrar y comunicar un amplio rango de aplicaciones software (SW) pues soporta distintos protocolos de comunicación e integración: HTTP, FTP, SQL, FILE, SAP, etc. Asimismo, BTS 2006 R2 dispone de una serie de aceleradores verticales pensados para ciertos mercados verticales concretos: entorno sanitario (HL7), entorno bancario (SWIFT),…
  • Un motor de procesos, que permite la creación de orquestaciones con las que modelamos los procesos de negocio y el correspondiente motor de ejecución de las mismas. Además, hay servicios de valor añadido:
    • Llamada a servicios web en orquestaciones y puertos de BTS 2006 R2 y exposición de orquestaciones como servicios web.
    • Compensación de transacciones.
  • Un motor de reglas de negocio, que permite definir de manera visual y a un nivel alto las reglas de negocio de una organización para ser utilizadas en las orquestaciones o fuera de ellas.
  • Gestión de las relaciones con los socios comerciales a través de lo que se denomina Trading Partner Management, que permite a través de un portal SharePoint establecer como una organización permite a sus socios comerciales participar en los procesos de negocio.
  • Integración con Office y vista de negocio de los procesos a través de la Business Activity Monitoring, basada en la definición de modelos de observación sobre los procesos modelados con orquestaciones. En este caso estamos hablando de herramientas más orientadas al usuario de negocio.
  • Capacidad de gestión y monitorización mediante la consola de administración de BTS 2006 R2, utilizando el Health And Activity Tracking (HAT), con el Microsoft ESB Guidance tendremos un portal ESB para gestionar toda la información relativa a excepciones que se produzcan en el ESB, etc.

image

De acuerdo a estas capacidades, ¿cuándo se utiliza BTS 2006 R2?

  • En escenarios de mensajería en los que se requiera la integración de entornos diversos y heterogéneos: Mainframes de IBM, plataformas tecnológicas diversas (.NET vs Java), ERP’s, etc. Para este escenario BTS 2006 R2 dispone de los adaptadores y aceleradores comentados más el runtime de mensajería que habilita el intercambio de mensajes de manera orquestada o no (Pass Through).
  • Cuando la escalabilidad, robustez y tolerancia a fallos sean requisitos claves en la arquitectura / solución de integración / mensajería / SOA a implementar. BTS 2006 R2 posee estas capacidades ya que se puede configurar en alta disponibilidad, se puede añadir más capacidad de manera ilimitada, etc.
  • Cuando se requieran buenas prestaciones de tiempo de diseño de los distintos componentes de la solución. BTS 2006 R2 tiene buenas prestaciones en este sentido pues podemos definir de manera visual las orquestaciones, esquemas que siguen los mensajes a transmitir, transformaciones de mensajes con mapas de BTS 2006 R2 o pipelines.
image image image

¿y cuándo no tiene sentido hablar de BTS 2006 R2?

  • Cuando se necesita interactividad entre aplicaciones (del tipo de las que dan las aplicaciones tipo smart client o web client).
  • Cuando hablamos de procesos embebidos no autonómos, en los que los procesos se modelan mediante flujos de trabajo secuenciales o de máquina de estados y no hay necesidades de integración de entornos y/o aplicaciones diversas.
  • Cuando es necesario acceder a recursos de la máquina dónde se ejecuta la aplicación.

Por lo tanto BTS 2006 R2 está pensado para escenarios de integración de aplicaciones y plataformas heterogéneas, tanto dentro como fuera de una organización siendo necesaria la orquestación de estos entornos y la utilización de estándares en el intercambio y exposición de información (XML y servicios web).

image image image

 

WF

Frente a BTS 2006 R2, WF está más enfocado al desarrollador y no tiene componentes específicos para usuarios de negocio. WF es una API para la creación de workflows secuenciales o de máquina de estados de manera visual, codificada y/o mixta. ¿cuándo tiene sentido utilizar WF?

  • Cuando se necesite interactividad de aplicaciones, por ejemplo controlar la navegación de una aplicación web, modelar un proceso de gestión documental, etc.
  • Cuando estemos hablando de aplicaciones con baja latencia y capaces de responder rápidamente a eventos.
  • Hosting avanzado de procesos, como hostear el propio runtime de WF (lo que precisamente hace WSS 3.0 & MOSS).
  • Cuando queramos construir nuestro propio diseñador personalizado de workflows, al estilo de lo que tenemos con SharePoint Designer 2007 que permite la creación de workflows a usuarios no técnicos.

Por otro lado, frente a BTS 2006 R2, en WF estamos hablando de una arquitectura standalone que no tiene implementada por defecto una solución de monitorización.

image  image image  

Plataforma SharePoint

Finalmente, en lo que a SharePoint se refiere, estamos hablando de la plataforma por excelencia para el modelado de escenarios de comunicación, colaboración y gestión documental en entornos Intranet y Extranet. En todos estos escenarios se necesita de la capacidad para modelado de procesos de gestión documental, colaboración o comunicación, lo que la plataforma consigue a través de hostear el runtime de WF y de ofrecerle los correspondientes servicios en el entorno de SharePoint, es decir, estamos hablando runtime específico de WF orientada a SharePoint:

  • SharePoint es el hoster de WF y tiene implementaciones propias de los servicios de hosting que este necesita para comunicarse con el entorno de SharePoint, realizar el tacking de ejecución de los workflows en elementos de SharePoint, etc.
  • Frente al modelo de WF convencional, en SharePoint accedemos al runtime mediante el modelo de objetos de SharePoint.
  • Tenemos una librería de actividades para workflows en SharePoint.

Por lo tanto SharePoint encaja para la definición de procesos orientados al documento y al usuario final…¿cuándo no tiene sentido SharePoint? Pues cuando nos encontramos ante escenarios de integración puros o arquitecturas End-to-End.

image image image

 

…en resumen

Si bien es cierto que BTS 2006 R2, WF y SharePoint tienen sentido en ciertos escenarios, pero no en otros, también lo es que su uso combinado nos permite cubrir todo el espectro de escenarios comentados:

image image

Sin más, espero que la información os resulte interesante y que sobre todo os ayude a tener claro cuando utilizar cada plataforma, cuando no y cuando combinarla para implementar siempre la solución de más valor.

Primer service pack para SharePoint 2007 (WSS SP1 / MOSS SP1)

Por fin, el primer service pack de SharePoint ya esta apunto de ver la luz para sus versiones de MOSS y de WSS. A grandes rasgos podemos decir que este service pack no va a poner nuevas funcionalidades espectaculares al producto, sino que va a resolver diversos problemas que se han ido conociendo desde la puesta en marcha de la nueva versión de SharePoint y que se han ido resolviendo con diversos parches.


Algunas de las características que incluye este service pack son:




  • Soporte y compatibilidad mejorada para desarrollos con AJAX Control Toolkit para ASP.NET y AJAX Extensions.


  • Soporte y compatibilidad para Windows Server 2008 en todas sus versiones excepto la Core Server. 


  • Nuevos parámetros para el comando STSADM:



    • mergecontentdbs: para unir o separar colecciones de sitios en las bases de datos de contenido


    • renamesite: renombra colecciones de sitios


    • Peoplepicker-searchadcustomfilter, Peoplepicker-serviceaccountdirectorypath, Peoplepicker-setsiteaccountdirectorypath, Peoplepicker-getsiteaccountdirectorypath, Peoplepicker-tzmove


  • Incluye mas de 60 Hot-fixes:



    • Hotfix 938663: Timer jobs delayed one hour because of DST 


    • Hotfix 936867: Inherit permissions causes permissions loss


    • Hotfix 930807: Cannot open WSS alerts in Outlook 2007 cached mode


    • Hotfix 932816: Workflow does not continue after pause for duration


    • Hotfix 936867: Export fails with FatalError User cannot be found


    • Hotfix 938888: Edit document crashes with multiple versions of Office installed


    • Hotfix 934790: Peoplepicker-searchadcustomquery filter correction


    • Hotfix 926284: List view web part not retained saving template


    • Hotfix 934793: Fixes to support indexing Exchange 2007 public folders


    • Hotfix 933819: Fixed crawling IBM Notes indexing ID access issues


    • Hotfix 934790: Fix to Alerts logic to address mails not being sent in specific scenarios


    • Hotfix 932620: Fix to CMS Migration link image attachment


    • Hotfix 939599: Fix to LDAP related FBA memory issue


    • Hotfix 939188: Content deployment fix – The file ‘XXXX’ is not checked out…


    • … 

Cuando salga a la luz este service pack (dicen que para mediados del mes de diciembre, a ver si es verdad!!!), vamos a tener nuevos ficheros de instalación tanto de WSS como de MOSS con el service pack ya instalado

Kit de accesibilidad para SharePoint (AKS)

image

AKS (Accesibility Kit for SharePoint) es el nuevo kit de herramientas que ha publicado Microsoft y que ha desarrollado la empresa HiSoftware con el fín de facilitar que los sitios desarrollados bajo la plataforma SharePoint sean más accesibles.

Hasta ahora, para poder hacer que un sitio SharePoint fuese accesible, había que desarrollar a mano todos los elementos que le forman, ya sea la master page, ficheros CSS, controles, había que modificar el método render y poner atributos básicos que le faltaban en las tablas, etc.

Para evitar hacer todo esto y facilitarnos el desarrollo, este kit contiene una serie de plantillas, controles, paginas maestras, hojas de estilo y web parts que nos permiten realizar sitios de MOSS o WSS más accesibles.

La primera versión de este kit, Accessibility Kit for SharePoint(AKS) v 1.0 ya está disponible para su descarga tanto en CodePlex como desde la página de HiSoftware.