Inicio de un proceso de larga ejecución que contiene un servicio de arranque que no es exclusivo

Un proceso de larga ejecución se puede iniciar mediante varias actividades de recepción o de obtención iniciales. Puede utilizar el método initiate para iniciar el proceso. Si el servicio de inicio no es exclusivo, por ejemplo, si el proceso se inicia con varias actividades de recepción o de obtención, o una actividad de obtencion que tiene varias definiciones onMessage, debe identificar el servicio al que se ha de llamar.
  1. Opcional: Listar las plantillas de proceso para encontrar el nombre del proceso que desea iniciar.

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

    ProcessTemplateData[] processTemplates = process.queryProcessTemplates
      ("PROCESS_TEMPLATE.EXECUTION_MODE.EXCECUTION_MODE_LONG_RUNNING",
       "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.
    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. Si especifica un nombre de instancia de proceso, no debe comenzar con el carácter de subrayado. Si no se ha especificado un nombre de instancia de proceso, se utiliza como nombre el ID de instancia de proceso (PIID) con formato de serie.

    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");
    }
    //iniciar el proceso
    PIID piid = process.initiate(activity.getServiceTemplateID(),
                                 activity.getActivityTemplateID(),
                                 null, 
                                 input);

    Esta acción crea una instancia y pasa algunos datos al cliente. Cuando se inicia el proceso, la operación devuelve el ID de objeto de la nueva instancia de proceso al proceso que efectúa la llamada.

    Se establece el iniciador de la instancia del proceso en el proceso que efectúa la llamada de la petición y recibe un elemento de trabajo para la instancia del proceso. Se determinan los administradores de procesos, los lectores y los editores de la instancia de proceso y reciben elementos de trabajo para dicha instancia de proceso. Se determinan las instancias de las actividades que siguen. Se inician automáticamente o, si son actividades de personal, de recepción o de obtención, se crean elementos de trabajo para los posibles propietarios.

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)