miércoles, 26 de noviembre de 2008

Page Templates con ayuda del Sharepoint Designer

El otro día me acordé del artículo que ya escribí acerca de como realizar personalizaciones rápidas en sharepoint. El ejemplo realizaba modificaciones en modo unghosted, lo que implicaba que cada que se consume las páginas se estaba accediendo a la bbdd para cargarla.

Como alternativa a las personalizaciones sobre la bbdd de contenidos debemos de realizar nuestras páginas como page templates o applications pages, e incluso podemos pensar en webparts antes de hacer que una página sea unghosted.

Las page templates consisten en páginas que están físicamente en el servidor frontal se ejecuta en "safe mode", es decir no permite ejecutar código en servidor, y permite customizarla.

Un caso real

En el proyecto se planteaba una solución sobre lista de wss3 la cual debía de mostrar una vista y comportamiento especial en las páginas de DispForm, NewForm y EditForm. Si huebiéramos modificado la página directamente desde Sharepoint Designer habríamos terminado rápidamente, pero a cambio habríamos acarreando otros problemas futuros como pueda ser el backup/restore del portal y el rendimiento.

Comenzamos haciendo la lista con la estructura, lo recome

ndable es hacerlo definiendo un contenttype. Una vez creada la lista, abriremos el sharepoint Designer y entraremos en el formulario a modificar, en este ejemplo en DispForm.

Una vez abierto lo modificaremos con la estructura que deseemos, tal y como explicaba en mi anterior artículo.

Una vez modificada, lo que haremos será quedarnos con el código fuente, pero ojo no guardaremos el fichero, solo lo utilizaremos para renderizar el resultado y hacernos una idea en tiempo de diseño.

Ahora crearemos un proyecto en blanco con la estructura adecuada para construir una feature de sharepoint. Añadiremos una nueva páginas aspx sin código y pegaremos el código generado por el designer.

Si nos fijamos en el código generado por el designer veremos que nos ha incrustado un DataFormWebPart y que tiene como datasource y parámetros referencias a la lista pero por ID. Esto significa que todo lo que hagamos no podremos moverlo a otro sitio ya que la instancia de la lista tendrá otro id distinto aunque tenga la misma estructura.

Para solucionarlo accederemos por nombre en lugar de id, por lo que cambiaremos todas las referencias de ListId por ListName y el guid de la lista por el nombre de la lista. También quitaremos el parámetro

<ParameterBinding Name="ListID" Location="None" DefaultValue="{3C54AAE0-1C6F-4FFD-A3F9-F3BB6FEDA399}"/> por <ParameterBinding Name="ListName" Location="None" DefaultValue=""/>

Para verificar que lo hemos hecho correctamente copiaremos el código y lo pegaremos desde el designer en la página que tomamos como ejemplo. PERO SIN GUARDAR DESDE EL DESIGNER!!!.

Ahora tendremos que indicar a sharepoint que la página que hemos hecho se utilizará como template. Crearemos un fichero xml en el que indicaremos lo siguiente:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

<Module Path="PagesTemplates" Url="Notas de Gastos/Forms" >
<File Url="NotasDeGastosDispForm.aspx" Path="NotasDeGastosDispForm.aspx" Type="Ghostable" />
<File Url="NotasDeGastosEditForm.aspx" Path="NotasDeGastosEditForm.aspx" Type="Ghostable" />
<File Url="EntregarNotasDeGastosForm.aspx" Path="EntregarNotasDeGastosForm.aspx" Type="Ghostable" />
</Module>

</Elements>

El atributo path indica la ruta física del directorio y de la página, y el atributo Url indica el path relativo de la url desde donde se accederá.

Ahora solo tendremos que terminar de configuar nuestra feature, instalarla y activarla.

Al activarla, si actualizamos nuestro explorador del designer veremos como ha aparecido nuestra página. Fijaros que no tienen ningún indicador de que es unghosted.

Ahora solo nos quedará indicar a la lista que utilice nuestra página cuando se acceda a la Vista de propiedades desde DispForm. Para ello podemos hacerlo desde el designer en caso de las lista, y para las librerías de documentos por código desde un SPFeatureReceiver, en el evento FeatureActivated.

Algunos enlaces adicionales:

http://www.sharepointonlinkedin.com/post/2008/07/20/How-to-free-your-Data-View-Web-Part-(DVWP)-from-those-nasty-GUIDs.aspx

http://sharepoint-insight.blogspot.com/2008/07/dataform-webpart-escape-from-hardcoded.html

martes, 25 de noviembre de 2008

Welcome to the Visual Studio 2010

