Elaborazione di un flusso di lavoro di una sola persona

Alcuni flussi di lavoro vengono eseguiti da una sola persona, ad esempio, ordinare libri da una libreria in linea. Questo tipo di flusso di lavoro non dispone di percorsi paralleli. L'API completeAndClaimSuccessor supporta l'elaborazione di questo tipo di flusso di lavoro.

Perché e quando effettuare questa attività

In una libreria in linea, l'acquirente completa una sequenza di azioni per ordinare un libro. Questa sequenza di azioni può essere implementata come serie di attività staff (attività participanti). Se l'acquirente decide di ordinare più libri, questa operazione equivale a richiedere l'attività staff successiva. Questo tipo di flusso di lavoro è anche noto come flusso pagina poiché le definizioni dell'interfaccia utente vengono associate alle attività per controllare il flusso delle finestre di dialogo nell'interfaccia utente.

L'API completeAndClaimSuccessor completa un'attività staff e richiede quella successiva nella stessa istanza di processo per la persona collegata. Restituisce le informazioni sull'attività successiva richiesta, incluso il messaggio di input su cui lavorare. Poiché l'attività successiva è resa disponibile nella stessa trandazione dell'attività completata, i limiti transazionali devono essere impostati nel modello di processo su participates.

Procedura di questa attività

  1. Richiedere la prima attività nella sequenza delle attività.
    //
    //Eseguire la query dell'elenco delle attività che è possibile
    //richiedere dall'utente collegato
    //
    QueryResultSet result = 
         process.query("ACTIVITY.AIID", 
                       "PROCESS_INSTANCE.NAME = 'CustomerOrder' AND 
                        ACTIVITY.STATE = ACTIVITY.STATE.STATE_READY AND
                        ACTIVITY.KIND = ACTIVITY.KIND.KIND_STAFF AND
                        WORK_ITEM.REASON = 
                             WORK_ITEM.REASON.REASON_POTENTIAL_OWNER",
                        (String)null, (Integer)null, (TimeZone)null); 
    ...
    //
    //Richiedere la prima attività
    //
    if (result.size() > 0)
    {
    	result.first();
    	AIID aiid = (AIID) result.getOID(1);
    	ClientObjectWrapper input = process.claim(aiid);
    	DataObject activityInput = null ;
      if ( input.getObject()!= null && input.getObject() instanceof DataObject )
      {
        activityInput = (DataObject)input.getObject();
        // leggere i valori
        ...
      }  
    }
    Una volta richiesta l'attività, viene restituito il messaggio di input dell'attività stessa.
  2. Una volta terminato il lavoro sull'attività, completare l'attività e richiedere l'attività successiva.

    Per completare l'attività, viene inoltrato un messaggio di output. Durante la creazione del messaggio di output, è necessario specificare il nome del tipo di messaggio in modo che contenga la definizione del messaggio.

    ActivityInstanceData activity = process.getActivityInstance(aiid);
    ClientObjectWrapper output = 
          process.createMessage(aiid, activity.getOutputMessageTypeName());
    DataObject myMessage = null ;
    if ( output.getObject()!= null && output.getObject() instanceof DataObject )
    {
      myMessage = (DataObject)output.getObject();
      //impostare le parti nel messaggio, ad esempio, un numero di ordine
      myMessage.setInt("OrderNo", 4711);
    }
    
    //completare l'attività e richiedere quella successiva
    CompleteAndClaimSuccessorResult successor = process.completeAndClaimSuccessor(aiid, output);
    Questa sezione imposta un messaggio di output che contiene il numero dell'elemento e richiede l'attività successiva nella sequenza. Se AutoClaim viene impostato per l'attività successore, come attività successiva viene restituita un'attività casuale. Se non vi sono altre attività successori che possono essere assegnate a questo utente, viene restituito Null. Se AutoClaim viene impostato per attività successori e vi sono più percorsi che possono essere seguiti, vengono richiamate tutte le attività successori, e come attività successiva viene restituita un'attività casuale.

    Se il processo contiene percorsi paralleli che possono essere seguiti e tali percorsi contengono attività staff per cui l'utente collegato è potenziale proprietario di più di un'attività, viene richiamata automaticamente un'attività casuale che viene restituita come attività successiva.

  3. Lavorare sull'attività successiva.
    String name = successor.getActivityName();
    
    ClientObjectWrapper nextInput = successor.getInputMessage();
    if ( nextInput.getObject()!= null && nextInput.getObject() instanceof DataObject )
    {
      activityInput = (DataObject)input.getObject();
      // leggere i valori
      ...
    }  
  4. Continuare con il passo 2 per completare l'attività.

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