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à
- 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() );
- 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.