非固有の開始サービスを含む microflow の実行

microflow は、receive アクティビティーまたは pick アクティビティーから開始できます。 microflow が複数の onMessage 定義を含む pick アクティビティーを使用して開始された場合、開始サービスは固有ではありません。

このタスクを実行する理由と実行時期

microflow によって要求/応答操作がインプリメントされている場合、つまり、プロセスに応答が入っている場合、call メソッドを使用してそのプロセスを実行し、その呼び出しで開始サービスの ID を渡すことができます。

microflow が片方向操作である場合は、sendMessage メソッドを使用してプロセスを実行します。 このメソッドは、次の例には含まれていません。

このタスクのステップ

  1. オプション: プロセス・ テンプレートをリストして、実行するプロセスの名前を探します。

    プロセスの名前が既に分かっている場合、このステップはオプションです。

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

    結果は名前でソート されます。microflow として開始できるソート済みテンプレートのうちの最初の 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. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。