停止されたアクティビティーの再試行

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

長期実行プロセスのアクティビティー に、囲んでいるスコープ内で catch され ていない障害が発生した場合、関連した アクティビティー・テンプレートが、エラー発生時 にアクティビティーの停止を指定しているときは、 アクティビティーは停止状態になり、修復することが できます。アクティビティーの実行を再試行することが できます。

アクティビティーが使用する変数を設定 することができます。 また、script アクティビティーの例外と共に、 アクティビティーが予想したメッセージなど、強制再試行 呼び出しのパラメーターを渡すこともできます。

このタスクのステップ

  1. 停止アクティビティーをリストします。
    QueryResultSet result =
          process.query("DISTINCT ACTIVITY.AIID",
                        "ACTIVITY.STATE = ACTIVITY.STATE.STATE_STOPPED AND
                         PROCESS_INSTANCE.NAME='CustomerOrder'",
                         (String)null, (Integer)null, (TimeZone)null);

    このアクションは、 CustomerOrder プロセス・インスタンスに対して停止 アクティビティーを戻します。

  2. 例えば、停止したスタッフ・アクティビティーなどのアクティビティーの実行を再試行します。
    if (result.size() > 0)
    {
      result.first();
      AIID aiid = (AIID) result.getOID(1);
      ActivityInstanceData activity = process.getActivityInstance(aiid);
      ClientObjectWrapper input =
            process.createMessage(aiid, activity.getOutputMessageTypeName());
      DataObject myMessage = null;
      if ( input.getObject()!= null && input.getObject() instanceof DataObject )
        {
          myMessage = (DataObject)input.getObject();
          //set the strings in your message, for example, chocolate is to be ordered
          myMessage.setString("OrderNo", "chocolate");
        }
    
       boolean continueOnError = true;
       process.forceRetry(aiid, input, continueOnError);
    }

    このアクションによって、 アクティビティーが再試行されます。エラーが発生した場合 、continueOnError パラメーター によって、forceRetry 要求の処理中にエラーが発生した場合に実行するアクションが 決まります。

    例では 、continueOnError が true です。 この場合、forceRetry 要求の処理中にエラーが発生 すると、アクティビティーは失敗状態になります。 障害は、処理されるかプロセス・スコープ に到達するまで、アクティビティーの囲んでいる スコープに伝搬されます。次にプロセスは障害状態 になり、最終的に失敗状態になります。

関連概念
ビジネス・プロセスおよびタスク関連オブジェクトに対する照会

(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。