启动包含非唯一启动服务的长期流程

执行本任务的原因和时间

可以通过多个启动接收活动或检取活动来启动长期流程。可以使用 initiate 方法来启动流程。如果启动服务不是唯一的(例如,流程是通过多个服务或检取活动启动的,或者检取活动有多个 onMessage 定义),则必须标识要调用的服务。

本任务的步骤

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

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

    ProcessTemplateData[] processTemplates = process.queryProcessTemplates
      ("PROCESS_TEMPLATE.EXECUTION_MODE =
           PROCESS_TEMPLATE.EXECUTION_MODE.EXCECUTION_MODE_LONG_RUNNING",
       "PROCESS_TEMPLATE.NAME",
        new Integer(50),
        null);
    结果将按名称排序。此查询将返回一个数组,该数组包含前 50 个可以作为长期流程启动的模板(已排序)。
  2. 确定要调用的启动服务。
    ProcessTemplateData template = processTemplates[0];
    ActivityServiceTemplateData[] startActivities = 
            process.getStartActivities(template.getID());
  3. 使用适当类型的输入消息来启动流程。

    创建消息时,必须指定其消息类型名,以便包含消息定义。如果指定流程实例名,则该名称不能以下划线开头。如果未指定流程实例名,则将使用字符串格式的流程实例标识(PIID)作为名称。

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

    此操作创建实例并传递一些客户数据。当该流程启动时,执行的操作将把新流程实例的对象标识返回给调用者。

    该流程实例的启动者将被设置为该请求的调用者,它将接收该流程实例的工作项。将确定该流程实例的流程管理员、阅读者和编辑者,他们将接收该流程实例的工作项。将确定后续活动实例。这些后续活动实例将自动启动,或者,如果它们是人员、接收活动或检取活动,就会为潜在所有者创建工作项。

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

使用条款 |


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