Gestione degli eventi

Un processo aziendale completo e ciascuno dei relativi ambiti può essere associato ai gestori eventi richiamati se si verificano eventi associati. I gestori eventi sono simili per ricevere attività pick o receive, poiché un processo può fornire le operazioni dei servizi web utilizzando i gestori eventi.

Perché e quando effettuare questa attività

È possibile richiamare un gestore eventi tutte le volte in cui è in esecuzione l'ambito corrispondente. Inoltre, più istanze di un gestore eventi possono essere attivate simultaneamente.

Il seguente frammento del codice illustra il modo in cui ottenere i gestori eventi attivi per una determinata istanza di processo e il modo in cui inviare un messaggio di input.

Procedura di questa attività

  1. Determinare i dati dell'ID dell'istanza del processo ed elencare il gestore eventi attivo per il processo.
    ProcessInstanceData processInstance = 
           process.getProcessInstance( "CustomerOrder2711");
    EventHandlerTemplateData[] events = process.getActiveEventHandlers(
                                          processInstance.getID() );
  2. Inviare il messaggio di input.

    eventi che viene trovato.

    EventHandlerTemplateData event = null;
    if ( events.length > 0 )
    {
        event = events[0];
    
        // creare un messaggio per il servizio da richiamare
        ClientObjectWrapper input = process.createMessage(
        event.getID(), event.getInputMessageTypeName());
                 
        if (input.getObject() != null && input.getObject() instanceof DataObject )
        {
          	DataObject inputMessage = (DataObject)input.getObject();
           // impostare il contenuto del messaggio, ad esempio, un nome cliente,
    il numero di ordine                              
           inputMessage.setString("CustomerName", "Smith");
           inputMessage.setString("OrderNo", "2711");
         
    	       // inviare il messaggio
           process.sendMessage( event.getProcessTemplateName(),
                                event.getPortTypeNamespace(),
                                event.getPortTypeName(),
                                event.getOperationName(),
    				 input );
         }
     }

    Questa azione invia il messaggio specificato al gestore eventi attivo per il processo.


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