執行範例實務

執行範例實務之前:

  1. 啟動 InterChange Server (如果它尚未執行)。
  2. 使用 -fkey 選項 (以防止自動輪詢),啟動 WebSphere MQ Workflow 的 WBI Adapter (如果它尚未執行)。
  3. 啟動「視覺化測試連接器」(如果它尚未執行)。

啟動「視覺化測試連接器」、定義 PortConnector 的設定檔及連結代理程式,來模擬「埠連接器」。

同步的要求

此範例實務將商業資料傳遞到定義的工作流程程序,並擷取最終結果。這是同步的呼叫,因為在將要求發出給 WebSphere MQ Workflow 之後,配接器會暫停執行,直到起始的工作流程程序完成為止。

在此範例實務中,您可以將訂單號碼傳遞到工作流程程序 Lookup_Order_Status,來擷取虛構訂單的狀態。此工作流程僅有一個動作, 就是向 IBM WebSphere Business Integration Server 發出 retrieve (擷取),以取得訂單的相關資訊。這會示範配接器如何向 WebSphere MQ Workflow 發出同步的要求,以及 WebSphere MQ Workflow 如何發出同步的要求給配接器。

  1. 建立範例訂單。使用「視覺化測試連接器」,以動詞 Create 建立商業物件 MQWF_SampleItemOrder 的新實例並如下所示輸入資料 (未定義的值應為 CxIgnore):


    MQWF_SampleItemOrder

  2. 將此物件傳送到配接器。配接器會將此物件轉換為要求訊息,並將其發出到 WebSphere MQ Workflow 伺服器。配接器不會立即返回, 而是會開始等待 WebSphere MQ Workflow 的回應。


    WebSphere MQ Workflow 收到配接器的要求,使用物件 MQWF_SampleItemOrder.Input_ItemOrder 的資料同步建立及呼叫程序範本 Lookup_Order_Status。此工作流程程序的第一步也是唯一步驟, 就是使用追蹤號碼作為鍵值,來擷取 IBM WebSphere Business Integration Server 的資料結構 SampleItemOrder。若要做這樣的處理,MQ Workflow 會將要求訊息發出到配接器的輸入佇列,並開始等待回應。這可透過檢查「WebSphere MQ Workflow 用戶端」應用程式來驗證。

  3. 在配接器代理程式視窗中按 p 以輪詢事件。配接器會尋找 WebSphere MQ Workflow (由原始要求觸發) 發出的要求。配接器會以動詞 Retrieve 將要求訊息轉換為物件 MQWF_SampleItemOrder,並將其公佈到協同作業 SampleItemOrderSync_MQWF_to_Port
  4. 透過「視覺化測試連接器」接受要求。驗證物件 MQWF_SampleItemOrder.Input_ItemOrder 的屬性 TrackingNumberABC123 (與起始要求的相同)。如下所示輸入物件 MQWF_SampleItemOrder.Output_ItemOrder 的資料,然後選取回覆成功以完成要求:

    配接器會將回應傳回 WebSphere MQ Workflow,同時傳回內含在 MQWF_SampleItemOrder.Output_ItemOrder 中的商業資料。WebSphere MQ Workflow 收到配接器的回應,並將資料納入原始要求的回應訊息, 然後會將該回應訊息發回配接器的「回覆目的地」佇列。配接器會擷取回應訊息,並將任何變更及錯誤傳回協同作業。這會完成同步的工作流程要求。傳回協同作業的物件應輸入下列的內容:

    註:
    如果您無法在 10 分鐘 (依 Meta 物件中配置為 600000 毫秒) 內完成此程序,配接器會報告它收不到 WebSphere MQ Workflow 的回應。

非同步要求