Son muchos los blogs que ya han comentado las novedades de VST2010. En este artículo me centraré en enseñaros "otras" novedades menos comentadas.

Lo primero que nos encontramos al iniciar la máquina es que ya viene instalado:
VSTudio 2010 y 2008
Framework 4.0
TFS
Microsoft Camano
Dinner Now
SqlServer2008
W2k8 con IIS7 y WSS3, etc
Ha merecido la pena la descarga.



VisualStudio 2010
Después de leer las nuevas herramientas y novedades Principalmente me he centrado en los siguientes puntos que me han parecido importantes para el entorno en el que me muevo:
El nuevo Framework 4 con las Parallel Extension incorporadas en el core
Herramientas para el desarrollo integrado con WSS3 y MOSS
Mejoras en las herramientas de Testing
Nuevas herramientas para los arquitectos

Tenéis más referencias de Visual Studio en:
http://blogs.msdn.com/sharepoint/archive/2008/11/10/visual-studio-2010-tools-for-sharepoint-announced-at-teched-emea-developers-2008.aspx
http://geeks.ms/blogs/elbruno/archive/2008/11/13/vsts2010-training-kit-ya-disponible.aspx
http://dotnet.org.za/willy/archive/2008/11/21/visual-studio-2010-ctp-2-6-7-the-exciting-world-of-construction-part-2-2.aspx

