运行包含非唯一启动服务的微流程

微流程可以由接收活动或检取活动启动。如果微流程由带有多个 onMessage 定义的检取活动启动,则启动服务不是唯一的。

执行本任务的原因和时间

如果微流程实现了“请求-响应”操作(即,该流程包含应答),则可使用 call 方法来运行该流程并在进行调用时传递启动服务的标识。

如果微流程是单向操作,请使用 sendMessage 方法来运行该流程。本示例未阐述此方法。

本任务的步骤

  1. 可选: 列示流程模板以查找所要运行的流程的名称。

    如果您已知道该流程的名称,则此步骤是可选的。

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

    结果将按名称排序。此查询将返回一个数组,该数组包含前 50 个可以作为微流程启动的模板(已排序)。

  2. 确定要调用的启动服务。

    本示例使用找到的第一个模板。

    ProcessTemplateData template = processTemplates[0];
    ActivityServiceTemplateData[] startActivities = 
            process.getStartActivities(template.getID());
  3. 使用适当类型的输入消息来启动流程。

    创建消息时,必须指定其消息类型名,以便包含消息定义。

    ActivityServiceTemplateData activity = startActivities[0];
    //create a message for the service to be called
    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();
      //set the strings in the message, for example, a customer name
      myMessage.setString("CustomerName", "Smith");
    }
    //run the process
    ClientObjectWrapper output = process.call(activity.getServiceTemplateID(),
                                              activity.getActivityTemplateID(),
                                              input); 
    //check the output of the process, for example, an order number 
    DataObject myOutput = null;
    if ( output.getObject() != null && output.getObject() instanceof DataObject )
    {
      myOutput  = (DataObject)output.getObject();
      int order = myOutput.getInt("OrderNo");
    }

    此操作创建流程模板 CustomerTemplate 的实例并传递一些客户数据。仅当该流程完成后,此操作才会返回。将把该流程的结果(OrderNo)返回给调用者。

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

使用条款 |


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