Geeks•ms
Todo lo que los geeks de Windows y .Net tienen que contar
Juega a la Cura, código de registro: laresistencia
[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.


Enviado 8/8/2008 11:11 por Francisco Fagas
Comparte este post:

Comentarios

Pedro López-Belmonte escrito re: [VS 2008 -WWF- MOSS 2007] ¿Cómo crear actividades personalizadas?
en 26/3/2009 10:37

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,

Francisco Fagas escrito re: [VS 2008 -WWF- MOSS 2007] ¿Cómo crear actividades personalizadas?
en 31/3/2009 1:45

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: msmvps.com/.../vs2008-wwf-moss-2007-191-c-243-mo-crear-tareas-paralelas-en-moss-2007-desde-visual-studio-2008.aspx o en  geeks.ms/.../vs2008-wwf-moss-2007-191-c-243-mo-crear-tareas-paralelas-en-moss-2007-desde-visual-studio-2008.aspx

Juega a la Cura, código de registro: laresistencia