Reintento de la ejecución de una actividad detenida

Si durante una actividad de un proceso de larga ejecución se produce un error no capturado en el ámbito que la circunda y si la plantilla de la actividad asociada especifica que la actividad se detenga cuando se produzca un error, la actividad se pasa al estado de detenida para que se pueda reparar. Puede intentar la ejecución de la actividad otra vez.

Puede establecer las variables que utiliza la actividad. A excepción de las actividades de script, también puede pasar parámetros en la llamada force-retry como, por ejemplo, el mensaje que esperaba la actividad.

  1. Listar las actividades detenidas.
    QueryResultSet result =
          process.query("DISTINCT ACTIVITY.AIID",
                        "ACTIVITY.STATE = ACTIVITY.STATE.STATE_STOPPED AND
                         PROCESS_INSTANCE.NAME='CustomerOrder'",
                         null, null, null);

    Esta acción devuelve las actividades detenidas para la instancia de proceso CustomerOrder.

  2. Reintentar la ejecución de la actividad, por ejemplo, una actividad de personal detenida.
    if (result.size() > 0)
    {
      	result.first();
      	AIID aiid = (AIID) result.getOID(1);
      ActivityInstanceData activity = process.getActivityInstance(aiid);
      ClientObjectWrapper input =
            process.createMessage(aiid, activity.getOutputMessageTypeName());
      DataObject myMessage = null;
      if ( input.getObject()!= null && input.getObject() instanceof DataObject )
        {
          myMessage = (DataObject)input.getObject();
          // establecer las series del mensaje, por ejemplo, se va a realizar un pedido de chocolate
          myMessage.setString("OrderNo", "chocolate");
        }
    
       boolean continueOnError = true;
       process.forceRetry(aiid, input, continueOnError); 
    }

    Esta acción reintenta la actividad. Si se produce un error, el parámetro continueOnError determina la acción que se realizará si se produce un error durante el proceso de la petición forceRetry.

    En el ejemplo, el valor de continueOnError es true. Esto significa que si se produce un error durante el proceso de la petición forceRetry, la actividad se pasa a estado de ejecución errónea. El error se propaga a los ámbitos que circundan la actividad hasta que se maneja o hasta que se alcanza el ámbito del proceso. A continuación, el proceso se pone en estado de ejecución errónea hasta que finalmente pasa a estado erróneo.

Conceptos relacionados
Consultas sobre los objetos de procesos de empresa y relativos a tareas

Condiciones de uso |

Última actualización: Wed Apr 19 21:34:07 2006

(c) Copyright IBM Corporation 2005, 2006.
Este centro de información está basado en tecnología Eclipse (http://www.eclipse.org)