Manejo de Errores en los WorkFlow en Sharepoint 2007

El último artículo que escribimos vimos como podemos colocar un formulario ASPX para el manejo de una tarea. Ahora vamos hablar como podemos manejar los errores que se produzcan en nuestro WorkFlow, atrapar los mismos y manejar el error.
Para el manejo de errores contamos con una sección dentro de nuestros WorkFlow, donde podemos encontrar una actividad llamada “FaultHandlersActivity” la cual nos permitirá únicamente colocar actividades “FaultHandler”. Como podemos ver en la imagen 1 para acceder a la sección de manejo de errores podemos hacerlo a través de dos lugares, en la parte inferior contamos con tres iconos o presionando el botón derecho sobre el WorkFlow podemos acceder a la sección llamada “Workflow Exceptions”.

[Imagen 1]

1_Acceso_Manejo_Errores

Una vez que seleccionamos la opción “Ver manejo de Errores (View Fault Handlres)”  accedemos a la sección donde podemos manejar los errores en nuestro WorkFlow como se puede ver en la imagen 2.

[Imagen 2]

2_Manejo_Errores

En esta sección lo que debemos hacer es colocar actividades “FaultHandler” tanta como errores queramos manejar. Funciona de la misma forma que  la sentencia Catch del bloque Try donde podemos colocar tanos Catch como tipos de errores queremos manejar. Para ello lo que debemos hacer es arrastrar una actividad “FaulgHandler” desde la barra de herramientas y colocarla en la actividad “FaultHandlersActivity” correspondiente.  Una vez colocada la actividad lo próximo que vamos hacer es configurar la propiedad “FaultType” donde vamos a cargar que tipo de error vamos a estar atrapando con la activad que acabamos de colocar. Acá podemos escribir la excepción que deseamos manejar con su namespace complete “System.Exception” o presionamos el botón que se encuentra en la propiedad para que se nos despliegue una nueva ventana como se puede ver en la imagen 3 para seleccionar el tipo de error que queremos manejar de todos nuestros posibles errores.

[Imagen 3]

3_Excepciones

Una vez asociado el tipo de error que queremos manejar lo próximo que vamos hacer es colocar el código necesario para poder manejarlo. Para esto debemos seleccionar la actividad “” recién configurada, presionamos el botón derecho sobre la misma y seleccionamos la opción “Promover la propiedad (Promote Bindible Properties)” esto nos colocara una propiedad en nuestro WorkFlow donde podremos acceder a los valores de la misma tal cual lo hacemos en una excepción dentro del bloque Catch. Lo próximo que haremos es colocar una actividad de código “codeActivity” que es donde estaremos sacando todos los valores del error y cargándolos en una propiedad para mostrarla en la pantalla de resumen del WorkFlow dentro de Sharepoint.  También vamos a colocar una actividad “LogToHistoryListActivity” para mostrar el error. Nuestro manejo de errores deberá quedar configurado como se puede ver en la imagen 4.

[Imagen 4]

4_Propiedades

Lo próximo que vamos hacer es configurar la actividad “LogToHistoryListActivity” para lo cual vamos a crear una propiedad pública del tipo String para cargarla en la misma. Para lo cual accedemos a la propiedad de dicha actividad y cargamos la propiedad “HistorryOutcome” con la propiedad recién cargada.

Bien una vez configurada todas las actividades vamos a programar el evento de nuestra actividad de código, para lo cual accedemos a la actividad, vamos a la sección de evento y damos doble click sobre el evento “ExecuteCode”. En la sección 1 podemos ver el código correspondiente para esta actividad donde extraemos los valores del error  y los cargamos en la propiedad pública que se estará mostrando en la actividad “LogToHistoryListActivity”

[Sección 1]

private void codeActivityHandleError_ExecuteCode(object sender, EventArgs e)
{
mError = faultHandlerException_Fault1.Message + " ----> " + faultHandlerException_Fault1.Source;
}

Bien vale la pena destacar también que en algunas actividades como por ejemplo “WhileActivity” podemos poner un manejo personalizado de error para la misma. Para ello, simplemente tenemos que seleccionar la actividad y acceder al menú contextual de propiedades presionando el botón derecho. Una vez en el menú seleccionamos la opción “View Fault Handlres” a lo cual se nos colocara una actividad “FaultHandlersActivity” donde podremos hacer el mismo manejo descripto anteriormente pero esta vez solo para esta actividad. En la imagen 5 vemos como queda esta opción activada dentro de la actividad WhileActivity.

[Imagen 5]

5_WhileException

Una vez que se produzca un error en nuestro WorkFlow lo veremos en la pantalla del WorkFlow Status correspondiente a la instancia que estamos corriendo.

Fabián Imaz

Siderys Elite Software

Compartir