Compartir a través de


Control del error en flujos de trabajo

El control de errores en Windows Workflow Foundation hace referencia al control de excepciones de una manera asincrónica. Esto significa que el motor de tiempo de ejecución de flujo de trabajo detecta las excepciones producidas en una actividad (explícita o implícitamente) y, a continuación, se programan en una cola para ser administradas más tarde. Esto difiere del control de excepciones normal en que si se produce una excepción en un bloque try, el bloque catch exception adecuado lo detecta o se devuelve inmediatamente al usuario.

Causas de excepciones

En un flujo de trabajo, las excepciones se pueden generar de las maneras siguientes:

  • Un tiempo de espera de transacciones en TransactionScopeActivity o CompensatableTransactionScopeActivity.

  • Una excepción explícita iniciada por el flujo de trabajo mediante la actividad ThrowActivity. Para obtener más información, consulte Uso de la actividad ThrowActivity.

  • Una excepción .NET Framework iniciada desde los controladores de la actividad de código o código lateral de actividades personalizadas.

  • Una excepción iniciada desde el código externo, como bibliotecas o componentes que se usan en el flujo de trabajo.

Detección de excepciones

En el control de errores, si la actividad que produce la excepción no la puede administrar, la excepción se transfiere a su actividad primaria para la resolución. La excepción se transfiere a la jerarquía del flujo de trabajo hasta que se administre o el motor de tiempo de ejecución de flujo de trabajo finalice la instancia de flujo de trabajo.

La actividad FaultHandlerActivity administra la excepción. Cada actividad FaultHandlerActivity está asociada al tipo de excepción .NET Framework y además contiene un conjunto de actividades que se ejecutan si la excepción iniciada coincide con el tipo de excepción. Una actividad FaultHandlerActivity está alojada en una actividad FaultHandlersActivity que contiene 0-n actividades FaultHandlerActivity. La actividad FaultHandlersActivity puede ser una actividad secundaria de cualquier actividad compuesta.

El objetivo del control de errores en Windows Workflow Foundation es deshacer el trabajo parcial e incorrecto de una actividad en la que se ha producido una excepción. La realización de la actividad FaultHandlerActivity nunca está considerada una realización correcta de su actividad asociada. Esto significa que mientras se ejecute la actividad FaultHandlerActivity, la actividad que produjo la excepción se coloca en un estado de error. Cuando la actividad FaultHandlerActivity se ha completado, la actividad asociada se coloca en el estado cerrado. Además, cualquier actividad relacionada de la actividad asociada, como otros elementos secundarios de una actividad ParallelActivity, pasan a un estado de cancelado, y después al estado cerrado. Nunca se les da la oportunidad de ejecutarse correctamente.

Control de errores contra compensación

La diferencia entre el control de errores y la compensación es que la compensación sólo se puede realizar en una actividad que se ha completado correctamente, no en una que ha producido una excepción y está en un estado de error; sin embargo, la actividad CompensateActivity se puede ejecutar dentro de una actividad FaultHandlerActivity que está asociada a una actividad que ha producido una excepción. Por ejemplo, un escenario típico de control de compensación sería cuando una actividad se completa correctamente, pero se produce más tarde una excepción en otra actividad en el flujo de trabajo. El controlador de errores para esa actividad contiene una CompensateActivity que invierte cualquier acción realizada previamente en el flujo de trabajo. Para ampliar esto más, podría reembolsar el dinero a un cliente después de que se haya producido más tarde una DiscontinuedException en el flujo de trabajo por otra actividad.

Para obtener más información acerca del control de errores, consulte Uso de la actividad FaultHandlerActivity y Uso de la actividad ThrowActivity.

Para obtener más información acerca del control de la compensación, consulte Uso de la actividad CompensateActivity.

Consulte también

Referencia

ThrowActivity

Conceptos

Uso de la actividad FaultHandlerActivity
Uso de la actividad ThrowActivity

Otros recursos

Desarrollo de flujos de trabajo

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.