处理事件

执行本任务的原因和时间

整个业务流程及其每个作用域都可以有相关联的事件处理程序,当相关联的事件发生时,就会调用那些事件处理程序。就流程可以使用事件处理程序来提供 Web service 操作而言,事件处理程序与接收活动或检取活动类似。只要相应的作用域处于运行状态,就可以多次调用事件处理程序。并且,可以同时激活事件处理程序的多个实例。

以下代码段说明如何获取给定流程实例的活动事件处理程序以及如何发送输入消息。

本任务的步骤

  1. 确定流程实例标识的数据并列示该流程的活动事件处理程序。
    ProcessInstanceData processInstance = 
           process.getProcessInstance( "CustomerOrder2711");
    EventHandlerTemplateData[] events = process.getActiveEventHandlers(
                                          processInstance.getID() );
  2. 发送输入消息。

    本示例使用找到的第一个事件处理程序。

    EventHandlerTemplateData event = null;
    if ( events.length > 0 )
    {
        event = events[0];
    
        // create a message for the service to be called
        ClientObjectWrapper input = process.createMessage(
        event.getID(), event.getInputMessageTypeName());
                 
        if (input.getObject() != null && input.getObject() instanceof DataObject )
        {
          	DataObject inputMessage = (DataObject)input.getObject();
           // set content of the message, for example, a customer name, order number                              
           inputMessage.setString("CustomerName", "Smith");
           inputMessage.setString("OrderNo", "2711");
         
    	       // send the message
           process.sendMessage( event.getProcessTemplateName(),
                                event.getPortTypeNamespace(),
                                event.getPortTypeName(),
                                event.getOperationName(),
    				 input );
         }
     }

    此操作将指定的消息发送至流程的活动事件处理程序。


使用条款 |


(c) Copyright IBM Corporation 2005, 2006.
本信息中心基于 Eclipse 技术(http://www.eclipse.org)。