向处于“正在等待”状态的活动发送消息

执行本任务的原因和时间

检取活动(也称为接收选项活动)和接收活动可以用来使运行中的流程与“外部世界”的事件同步。例如,接收客户发送的电子邮件以响应信息请求就是这样的事件。

本任务的步骤

  1. 列示正在等待已登录用户的消息的活动服务模板。
    QueryResultSet result = 
       process.query("ACTIVITY_SERVICE.VTID,ACTIVITY.ATID", 
                     "ACTIVITY.STATE=ACTIVITY.STATE.STATE_WAITING AND
                      ACTIVITY_SERVICE.PORT_TYPE='Confectionery' AND
                      ACTIVITY_SERVICE.OPERATION='OrderRequest' AND
                      WORK_ITEM.REASON=WORK_ITEM.REASON.REASON_POTENTIAL_OWNER",
                      null, null, null); 
  2. 发送消息。

    调用者必须是接收消息的活动的潜在所有者,也可以是流程实例的管理员。

    if ( result.size() > 0 )
    {
      result.first();
      VTID vtid = (VTID)result.getOID(1);
      ATID atid = (ATID)result.getOID(2); 
      ActivityServiceTemplateData activity = 
              process.getActivityServiceTemplate(vtid,atid);
    
      // create a message for the service to be called
      ClientObjectWrapper message = 
            process.createMessage(vtid,atid,activity.getInputMessageTypeName()); 
      DataObject myMessage = null;
      if ( message.getObject()!= null && message.getObject() instanceof DataObject )
      {
        myMessage = (DataObject)message.getObject();
        //set the strings in the message, for example, chocolate is to be ordered
        myMessage.setString("Order", "chocolate");
      }
    
      // send the message to the waiting activity 
      process.sendMessage(vtid, atid, message);  
    }

    此操作将指定的消息发送至处于“正在等待”状态的活动服务并传递一些订单数据。

    您还可以指定流程实例标识以确保将该消息发送至指定的流程实例。如果未指定流程实例标识,就会将该消息发送至活动服务和由该消息中的关联值标识的流程实例。如果指定了流程实例标识,就会对使用关联值找到的流程实例进行检查,以确保它具有指定的流程实例标识。

相关概念
对业务流程以及与任务相关的对象执行的查询

使用条款 |


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