在此範例實務中,配接器將商業資料傳遞到定義的工作流程程序,但不會等待程序完成。這是非同步的呼叫-在將要求發出到 WebSphere MQ Workflow 之後,配接器會收到程序 ID,以用於在程序並行執行時追蹤它。在此範例實務中,配接器會將訂單發出到工作流程程序 Approve_Order,以開始核准訂單的作業 (稍後並檢查核准是否已完成)。工作流程程序擷取訂購之項目的相關資訊, 並根據庫存中是否有足夠數量的項目,來更新訂單核准。此範例實務示範了配接器如何非同步地觸發工作流程程序的啟動, 以及配接器如何監視並行執行之工作流程程序的狀態。

  1. 使用「視覺化測試連接器」,以動詞 Create 建立商業物件 MQWF_SampleItemOrder 的新實例, 並如下所示輸入資料 (未定義的值應為 CxIgnore):
  2. MQWF_SampleItemOrder 傳送到配接器,該配接器會將此物件轉換為要求訊息,並將其發出到 WebSphere MQ Workflow 伺服器。然後配接器會等待包含程序實例 ID 的回應。WebSphere MQ Workflow 收到配接器的要求, 使用物件 MQWF_SampleItemOrder.Input_ItemOrder 的資料,非同步地建立及呼叫程序範本 Approve_Order。程序一旦啟動,WebSphere MQ Workflow 就會立即將回應發回給配接器,回應中包含起始之工作流程程序的 ID。工作流程程序也會開始其第一步, 從 IBM WebSphere Business Integration Server 擷取 Name = Hammer 的資料結構 SampleItem。這是兩個分開的動作:將回應發出到配接器的「回覆目的地」佇列, 而同時將要求發出到配接器的輸入佇列。配接器收到 WebSphere MQ Workflow 的回應,並將商業物件傳回呼叫的協同作業。此物件與下列內容類似:

    目前,工作流程程序正在與協同作業處理並行執行。追蹤或控制工作流程程序的唯一方法是,透過物件 MQWF_SampleItemOrder.ProcessInstance 中傳回的 ProcessInstanceID。

  3. 使用「視覺化測試連接器」,以動詞 Terminate 建立商業物件 MO_MQWorkflow_ProcessInstance 的新實例。 在 WebSphere MQ Workflow 3.4 中是必需使用 XML API,而在 WebSphere MQ Workflow 3.3.2 亦建議使用 XML API。若要使用 XML API, 請設定「配接器配置內容」JavaCorbaApi = False;若要監視工作流程程序 (MO_MQWorkflow_ProcessInstance),請設定 ProcessInstanceName = ProcInstName (先前步驟中傳回的 ProcInstName)。
    註:
    對於 XML API,僅支援 Restart 及 Delete 動詞。
  4. MO_MQWorkflow_ProcessInstance 傳送到配接器,且它應傳回工作流程程序狀態。屬性 ProcInstState 應該等於 RUNNING
  5. 若要回復此範例實務中啟動的工作流程程序,請在配接器代理程式視窗中按 p 以輪詢事件。配接器會尋找 WebSphere MQ Workflow (由原始要求觸發) 發出的要求。配接器會以動詞 Retrieve 將要求訊息轉換為物件 MQWF_SampleItem,並將其公佈到協同作業 SampleItemSync_MQWF_to_Port
  6. 透過「視覺化測試連接器」接受要求。驗證物件 MQWF_SampleItem.Input_Item 的屬性 NameHammer。如下所示地輸入物件 MQWF_SampleItem.Output_Item 的內容, 然後選取回覆成功以完成要求。

    配接器會將回應傳回 WebSphere MQ Workflow,同時傳遞回內含在 MQWF_SampleItem.Output_Item 中的商業資料。WebSphere MQ Workflow 收到配接器的回應,並檢查 Stock 的值是否大於原始訂單中的 Quantity 值。如果是的話,庫存中會有足夠的鐵錘來完成訂單, 因此會獲得核准。工作流程程序執行的最終步驟是更新 InterChange Server 中的訂單,並使用與原始訂單相同的鍵值,將 SampleItemOrder 資料結構發出到配接器的輸入佇列,但現在屬性 Approve 等於 Y

  7. 若要從 WebSphere MQ Workflow 處理此最終要求,請在配接器代理程式視窗中按 p 以輪詢事件。配接器會尋找 WebSphere MQ Workflow 發出的要求、以動詞 Update 建立物件 MQWF_SampleItemOrder, 然後將物件公佈到協同作業 SampleItemOrderSync_MQWF_to_Port。您只需接受此要求 (因為此範例實務中沒有要更新的記錄)。一旦配接器發出回應,IBM WebSphere Business Integration Server 的要求以及工作流程程序就都完成了。

