執行範例情況

執行範例情況之前:

  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 用戶端中對應的程序實例會消失。(您可能需要重新整理視窗。)

Copyright IBM Corp. 1997, 2003