Un'attività di richiamo è associata a un componente SCA (Service Component Architecture). Quando l'attività viene avviata, richiama il componente SCA. Avviare un'attività di richiamo in maniera sincrona solo se il componente SCA associato può essere richiamato in modo sincrono.
Informazioni su questa attività
Tale componente SCA può, ad esempio, essere implementato come un microflusso o come una semplice classe Java™ .
Questo scenario crea un'istanza di un template attività e trasmette alcuni dati del cliente. L'attività rimane in esecuzione fino a quando non viene restituita l'operazione bidirezionale. Il risultato del task, OrderNo,, viene restituito al chiamante.
Procedura
- Facoltativo: elencare i modelli di attività per trovare il nome dell'attività di richiamo che si desidera eseguire.
Questo passo è facoltativo se si conosce già il nome dell'attività.
TaskTemplate[] taskTemplates = task.queryTaskTemplates
("TASK_TEMPL.KIND=TASK_TEMPL.KIND.KIND_ORIGINATING",
"TASK_TEMPL.NAME",
new Integer(50),
(TimeZone)null);
I risultati vengono ordinati per nome. La query restituisce un array contenente i primi 50 modelli di origine ordinati.
- Creare un messaggio di input del tipo appropriato.
Entity entity = (Entity) ers.getEntities().get(0);
// create a message for the selected task
ClientObjectWrapper input = task.createInputMessage(
entity.getAttributeValue("TKTID"));
DataObject myMessage = null ;
if ( input.getObject()!= null && input.getObject() instanceof DataObject )
{
myMessage = (DataObject)input.getObject();
//set the parts in the message, for example, a customer name
myMessage.setString("CustomerName", "Smith");
}
- Creare l'attività ed eseguirla in modo sincrono.
Perché un'attività venga eseguita in modo sincrono, deve essere un'operazione bidirezionale. L'esempio utilizza il metodo createAndCallTask per creare ed eseguire il task.
ClientObjectWrapper output = task.createAndCallTask( entity.getAttributeValue("NAME"),
entity.getAttributeValue("NAMESPACE"),
input);
- Analizzare il risultato dell'attività.
DataObject myOutput = null;
if ( output.getObject() != null && output.getObject() instanceof DataObject )
{
myOutput = (DataObject)output.getObject();
int order = myOutput.getInt("OrderNo");
}