工作流程程序控制

此範例實務示範如何藉由終止進行中的程序來控制工作流程程序。

  1. 非同步要求中說明的步驟 1 開始,但不以動詞 Retrieve 發出商業物件 MO_MQWorkflow_ProcessInstance,而是將動詞變更為 Suspend。將此物件傳送到配接器,並透過「WebSphere MQ Workflow 用戶端」應用程式驗證程序是否暫停。
    註:
    程序會保持在 SUSPENDING 狀態,直到它可完成到 InterChange Server 的第一個要求為止-這反映 WebSphere MQ Workflow 的功能,而不是配接器的功能。
  2. 將動詞變更為 Resume 並重新傳送物件。將工作流程程序的狀態變更回 RUNNING
  3. 將動詞變更為 Terminate 並重新傳送物件。工作流程程序的狀態會變更為 TERMINATED。您可以動詞 Retrieve 發出物件來驗證它。如此,您已透過 ICS 順利地控制及監視了工作流程程序的狀態。
    註:
    雖然終止了產生此要求的程序,但是要求訊息可能仍會在配接器的輸入佇列中。這是正常的。雖然配接器會處理此要求,但 WebSphere MQ Workflow 會忽略所產生的任何回應。

WebSphere MQ Workflow 的同步要求

此範例實務會模擬從 WebSphere MQ Workflow 到 ICS 的同步要求及其回應。與「範例實務 1」的差異為, 配接器非同步地呼叫協同作業 (而範例實務 1 則是同步地呼叫協同作業)。此範例實務比範例實務 1 更實際, 因為其他工作流程程序不需要等待工作流程程序完成。

  1. 建立更新要求。在 WebSphere MQ Workflow 用戶端上,建立並啟動工作流程程序實例,然後填入輸入資料結構 SampleItemRequest,如下所示:

    WebSphere MQ Workflow 同步地向配接器的輸入佇列發出此要求,並等待回應。

  2. 在配接器代理程式視窗中輸入 p 以輪詢事件。配接器會尋找 WebSphere MQ Workflow 發出的要求。配接器會以動詞 Update 將此要求訊息轉換為物件 MQWF_SampleItemRequest。配接器也會使用對映 MQWF_Sample_RequesttoGBO,將商業物件轉換為通用商業物件 MQWF_GBO_SampleItem, 然後非同步地發佈它。此時,配接器不會等待其回應,且可接收其他要求。
  3. 透過「視覺化測試連接器」接受要求。訂閱通用商業物件的協同作業 SampleItemRequest_MQWF_to_MQWF 會收到物件,且它會為「視覺化測試連接器」所接受。請驗證物件 MQWF_GBO_SampleItem.InputItemMQWF_GBO_SampleItem.OutputItem 的屬性 NameHammer (與我們的原始要求相同)。填入物件 MQWF_GBO_SampleItem.OutputItem 的空白屬性 (如下所示), 然後選取回覆成功,以將通用商業物件傳送到配接器。

    配接器會收到通用商業物件,並使用對映 MQWF_Sample_GBOtoResponse,將其轉換為物件 MQWF_SampleItemResponse。配接器將回應與包含在 MQWF_SampleItemResponse.Output_Item 中的商業資料,一同傳回 WebSphere MQ Workflow。WebSphere MQ Workflow 收到配接器的回應,並檢查 ActImplCorrelID 的值。如果有工作流程程序與 ActImplCorrelID 值相符,則程序完成。WebSphere MQ Workflow 用戶端中對應的程序實例會消失。(您可能需要重新整理視窗。)

附錄 D. 流程監視支援

本附錄說明使用 WICS 4.2.2 或更新版本時,透過 WebSphere MQ Workflow 配接器對於 「監視流程 ID」傳達的支援。WICS 4.2.2 中的 WICS 流程監視支援需要本資訊。

Copyright IBM Corp. 1997, 2004