將計時器行為新增至 Stub

您可以使用計時器行為在 Stub 中設定計時器事件。在經過設定的時段後,就會觸發計時器事件,而 Stub 會收到事件,然後做出回應。例如,您可能使用 Stub 來管理使用者階段作業,而且想要新增計時器行為,以自動將閒置超過 30 秒的使用者登出。

開始之前

您必須有 Stub,才能將計時器行為新增至 Stub。如需 Stub 及其用途的相關資訊,請參閱 Stub:概觀和作業

關於這項作業

您想要將計時器事件排定在經過 30 秒後觸發。

如果要將計時器行為新增至 Stub,請執行下列動作:

程序

  1. Rational® Integration Tester 的「測試 Factory」視景中,按兩下要將計時器行為新增至的 Stub。

    這時會開啟「Stub 編輯器」。

    接下來,您可以新增 Stub 行為。請從「行為」頁面執行此作業。

  2. 按一下行為標籤,然後按一下新增,以開啟「新增行為實體」對話框。

    您可以看到 Rational Integration Tester 隨附的行為類型。您還可以看到「生命週期」行為的說明。

    提示: 如果要看見「計時器」行為的說明,請從清單中選取該行為。如需行為類型的相關資訊,請參閱「行為」標籤

    現在,您需要「生命週期」行為實例,以便將計時器事件排定在 30 秒後觸發。您還需要「計時器」行為實例,以定義要在計時器事件執行時傳送的訊息。

  3. 設定 Stub 的行為類型:
    1. 選取生命週期,將生命週期實例命名,或接受實例欄位中提供的預設名稱,然後按一下新增

      這時會開啟行為標籤,其中包含生命週期行為的名稱和說明,以及配置設定。

    2. 按一下新增以回到「新增行為實體」對話框,然後選取計時器。 將計時器實例命名,或接受實例欄位中提供的預設名稱,然後按一下新增

      這時會開啟行為標籤,其中包含計時器行為的名稱和說明。計時器行為沒有任何配置設定。

      已新增行為類型

      接下來,為您剛新增的行為類型設定事件。請從「事件」頁面執行此作業。

  4. 按一下事件標籤。
    1. 如果要新增事件,請按一下「新增事件」(「新增事件」圖示) 圖示。按兩下「事件」方框,從清單中選取 lifecycle,然後選取 onStart

      選取 onStart 是因為您希望 Stub 在啟動時觸發動作。稍後會定義該動作。接下來,您需要新增另一個事件,並將該事件用於「計時器」行為,讓 Stub 在事件發生時傳送訊息。

    2. 按一下「新增事件」(「新增事件」圖示) 圖示。按兩下「事件」方框,從清單中選取 timer,然後選取 onTimerEvent

      onTimerEvent 是在計時器到期時提供事件給 Stub 的回呼。

      將事件新增至計時器行為類型

  5. 如果要啟動計時器,您必須在 lifecycle.onStart 事件中新增程式碼。
    1. 移至此事件的活動標籤,然後在「活動」窗格中按一下滑鼠右鍵,並選取新建 > 一般 > 函數,以新增函數動作。

      將函數新增至計時器事件

    2. 按兩下函數動作來編輯它。確保已選取函數標籤,而且 Script 語言欄位設定為 ECMAScript

      編輯計時器事件的函數

    3. 輸入下列程式碼以起始設定計時器:
      timer.scheduleTimerEvent("id","param", 30, java.util.concurrent.TimeUnit.SECONDS)

      在此範例中,第一個參數是您提供給計時器的 ID,以便稍後可以取消或重設計時器(如果需要的話)。第二個參數是在計時器到期時傳回給 Stub 的物件。第三個和第四個參數指定計時器的執行時間長短;在本例中,計時器會執行 30 秒。

      提示: 有關可用於排定單一計時器事件、排定重複計時器事件或取消計時器事件的每個「計時器」函數行為的說明,請參閱「行為」標籤
    4. 按一下確定以關閉函數動作。
  6. 如果要新增在計時器觸發時要執行的動作,您可以將商業邏輯或傳送訊息新增至 timer.onTimerEvent 事件。
    1. 移至此事件的活動標籤,然後在「活動」窗格中按一下滑鼠右鍵,並選取新建 > 流程 > 日誌,以新增日誌動作。
    2. 鍵入輸出訊息,然後按一下確定,以關閉日誌動作。

    已新增計時器事件的日誌動作。

  7. 移至「測試實驗室」視景並執行 Stub。

    在「測試實驗室」中,您可以看到 30 秒之後觸發 timer 事件,而且每次都傳送輸出訊息 Callback triggered!!!

    以計時器執行 Stub 的結果

    提示: 只有在觸發特定的計時器時,才能使用過濾來處理 Stub。 在此範例中,只有名為 myTimer 的計時器才會觸發計時器事件。 您也可以標記參數物件,然後在進一步動作中重複使用。

    Stub 過濾


意見