El nuevo Framework 4
Entre las novedades podemos destacar el manejo de código que podemos compilar en tiempo de ejecución, la incorporación de Parallel Framework y LinQ en el core, Entity framework ( sin SP's), MVC, Velocity, ...
Tenemos también el Visual Studio 2010 and .NET Framework 4.0 Training Kit con presentaciones acerca de las novedades http://www.microsoft.com/downloads/details.aspx?FamilyId=752CB725-969B-4732-A383-ED5740F02E93&displaylang=en


Herramientas para el desarrollo integrado con WSS3 y MOSS
Ya he leído varios artículos sobre esta herramienta, pero no la he podido tocarla ya que todavía no está disponible en esta versión, de hecho, hay disponible un vídeo en Channel 9 http://channel9.msdn.com/posts/VisualStudio/Sharepoint-Development-with-Visual-Studio-2010/, que muestra ligeramente la herramienta. Si os fijais en el vídeo vereis como ocultan la parte izquierda de la ventana de proyectos.
Dispondremos de varios tipos de proyectos con sus correspondientes asistentes.

Tendremos además un explorador donde podremos navegar por la estructura de nuestro portal.

Podremos definir mediante asistentes la estructura de nuestros contentypes y features, además parece que los proyectos vienen preparados para encapsular las features y soluciones y no tratarlos como ficheros adjuntos al proyecto, fijaros en la ventana del explorador de soluciones.


Al menos por lo que he visto tiene buena pinta.

Nuevas herramientas para los arquitectos
Architecture explorer

Model proyect





VST TFS
No puedo profundizar porque no lo he tratado, así que se lo dejo a los expertos.

Microsoft Camano
Consiste en una aplicación para la gestión, monitorización, seguimiento de los test. No es una herramienta basada en el código, sino en la gestión del ciclo de vida de las pruebas de los proyectos.
Está integrado con nuestro TFS y está dividido en varias secciones: Planificación, testing, defects y reports.




Dinner Now
Consiste en un conjunto de aplicaciones de ejemplo que nos muestra distintas tecnologías. La máquina virtual incorpora los fuentes por lo que podemos echar un vistazo a las nuevas herramientas que incorpora VST2010 sin tener que crear ningún proyecto.
Podéis descargaros el proyecto desde http://www.codeplex.com/DinnerNow


Si apodéis, echarle un vistazo, solo ocupa unos 7 GB y unos GB de RAM libres, parar un rato las pelis y ya verséis como tarda poco. Podeis descargarlo http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814 y las FAQS https://connect.microsoft.com/VisualStudio/content/content.aspx?ContentID=10046.
Por cierto, algo curioso que he visto en la página de connect en el apartado "How can I improve the performance of the Virtual PC?" indica al final del todo el siguiente comentario "Also while using the Virtual PC, you should periodically close and reopen Visual Studio 2010.", joer, menuda técnica!!

martes, 18 de noviembre de 2008

Microsoft Certified Master en MOSS2007

Acaba de salir la nueva certificación para MOSS Microsoft Certified Master: Microsoft Office SharePoint Server 2007, consiste en un paso previo al MCA (Microsoft Certified Architect) pero especializado en MOSS2007.

Consiste en un curso presencial de tres semanas con expertos en el producto, con charlas, laboratorio y esas cosas.

Esta certificación te exige tener los 4 MCTS de Sharepoint , hablar un buen inglés (seguro que Enrique ya está en ello), además de unos 20.000$.

 

Ya están disponibles varios Certified Master:

  • Exchange 2007
  • Sqlserver2008
  • MOSS2007
  • Office Communication 2007

 

buffff, espero que no me pongan una de estas como objetivos,

martes, 21 de octubre de 2008

ReportViewer un gran desconocido

¿Cómo construirías un Report sobre .NET sin coste adicional de licencias?, si has contestado "con ReportViewer" la muñeca chochona para tí.

Como algunos compis no tienen claro como funciona os he preparado un ejemplo para que podáis seguir la siguiente explicación.

En mi blog de Renacimiento encontraréis el resto del artículo.

martes, 7 de octubre de 2008

ADAMProfileProvider 1.1.0

Ya está disponible en Codeplex la versión 1.1.0 del ADAMProfileProvider.

Hemos corregido algunos errores y mejorado el control de inicialización.

Podéis encontrar ejemplos en mi anterior entrada acerca de la versión 1.0.0

También podéis visitar la profile en  MSDN donde explica como extender vuestro Profile.

viernes, 19 de septiembre de 2008

Instalando Employee Portal de Dynamics NAV

Hace unos días tuve que ayudar a unos amigos a montar el Employee Portal sobre un WSS3 contra un Navision 4, así que comparto con vosotros mis experiencias para que las tengais en cuenta.

Creo que existen pocas implantaciones del Employee Portal que estén funcionando en España, así que me siento afortunado de haberlo visto Funcionar. Si estáis pensando en implantarlo, que no oss vendan un PPT, exigir una demo real del producto.

Empezamos:

  • Lo primero es instalar el NAS, las MSMQ, Framework 3.0 o superior, y WSS· en los servidores que correspondan.
  • A continuación tendremos que instalar los paquetes del Employee portal para sharepoint y Navision. En esto tenéis que tener en cuenta que son dos paquetes de instalación distintos. Un contiene los WebParts y dll's para el Sharepoint y el otro contiene las codeunit's y tablas para el EP.

En este punto os puede surgir el caso que tensáis una versión de sharepoint distinta a la que viene en el cd de instalación. Las versiones que vienen por defecto son:

  • NAV 4 -> WSS2
  • NAV 5 -> WSS3

¿Pero que pasa si tenemos un NAS 5 y queremos montar el EP sobre un WSS3 ?, en este caso instalaremos en el servidor de Navision el paquete de EP para navsion 4 y en el servidor de WSS instalaremos el paquete de EP de la 5.

Una vez instalados todos los componentes, "a configurar":

Lo primero el wss3

  • Creamos una aplicación web en el WSS3 y una colección con a plantilla del EP.
  • Configurar el usuario del WSS3 (Los siguientes pasos se deben de realizar en caso que las máquinas de WSS3 y NAS sean distintas):
    • Ahora vamos a cambiar el usuario con el que se está ejecutando el WSS3, por defecto es "Servicio de red". Buscamos el grupo de aplicaciones de la aplicación web en el IIS y cambiamos el usuario de la pestaña "identidad" por uno propio, como por ejemplo WSS_Admin o WSS_WorkerProcess. Este usuario no es recomendable que sea administrador del dominio.
    • Al cambiar el usuario tendremos que darle permiso de logon en el SqlServer.
    • Hacemos un IISReset y comprobamos que el portal se carga, si da algún error de "Servicio no disponible", es que nos falta algo en el usuario.
  • Configurando los WebParts:
    • Ahora tenemos que montar los WebParts del EP sobre el WSS3. Yo he tenido problemas al importarlos mediante STSADM, así que os indico los pasos manuales:
      • Buscamos el fichero Cab del EP "WebPartLibraryCab", lo descomprimimos e instalamos la dll en el GAC. Lo más rápido es arrastrar y soltar sobre la carpeta "C:\Windows\assembly"
      • A continuación subimos los WebParts al WSS3. Podemos entrar en el Sharepoint con un usuario administrador, y en la configuración del sitio-> elementosWeb, añadimos los ficheros con extensión "WP".
    • Abrimos el Web.config de nuestra aplicación web. Para encontrarlo podemos ir al IIS y en la pestala de "Directorio" de nuestra aplicación web encontraremos la ruta donde está alojado.
      • Añadimos en la sección de "safecontrols" la siguiente línea:

<SafeControl Assembly="Microsoft.Navision.EmployeePortal, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7eb48bed34e26dda" Namespace="Microsoft.Navision.EmployeePortal.WebPartLibrary" TypeName="*" Safe="True" />

      • Cuidado con la versión del assembly, si instaláis el EP NAV5 SP1 creo que tienen la misma versión y publicKey, pero no estoy seguro.
  • Añadiendo las propiedades del EP:
    • Abrimos de nuevo el Web.config y añadimos las configuraciones del EP (habitualmente las añade al final del fichero) en la sección appsettings:

<appSettings>
<add key="PictureUnavailable" value="/_layouts/images/picture_unavailable.gif" />
<add key="LookUpImage" value="/_layouts/images/lookup.gif" />
<add key="PictureLinkImage" value="/_layouts/images/pictindicator.gif" />
<add key="UseEncryption" value="0" />
<add key="UseCompression" value="0" />
<add key="UseDebug" value="0" />
<add key="DebugPath" value="" />
<add key="JobQueues" value="FormatName:DIRECT=OS:.\private$\nep_request_queue" />
<add key="ReplyQueues" value="FormatName:DIRECT=OS:.\private$\nep_reply_queue" />
<add key="MessageTimeOut" value="120" />
<add key="WaitForReplyTimeOut" value="60" />
</appSettings>

    • Aquí tendremos que indicar el nombre de nuestras colas MSMQ y el servidor en el que se encuentra. Si las colas MSMQ se encuentran en otro servidor substituiremos en JobQueues y ReplyQueues el carácter "." por el nombre del equipo sin barras por delante. Por ejemplo: <add key="JobQueues" value="FormatName:DIRECT=OS:miequiporemoto\private$\nep_request_queue" />

  • Hacemos un IISreset y entramos en el portal, en este punto deberíamos poder entrar sin problemas. Editamos la página y añadimos un WebPart del EP. Al añadirlo debería mostrar el panel de configuración del WP. En caso de producirse un error puede que no esté bien construido el Web.config o no esté instalada la dll en el GAC.
  • Si al entrar nos indica que "No están instaladas el servicio de MSMQ" o algo similar tendremos que instalar las colas MSMQ el en el equipo del WSS3, aunque no las utilicemos.

if (has llegado hasta aquí )

"Ya queda poco!!!"

else

"buffffffffffff"

Las colas MSMQ

  • Tenemos que verificar que las colas sobre la que corre el NAS están creadas. Entramos en el servicio de MSMQ y verificamos que existan en la sección "Private" las colas que hemos indicado en los valores "JobQueues y ReplyQueues" del web.config. Si no existe las crearemos "No transaccionales".
  • Si las colas están en un servidor distinto al WSS3 tendremos que dar permiso a las dos colas al usuario que hemos especificado en el servicio de WSS3.
  • En este paso podemos probar la conexión entrando en el WSS3 con una página que tenga un WP, y veremos como la cola de MSMQ tiene un mensaje encolado. Si no es así, tenemos un problema.

El NAS

No hay mucho misterio, normalmente los problemas que te puedes encontrar son:

  • Al agregar una "aplicación" en la consola del NAS, debes indicar en el host el nombre del servidor y en el "servicio nombre del servidor-CLASSIC" o "servicio nombre del servidor-SQL" si atacamos a un NAV con SqlServer. Si hemos puesto un nombre distinto en la instalación, lo podemos revisar en la consola de servicios de windows.
  • Otro problemilla es el del nombre de la bbdd, debemos indicar el "nombre exacto", como te confundas en un carácter no conectará.
  • También nos puede pasar que el servicio arranque pero nos diga "host desconocido" o algo similar. Puede que el nombre del host sea incorrecto o que el usuario que esté utilizando el servicio del NAS no tenga permisos para conectar con la bbdd. Una solución es cambiar el usuario del servicio del NAS por un usuario de windows que pueda hacer logon sobre el SqlServer.

Para verificar que el NAS está bien configurado, debemos arrancarlo y ver que en el fichero de eventos de windows en la sección "Aplicaciones" no hay ninguna alerta o error.

Navision

Aunque instalemos el paquete del EP, tenemos que indicarle una serie de configuraciones para que funcione. Os aconsejo que pobléis con una bbdd de prueba que viene en el paquete del EP.

Cada vez que hagais una modificación en la configuración del EP en Navision tenéis que reiniciar el NAS para que se entere el EP.

Más adelante indicaré ejemplos de configuración, ya me he cansado por hoy.

Algún ejemplo:

http://www.mibuso.com/forum/viewtopic.php?p=95700