Las tareas de origen que invocan una interfaz síncrona incluyen
tareas de origen en línea en un microflujo, tareas de origen autónomas en un
microflujo y tareas de origen que inician, por ejemplo, una clase Java simple.
Este escenario crea una instancia de una plantilla de tarea y pasa
algunos datos de cliente.
La tarea permanece en estado de ejecución hasta que se devuelve la operación
bidireccional.
El resultado de la tarea, OrderNo, se devuelve al llamante.
- Opcional: Liste las plantillas de tarea para encontrar
el nombre de la tarea originadora que desea ejecutar.
Este paso es opcional si ya conoce el nombre de la tarea.
TaskTemplate[] taskTemplates = task.queryTaskTemplates
("TASK_TEMPL.KIND=TASK_TEMPL.KIND.KIND_ORIGINATING",
"TASK_TEMPL.NAME",
new Integer(50),
null);
El resultado se clasifica por nombre.
La consulta devuelve una matriz que contiene las 50 primeras plantillas
originadoras clasificadas.
- Cree un mensaje de entrada del tipo adecuado.
TaskTemplate template = taskTemplates[0];
// crear un mensaje para la tarea seleccionada
ClientObjectWrapper input = task.createInputMessage( template.getID());
DataObject myMessage = null ;
if ( input.getObject()!= null && input.getObject() instanceof DataObject )
{
myMessage = (DataObject)input.getObject();
//establecer las partes del mensaje, por ejemplo, un nombre de cliente
myMessage.setString("CustomerName", "Smith");
}
- Cree la tarea y ejecútela de forma síncrona.
Para que una tarea se ejecute de forma síncrona, debe ser una
operación bidireccional.
El ejemplo utiliza el método createAndCallTask para crear y ejecutar la tarea.
ClientObjectWrapper output = task.createAndCallTask( template.getName(),
template.getNamespace(),
input);
- Analice el resultado de la tarea.
DataObject myOutput = null;
if ( output.getObject() != null && output.getObject() instanceof DataObject )
{
myOutput = (DataObject)output.getObject();
int order = myOutput.getInt("OrderNo");}