Cancelación de tareas de actividad en Amazon Simple Workflow Service - Amazon Simple Workflow Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cancelación de tareas de actividad en Amazon Simple Workflow Service

La cancelación de tareas de actividad permite al decisor finalizar las actividades que ya no sea necesario realizar. Amazon SWF utiliza un mecanismo de cancelación cooperativa y no interrumpe de manera forzada las tareas de actividad en ejecución. Debe programar sus procesos de trabajo de actividad para controlar las solicitudes de cancelación.

El decisor puede decidir cancelar una tarea de actividad mientras procesa una tarea de decisión. Para cancelar una tarea de actividad, el decisor usa la acción RespondDecisionTaskCompleted con la decisión RequestCancelActivityTask.

Si un proceso de trabajo de actividad no ha adquirido aún la tarea de actividad, el servicio cancelará la tarea. Tenga en cuenta que existe una posible condición de carrera en la que un proceso de trabajo de actividad podría adquirir la tarea en cualquier momento. Si la tarea ya se ha asignado a un proceso de trabajo de actividad, se solicitará a este que cancele la tarea.

En este ejemplo, se envía una señal a la ejecución de flujo de trabajo para cancelar el pedido.

https://swf.us-east-1.amazonaws.com SignalWorkflowExecution {"domain": "867530901", "workflowId": "20110927-T-1", "runId": "9ba33198-4b18-4792-9c15-7181fb3a8852", "signalName": "CancelOrder", "input": "order 3553"}

Si la ejecución del flujo de trabajo recibe la señal, Amazon SWF devolverá una respuesta HTTP correcta similar a la siguiente: Amazon SWF generará una tarea de decisión para informar al decisor de que procese la señal.

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

Cuando el decisor procese la tarea de decisión y vea la señal en el historial, intentará cancelar la actividad pendiente con el ID de actividad ShipOrderActivity0001. El evento de programación de tareas de actividad proporciona el ID de actividad en el historial del flujo de trabajo.

https://swf.us-east-1.amazonaws.com RespondDecisionTaskCompleted { "taskToken":"12342e17-80f6-FAKE-TASK-TOKEN32f0223", "decisions":[{ "decisionType":"RequestCancelActivityTask", "RequestCancelActivityTaskDecisionAttributes":{ "ActivityID":"ShipOrderActivity0001" } } ] }

Si Amazon SWF recibe correctamente la solicitud de cancelación, devuelve una respuesta HTTP correcta similar a la siguiente:

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96

El intento de cancelación se registra en el historial como el evento ActivityTaskCancelRequested.

Si la tarea se cancela correctamente (como lo indicaría un evento ActivityTaskCanceled), programe al decisor para que tome los pasos adecuados que deberían llevarse a cabo tras cancelar dicha tarea, como cerrar la ejecución del flujo de trabajo.

Si la tarea de actividad no se pudo cancelar (por ejemplo, debido a que la tarea se completó, experimentó algún error o se agotó el tiempo de espera en lugar de cancelarse), el decisor debería aceptar los resultados de la actividad o realizar cualquier limpieza o mitigación que necesite su caso de uso.

Si un proceso de trabajo de actividad ya ha adquirido la tarea de actividad, la solicitud de cancelación se transmite a través del mecanismo de latidos de tareas. Los procesos de trabajo de actividad pueden utilizar RecordActivityTaskHeartbeat periódicamente para informar a Amazon SWF de que la tarea sigue en curso.

Tenga en cuenta que no se requiere que los procesos de trabajo de actividad latan, aunque es recomendable para las tareas de ejecución prolongada. La cancelación de tareas requiere que se registre un latido periódico; si el proceso de trabajo no late, no se podrá cancelar la tarea.

Si el decisor solicita una cancelación de la tarea, Amazon SWF establecerá el valor del objeto cancelRequest en “true”. El objeto cancelRequest forma parte del objeto ActivityTaskStatus devuelto por el servicio en respuesta a RecordActivityTaskHeartbeat.

Amazon SWF no impide la realización correcta de una tarea de actividad cuya cancelación se hubiera solicitado; dependerá de la actividad determinar cómo controlar la solicitud de cancelación. Dependiendo de sus requisitos, programe el proceso de trabajo de actividad para cancelar la tarea de actividad o hacer caso omiso de la solicitud de cancelación.

Si desea que el proceso de trabajo de actividad indique la cancelación del trabajo para la tarea de actividad, prográmelo para que responda con RespondActivityTaskCanceled. Si desea que el proceso de trabajo de actividad complete la tarea, prográmelo para que responda con RespondActivityTaskCompleted estándar.

Cuando Amazon SWF reciba la solicitud RespondActivityTaskCompleted o RespondActivityTaskCanceled, actualizará el historial de ejecución del flujo de trabajo y programará una tarea de decisión para informar al decisor.

Programe el decisor para procesar la tarea de decisión y devolver cualquier decisión adicional. Si la tarea de actividad se cancela correctamente, programe el decisor para realizar las tareas necesarias para continuar o cerrar la ejecución de flujo de trabajo. Si la tarea de actividad no se ha cancelado correctamente, programe el decisor para aceptar los resultados, hacer caso omiso de los resultados o programar cualquier tarea de limpieza necesaria.