[VS 2008 -WWF- MOSS 2007] ¿Cómo crear actividades personalizadas?

Introducción


En este artículo aprenderá cómo crear una actividad personalizada utilizando Visual Studio 2008, esta actividad contendrá los pasos básicos necesarios para asignar una tarea en MOSS 2007 a un usuario, la misma que esperará a que este la complete, en una segunda publicación aprenderá cómo utilizar ésta actividad personalizada en un flujo de trabajo para MOSS 2007.


Para poder utilizar esta actividad en un flujo para MOSS 2007 deberá ser firmada con un strong name y publicada en el GAC del servidor de MOSS 2007.


Descargar código Fuente.


Software Requerido



  • Windows Server 2003 o superior
  • Microsoft Office SharePoint 2007 (instalación stand alone)
  • Visual Studio 2008

  


Desarrollo


Empiece abriendo Visual Studio 2008 y cree un nuevo proyecto.


 


  


Los flujos de trabajo para MOSS 2007 son flujos de Windows WorkFlow Foundation, por lo tanto de la lista de Project types seleccione Workflow, y luego seleccione la plantilla Workflow Activity Library, en el nombre del proyecto ingrese BasicTaskActivity.


 


  


Una vez creado el proyecto deberá  firmar el assembly con un strong name, para lo cual haga clic derecho sobre el proyecto y seleccione propiedades, en la ventana de propiedades diríjase al tab signing.



Active la casilla Sign Assembly y seleccione new para crear un nuevo archivo de clave, deberá ingresar un nombre y una clave antes de dar clic en OK.


 


  


Una vez creado cierre la ventana de propiedades. Para poder utilizar las actividades para MOSS 2007 deberá agregar la referencia de los siguientes assemblies:


  

















Identity


Description


Microsoft.Sharepoint


Windows® SharePoint® Services


Microsoft.SharePoint.WorkflowActions


Windows® SharePoint® Services Workflow Actions


  


Utilice el nombre que aparece en description (ver tabla anterior) para agregar las referencias.


 


  


Luego proceda a renombrar la actividad llamándola WssTaskActivity.cs


 


  


Vaya al código de la actividad personalizada y dentro de la clase agregue la siguiente definición de variables, las cuales servirán como parámetros de entrada cuando agregue la actividad a un flujo de aprobación de MOSS 2007.


#region Public Parameters


public Guid idCampoEstado;


public string strAsignadoA;


public string strTitulo;


public string strDescripcion;


public DateTime dtDuración;


public bool bEnviarNotificación;


#endregion


  


En el toolbox de VS 2008 existen las actividades necesarias para gestionar tareas de MOSS 2007, así como para enviar email, registrar mensajes en el historial del flujo de trabajo, etc.


 


  


Luego deberá agregar las siguientes actividades con sus respectivas propiedades en el área de diseño de la actividad que estamos creando.


  





























Paso


Grupo


Actividad


Ver Paso A


SharePoint Workflow


CreateTask


Ver Paso B


Windows Workflow v3.0


While


Ver Paso C


SharePoint Workflow


OnTaskChanged


Ver Paso D


SharePoint Workflow


CompleteTask


  


 


Paso A


Configure las siguientes propiedades de la actividad CreateTask:


(Name): Ingrese Crear Tarea


CorrelationToken: Ingrese TaskToken


    OwnerActivityName: Seleccione WssTaskActivity


Invoked: Ingrese CrearTarea_MethodInvoking y presione enter. El código del método será el siguiente:


private void CrearTarea_MethodInvoking(object sender, EventArgs e)


{


taskId = Guid.NewGuid();


CrearTarea_TaskProperties1.AssignedTo = this.strAsignadoA;


CrearTarea_TaskProperties1.Title = this.strTitulo;


CrearTarea_TaskProperties1.Description = this.strDescripcion;


CrearTarea_TaskProperties1.DueDate = this.dtDuración;


CrearTarea_TaskProperties1.SendEmailNotification = this.bEnviarNotificación;


}


TaskId:


Para configurar esta propiedad deberá ir al código de la actividad y declarar una variable pública llamada taskId.


public Guid taskId;


Luego regrese a la vista de diseño y en la propiedad TaskId de clic sobre el botón ‘…’ y seleccione la variable que acaba de definir.


 


  


TaskProperties: De clic en el botón ‘…’, luego en el tab Bind to a new member seleccione Create Field.



  


  


Paso B


(Name): Ingrese mientrasTareaNoCompletada


Condition: Seleccione Code Condition. Luego expanda la propiedad e ingrese el siguiente nombre para el método: CodeConditionMethod.


Una vez en el código agregue otro campo público:


public bool taskCompleted = false;


El método deberá quedar de la siguiente forma:


private void CodeConditionMethod(object sender, ConditionalEventArgs e)


{


e.Result = !taskCompleted;


}


  


  


Paso C


(Name): Ingrese CambiaTarea


CorrelationToken: Seleccione TaskToken


Invoked: Ingrese cambiaTarea_Invoked y presione enter. El código del método será el siguiente:


private void cambiaTarea_Invoked(object sender, ExternalDataEventArgs e)


{


string estado=cambiaTarea_AfterProperties1.ExtendedProperties[this.idCampoEstado].ToString();


if (estado != null)


{


if (estado.Equals(«Completed»))


this.tareaCompletada = true;


}


}


AfterProperties: De clic en el botón ‘…’, luego en el tab Bind to a new member seleccione Create Field.


 


  


BeforeProperties: De clic en el botón ‘…’, luego en el tab Bind to a new member seleccione Create Field.


 


  


TaskId: De clic en el botón ‘…’, y seleccione la propiedad TaskId de la actividad Crear Tarea.



  


  


Paso D


(Name): Ingrese TareaCompletada


CorrelationToken: Seleccione TaskToken


TaskId: De clic en el botón ‘…’, y seleccione la propiedad TaskId de la actividad Crear Tarea.



  


  


Finalmente, compile el proyecto y registre la librería en el GAC y a partir de este momento podrá utilizar esta actividad personalizada en los flujos para MOSS 2007 que desarrolle con Visual Studio 2008.


2 comentarios sobre “[VS 2008 -WWF- MOSS 2007] ¿Cómo crear actividades personalizadas?”

  1. Muy interesante tu ejemplo, pero no indicas como obtener el GUID del campo estado, por lo que el ejemplo está incompleto.

    Me he descargado tu código fuente y tampoco lo indicas. Espero que lo corrijas.

    Un saludo,

  2. Esta es la primera parte del artículo que se enfoca en como crear actividades básicas como una librería, no está incompleto, en un siguiente artículo indico como consumir este componente en el cual ya se le pasa el GUID para obtener el campo estado. En el workflow le debes pasar como parámetro lo siguiente: workflowProperties.TaskList.Fields[«Estado»].Id a la variable idCampoEstado. El cómo utilizar esta librería la puedes encontrar en los siguientes links: http://msmvps.com/blogs/ffagas/archive/2009/03/16/vs2008-wwf-moss-2007-191-c-243-mo-crear-tareas-paralelas-en-moss-2007-desde-visual-studio-2008.aspx o en http://geeks.ms/blogs/ffagas/archive/2009/03/16/vs2008-wwf-moss-2007-191-c-243-mo-crear-tareas-paralelas-en-moss-2007-desde-visual-studio-2008.aspx

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *