Ejecución de un microflujo que contiene un servicio de arranque no exclusivo

Se puede iniciar un microflujo mediante una actividad de recepción o de obtención. El servicio de arranque no es exclusivo si el microflujo se inicia con una actividad de obtención que tenga varias definiciones onMessage.

Si el microflujo implementa una operación de petición y respuesta, es decir, el proceso contiene una respuesta, puede utilizar el método call para ejecutar el proceso pasando el ID del servicio inicial en la llamada.

Si el microflujo es una operación unidireccional, utilice el método sendMessage para ejecutar el proceso. Este método no está cubierto en este ejemplo.

  1. Opcional: Liste las plantillas de proceso para encontrar el nombre del proceso que desea ejecutar.

    Este paso es opcional si ya sabe el nombre del proceso.

    ProcessTemplateData[] processTemplates = process.queryProcessTemplates
    ("PROCESS_TEMPLATE.EXECUTION_MODE.EXCECUTION_MODE_MICROFLOW",
     "PROCESS_TEMPLATE.NAME",
      new Integer(50),
      null);

    El resultado se clasifica por nombre. La consulta devuelve una matriz que contiene las 50 primeras plantillas clasificadas que se pueden iniciar como procesos de larga ejecución.

  2. Determinar el servicio de arranque al que se va a llamar.

    Este ejemplo utiliza la primera plantilla que se encuentra.

    ProcessTemplateData template = processTemplates[0];
    ActivityServiceTemplateData[] startActivities = 
            process.getStartActivities(template.getID());
  3. Iniciar el proceso con un mensaje de entrada del tipo adecuado.

    Cuando cree el mensaje, debe especificar el nombre del tipo de mensaje, para que contenga la definición del mensaje.

    ActivityServiceTemplateData activity = startActivities[0];
    //crear un mensaje para el servicio que se va a llamar
    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();
      //establecer las series del mensaje, por ejemplo, un nombre de cliente
      myMessage.setString("CustomerName", "Smith");
    }
    //ejecutar el proceso
    ClientObjectWrapper output = process.call(activity.getServiceTemplateID(),
                                              activity.getActivityTemplateID(),
                                              input);
    //comprobar la salida del proceso, por ejemplo, un número de pedido
    DataObject myOutput = null;
    if ( output.getObject() != null && output.getObject() instanceof DataObject )
    {
      myOutput  = (DataObject)output.getObject();
      int order = myOutput.getInt("OrderNo");}

    Esta acción crea una instancia de la plantilla de proceso, CustomerTemplate, y pasa algunos datos al cliente. La operación sólo devuelve resultados cuando el proceso se ha completado. Se devuelve el resultado del proceso, OrderNo, al proceso que efectúa la llamada.

Conceptos relacionados
Consultas sobre los objetos de procesos de empresa y relativos a tareas

Condiciones de uso |

Última actualización: Wed Apr 19 21:34:07 2006

(c) Copyright IBM Corporation 2005, 2006.
Este centro de información está basado en tecnología Eclipse (http://www.eclipse.org)