Ayer trabajando en una presentación sobre gestión del conocimiento, para una charla que daré en breve, baje al trastero a por unos apuntes antiguos, y entre la documentación que buscaba, encontré algunos diagramas que había realizado para un proyecto durante un máster en el 2002. Era un sistema de gestión de contenidos realizado en ASP (no .net) muy divertido.
Hoy he recordado que incluso este dominio, www.ideseg.com, lo cogí pensando en albergar dicho proyecto. Como pasa el tiempo.
Using it I can install and uninstall solutions, features and webparts from my visual studio, external tools menu. Also you can add this to the post generation commands in order to deploy and get data from application pool prior to debug. (rsh machine iisapp)
Este es un pequeño webpart, a su vez un clásico pero muy útil webpart, que nos permitirá recorrer la estructura de carpetas de una biblioteca de documentos. Por supuesto es para WSS3 y MOSS 2007
¿Por cierto alguien se ha fijado en este botón que ha desaparecido en WSS3 ?
WSS2
WSS3
La verdad es que aún siendo un simple history.back() era un botón muy útil.
Si recordáis en WSS2 teníamos una opción para ver las carpetas de una biblioteca de imágenes, que por alguna misteriosa razón, no se encontraba disponible en las bibliotecas de documentos.
En su día, con un simple truco, podíamos tener esta opción en las bibliotecas de documentos. (http://www.ideseg.com/SharePointViewAllFoldersInDocumentLibraries.aspx) he recordado esto esta mañana cuando me he dado cuenta de que esta opción ya no está disponible ni en las bibliotecas de imágenes ni en las bibliotecas de documentos.
Yesterday was the third act of NavarraDotNet, we had a session in the Public University of Navarra, where, we spoke about refactoring techniques and showing some tools as Resharper and Refactor!.
My colleague in the session Sergio Jimenez, it demonstrated how using some of this inexpensive tools, we can improve the code quality, the development of some tasks, and how is it favorable for both, programmers and companies.
Ayer tuvimos el tercer acto de NavarraDotNet, en la Universidad Publica de Navarra, en donde hablamos sobre técnicas de refactoring y pudimos ver algunas herramientas como Resharper y Refactor!.
5o Asalto – El servicio de planificación de tareas & Hosting in ASP.Net
El servicio de planificación de tareas (WorkflowSchedulerService) es el encargado de ejecutar los distintos flujos de trabajo dentro del motor, estos pueden ser manejados de forma asíncrona, usando el servicio que WF nos proveed por defecto (DefaultWorkflowSchedulerService) o de manera síncrona, usando un servicio manual (ManualWorkflowSchedulerService).
Al igual que el resto de servicios, también podemos crear nuestro propio servicio de planificación heredando de WorkflowSchedulerService.
El proyecto WinHostWorkflow esta formado a su vez por dos proyectos, WinHostWorkflow contiene el motor de flujos de trabajo (WorkflowEngine.cs) y el interface de usuario (WorkflowSampleApp.cs), la carpeta ExternalDataServices, contiene los servicios de intercambio de datos del 3er asalto, (CalculatorService.cs y MessengerService.cs)
El proyecto Workflows, contiene los interfaces para los servicios de intercambio de datos (ICalculator.cs y IMessenger.cs) así como los flujos de trabajo de ejemplo.
WorkflowDelay.cs – Secuencial con una actividad Delay de 45seg.
WorkflowDelay2.cs – Secuencial con una actividad Delay de 30 seg, una actividad Code que duerme el proceso un minuto y una actividad Delay de 30 seg.
WorkflowLongWhile.cs - Seuencial con una actividad While que ejecuta una actividad Code.
WorkflowSumNumbers.cs – Uso de parámetros, recibe dos parámetros y los suma en una actividad Code.
WorkflowCallExternalMethod.cs - Llamada a métodos externos, usa el interface ICalculator, para realizar operaciones con parámetros.
WorkflowHandleExternalEvent.cs - Espera recibir un mensaje, interface IMessenger, después hace una pausa y a través del mismo interface nos lo devuelve.
Estaréis de acuerdo conmigo en que el título lo dice todo… bueno, pues este es el próximo evento de NavarraDotNet, esta vez el cartel, cortesía de Ander – El próximo Jueves.
Cuando hablo de Workflow Foundation, siempre hay una parte en la que alguien me pregunta, ¿Cómo encajo todo esto en mi forma de trabajar?, bien, WF lo que nos permite es modelar procesos (pueden ser de negocio o de lo que sea).
Generalmente, y desde que adoptamos los modelos de n-capas, usamos una capa para albergar lo que denominamos lógica del negocio, (yo la llamo la capa lógica, a secas) y en esa capa implementamos los distintos procesos que nuestra aplicación va a realizar. En esta capa tenemos un nivel de abstracción elevado, ya que no trabajamos directamente con los datos, si no que usamos entidades que mapean los datos. A pesar de trabajar con este nivel de abstracción, en nuestro código debemos implementar gran cantidad de servicios, como: excepciones, estados, eventos, comunicaciones, transacciones. WF, lo que nos brinda es otro nivel más de abstracción mediante el cual vamos a poder centrarnos en la resolución de los problemas, liberándonos de gran parte de la carga.
Muchos de los procesos con los que trabajamos habitualmente, requieren de datos o eventos que llegan desde el exterior. Anteriormente, vimos como WF puede comunicarse con el mundo exterior, para recibir esos datos o eventos usando el servicio de intercambio de datos.
En ocasiones, al igual que sucede en el mundo real, debemos esperar a que se produzcan esos datos o eventos para poder continuar realizando un trabajo. Este hecho hace que nuestros flujos de trabajo queden inactivos (Idle) mientras esperan esos datos.