Ripetizione dell'esecuzione di un'attività arrestata

Perché e quando effettuare questa attività

Se un'attività in un processo di lunga esecuzione rileva un errore nell'ambito associato e se la maschera di attività associata specifica che l'attività si arresta al verificarsi di un errore, l'attività viene collocata in stato di arresto in modo da poter essere ripristinata. È possibile ripetere l'esecuzione dell'attività.

È possibile impostare delle variabili utilizzate dall'attività. Ad eccezione delle attività di script, è possibile anche inoltrare i parametri alla chiamata su cui è stato forzato il completamento, ad esempio il messaggio previsto dall'attività.

Procedura di questa attività

  1. Elencare le attività arrestate.
    QueryResultSet result = 
          process.query("DISTINCT ACTIVITY.AIID",
                        "ACTIVITY.STATE = ACTIVITY.STATE.STATE_STOPPED AND 
                         PROCESS_INSTANCE.NAME='CustomerOrder'",
                         (String)null, (Integer)null, (TimeZone)null);

    Questa operazione restituisce le attività arrestate per l'istanza del processo CustomerOrder.

  2. Riprovare l'esecuzione dell'attività, ad esempio, un'attività di staff terminata.
    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();
          //impostare le stringhe nel messaggio, ad esempio, ordinare della cioccolata
          myMessage.setString("OrderNo", "chocolate");
        }
    
       boolean continueOnError = true;
       process.forceRetry(aiid, input, continueOnError); 
    }

    Questa operazione consente di ripetere l'attività. Se si verifica un errore, il parametro continueOnError determina l'azione da eseguire se si verifica un errore durante l'elaborazione della richiesta forceRetry.

    Nell'esempio, continueOnError è true. Questo indica che se si verifica un errore durante l'elaborazione della richiesta forceRetry, l'attività viene collocata nello stato di errore. L'errore viene propagato agli ambiti associati dell'attività fino a quando non viene gestito o non si raggiunge l'ambito del processo. In seguito, il processo viene messo in stato di errore e, infine, raggiunge lo stato di errore.

Concetti correlati
Query sugli oggetti del processo aziendale e relativi alle attività

(c) Copyright IBM Corporation 2005, 2006.
This information center is powered by Eclipse technology (http://www.eclipse.org)