Esecuzione di un microflusso contenente un servizio di avvio non univoco

Un microflusso può essere avviato da un'attività di ricezione o di selezione. Il servizio di avvio non è univoco se il microflusso viene avviato con un'attività pick con più definizioni onMessage.

Perché e quando effettuare questa attività

Se il microflusso implementa un'operazione richiesta-risposta, ovvero se il processo contiene una risposta, è possibile utilizzare il metodo di richiamo per eseguire il processo inoltrando l'ID del servizio di avvio nella chiamata.

Se il microflusso è un'operazione di sola andata, utilizzare il metodo sendMessage per eseguire il processo. Questo metodo non è illustrato nell'esempio.

Procedura di questa attività

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

    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_MICROFLOW",
     "PROCESS_TEMPLATE.NAME",
      new Integer(50),
      (TimeZone)null);

    I risultati vengono ordinati per nome. La query riporta una matrice contenente le prime 50 maschere memorizzate da avviare come microflussi.

  2. Determinare il servizio di avvio da richiamare.

    Questo esempio utilizza la prima maschera che viene trovata.

    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.

    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");
    }
    //eseguire il processo
    ClientObjectWrapper output = process.call(activity.getServiceTemplateID(),
                                              activity.getActivityTemplateID(),
                                              input); 
    //verificare l'output del processo, ad esempio, un numero di ordine 
    DataObject myOutput = null;
    if ( output.getObject() != null && output.getObject() instanceof DataObject )
    {
      myOutput  = (DataObject)output.getObject();
      int order = myOutput.getInt("OrderNo");
    }

    Questa operazione crea un'istanza della maschera del processo, CustomerTemplate, e invia alcuni dati del cliente. L'operazione prevede restituzioni solo quando il processo è completo. Il risultato del processo, OrderNo, viene restituito al chiamante.

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)