Avvio di un processo di lunga esecuzione contenente un servizio di avvio non univoco

Un processo di lunga esecuzione può essere avviato mediante più attività di ricezione o di selezione. È possibile utilizzare il metodo initiate per avviare il processo. Se il servizio di avvio non è univoco, ad esempio, se il processo viene avviato con più attività pick o receive oppure un'attività pick dispone di più definizioni onMessage, è necessario identificare il servizio da richiamare.

Procedura di questa attività

  1. Opzionale: Elencare le maschere del processo per trovare il nome del processo che si desidera avviare.

    Se si conosce già il nome del processo, questa operazione è facoltativa.

    ProcessTemplateData[] processTemplates = process.queryProcessTemplates
      ("PROCESS_TEMPLATE.EXECUTION_MODE =
           PROCESS_TEMPLATE.EXECUTION_MODE.EXCECUTION_MODE_LONG_RUNNING",
       "PROCESS_TEMPLATE.NAME",
        new Integer(50),
        (TimeZone)null); 
    I risultati vengono ordinati per nome. La query restituisce una matrice contenente le prime 50 maschere da avviare come processi di lunga esecuzione.
  2. Determinare il servizio di avvio da richiamare.
    ProcessTemplateData template = processTemplates[0];
    ActivityServiceTemplateData[] startActivities = 
            process.getStartActivities(template.getID());
  3. Avviare il processo con un messaggio di input del tipo appropriato.

    Quando si crea un messaggio, è necessario specificare il nome del tipo di messaggio, in modo che contenga la definizione del messaggio. Se si specifica un nome istanza di processo, questo non deve iniziare con un carattere di sottolineatura. Se non si specifica alcun nome dell'istanza di processo, si utilizza il PIID (Process Instance ID) in formato stringa.

    ActivityServiceTemplateData activity = startActivities[0];
    // creare un messaggio per il servizio da richiamare
    ClientObjectWrapper input = process.createMessage
                                (activity.getServiceTemplateID(),
                                 activity.getActivityTemplateID(),
                                 activity.getInputMessageTypeName()); 
    DataObject myMessage = null;
    if ( input.getObject()!= null && input.getObject() instanceof DataObject )
    {
      myMessage = (DataObject)input.getObject();
      //impostare le stringhe nel messaggio, ad esempio, un nome cliente
      myMessage.setString("CustomerName", "Smith");
    }
    //avviare il processo
    PIID piid = process.sendMessage(activity.getServiceTemplateID(),
                                 activity.getActivityTemplateID(),
                                 input); 

    Questa azione crea un'istanza ed inoltra alcuni dati del cliente. All'avvio del processo, l'operazione restituisce al chiamante l'ID oggetto della nuova istanza di processo.

    L'avvio dell'istanza di processo è impostato sul chiamante della richiesta e riceve un elemento di lavoro per l'istanza stessa. Vengono stabiliti gli amministratori del processo, i lettori e gli editor dell'istanza di processo e questi ricevono gli elementi di lavoro per l'istanza stessa. Vengono stabilite le istanze dell'attività follow-on. Queste vengono avviate automaticamente o, nel caso in cui si tratti di attività staff, di ricezione o di selezione, vengono creati gli elementi di lavoro per i potenziali proprietari.

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)