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

执行本任务的原因和时间

如果启动服务是唯一的,则可使用 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);

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

  2. 使用适当类型的输入消息来启动流程。

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

    ProcessTemplateData template = processTemplates[0];
    //create a message for the single starting receive activity
    ClientObjectWrapper input = process.createMessage
                                (template.getID(),
                                template.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(template.getName(), "CustomerOrder", input);

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

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

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

使用条款 |


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