執行範例情況之前:
- 啟動 InterChange Server (如果它尚未執行)。
- 使用 -fkey 選項 (以防止自動輪詢),啟動 WebSphere MQ Workflow 的
WBI Adapter (如果它尚未執行)。
- 啟動「視覺化測試連接器」(如果它尚未執行)。
啟動「視覺化測試連接器」、定義 PortConnector
的設定檔及連結代理程式,來模擬「埠連接器」。
此範例情況將商業資料傳遞到定義的工作流程程序,並擷取最終結果。這是同步的呼叫,因為在將要求發出給
WebSphere MQ Workflow 之後,配接器會暫停執行,直到起始的工作流程程序完成為止。
在此範例情況中,您可以將訂單號碼傳遞到工作流程程序
Lookup_Order_Status,來擷取虛構訂單的狀態。此工作流程僅有一個動作,
就是向 IBM WebSphere Business Integration Server 發出 retrieve
(擷取),以取得訂單的相關資訊。這會示範配接器如何向 WebSphere MQ Workflow
發出同步的要求,以及 WebSphere MQ Workflow 如何發出同步的要求給配接器。
- 建立範例訂單。使用「視覺化測試連接器」,以動詞
Create 建立商業物件 MQWF_SampleItemOrder
的新實例並如下所示輸入資料 (未定義的值應為 CxIgnore):
MQWF_SampleItemOrder
- Input_ItemOrder
- MO_Config
- ProcessTemplateName = Lookup_Order_Status
- KeepName = false
- UserId = UserName
- ExecutionMode = Synchronous
- ResponseTimeout = 600000
- TimeoutFatal = false
- 將此物件傳送到配接器。配接器會將此物件轉換為要求訊息,並將其發出到
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 用戶端」應用程式來驗證。
- 在配接器代理程式視窗中按 p 以輪詢事件。配接器會尋找 WebSphere MQ Workflow
(由原始要求觸發) 發出的要求。配接器會以動詞 Retrieve
將要求訊息轉換為物件 MQWF_SampleItemOrder,並將其公佈到協同作業
SampleItemOrderSync_MQWF_to_Port。
- 透過「視覺化測試連接器」接受要求。驗證物件
MQWF_SampleItemOrder.Input_ItemOrder 的屬性
TrackingNumber 為 ABC123
(與起始要求的相同)。如下所示輸入物件
MQWF_SampleItemOrder.Output_ItemOrder
的資料,然後選取回覆成功以完成要求:
- Output_ItemOrder
- TrackingNumber = ABC123
- Approved = YES
配接器會將回應傳回 WebSphere MQ Workflow,同時傳回內含在
MQWF_SampleItemOrder.Output_ItemOrder
中的商業資料。WebSphere MQ Workflow
收到配接器的回應,並將資料納入原始要求的回應訊息,
然後會將該回應訊息發回配接器的「回覆目的地」佇列。配接器會擷取回應訊息,並將任何變更及錯誤傳回協同作業。這會完成同步的工作流程要求。傳回協同作業的物件應輸入下列的內容:
- MQWF_SampleItemOrder
- Input_ItemOrder
- MO_Config
- ProcessTemplateName = Lookup_Order_Status
- KeepName = false
- UserId = UserName
- ExecutionMode = Synchronous
- ResponseTimeout = 600000
- TimeoutFatal = false
- Output_ItemOrder
- TrackingNumber = ABC123
- Approved = YES
- ProcessInstance 應該移入它,但無法預測值。程序狀態應為
TERMINATED。
- 註:
- 如果您無法在 10 分鐘 (依 Meta 物件中配置為 600000 毫秒)
內完成此程序,配接器會報告它收不到 WebSphere MQ Workflow 的回應。
在此範例情況中,配接器將商業資料傳遞到定義的工作流程程序,但不會等待程序完成。這是非同步的呼叫-在將要求發出到
WebSphere MQ Workflow 之後,配接器會收到程序
ID,以用於在程序並行執行時追蹤它。在此範例情況中,配接器會將訂單發出到工作流程程序
Approve_Order,以開始核准訂單的作業
(稍後並檢查核准是否已完成)。工作流程程序擷取訂購之項目的相關資訊,
並根據庫存中是否有足夠數量的項目,來更新訂單核准。此範例情況示範了配接器如何非同步地觸發工作流程程序的啟動,
以及配接器如何監視並行執行之工作流程程序的狀態。
- 使用「視覺化測試連接器」,以動詞 Create 建立商業物件
MQWF_SampleItemOrder 的新實例, 並如下所示輸入資料 (未定義的值應為
CxIgnore):
- MQWF_SampleItemOrder
- Input_ItemOrder
- TrackingNumber = ABC123
- Customer = Billy Bob
- Item
- Name = Hammer
- Quantity = 1
- MO_Config
- ProcessTemplateName = Approve_Order
- KeepName = false
- UserId = UserName
- ExecutionMode = Asynchronous
- ResponseTimeout = 500
- TimeoutFatal = false
- 將 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
- Input_ItemOrder
- TrackingNumber = ABC123
- Customer = Billy Bob
- Item
- Name = Hammer
- Quantity = 1
- MO_Config
- ProcessTemplateName = Approve_Order
- KeepName = false
- UserId = UserName
- ExecutionMode = Asynchronous
- ResponseTimeout = 5000
- TimeoutFatal = false
- ProcessInstance 應該移入它,但無法預測值。
- 註:
- 請記住屬性 ProcessInstanceID 的值,以備稍候在此指導教學中使用。
目前,工作流程程序正在與協同作業處理程序並行執行。追蹤或控制工作流程程序的唯一方法是,透過物件
MQWF_SampleItemOrder.ProcessInstance 中傳回的
ProcessInstanceID。
- 使用「視覺化測試連接器」,以動詞 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 動詞。
- 將 MO_MQWorkflow_ProcessInstance
傳送到配接器,且它應傳回工作流程程序狀態。屬性 ProcInstState
應該等於 RUNNING。
- 若要回復此範例情況中啟動的工作流程程序,請在配接器代理程式視窗中按 p
以輪詢事件。配接器會尋找 WebSphere MQ Workflow (由原始要求觸發)
發出的要求。配接器會以動詞 Retrieve 將要求訊息轉換為物件
MQWF_SampleItem,並將其公佈到協同作業
SampleItemSync_MQWF_to_Port。
- 透過「視覺化測試連接器」接受要求。驗證物件
MQWF_SampleItem.Input_Item 的屬性 Name 為
Hammer。如下所示地輸入物件
MQWF_SampleItem.Output_Item 的內容,
然後選取回覆成功以完成要求。
- Output_Item
- Name = Hammer
- Price = 14.99
- Stock = 20
配接器會將回應傳回 WebSphere MQ Workflow,同時傳遞回內含在
MQWF_SampleItem.Output_Item 中的商業資料。WebSphere MQ
Workflow 收到配接器的回應,並檢查 Stock 的值是否大於原始訂單中的
Quantity 值。如果是的話,庫存中會有足夠的鐵錘來完成訂單,
因此會獲得核准。工作流程程序執行的最終步驟是更新 InterChange Server
中的訂單,並使用與原始訂單相同的鍵值,將 SampleItemOrder
資料結構發出到配接器的輸入佇列,但現在屬性 Approve 等於
Y。
- 若要從 WebSphere MQ Workflow 處理此最終要求,請在配接器代理程式視窗中按 p
以輪詢事件。配接器會尋找 WebSphere MQ Workflow 發出的要求、以動詞
Update 建立物件 MQWF_SampleItemOrder,
然後將物件公佈到協同作業
SampleItemOrderSync_MQWF_to_Port。您只需接受此要求
(因為此範例情況中沒有要更新的記錄)。一旦配接器發出回應,IBM WebSphere Business
Integration Server 的要求以及工作流程程序就都完成了。
此範例情況示範如何藉由終止進行中的程序來控制工作流程程序。
- 從非同步要求中說明的步驟 1 開始,但不以動詞 Retrieve
發出商業物件 MO_MQWorkflow_ProcessInstance,而是將動詞變更為
Suspend。將此物件傳送到配接器,並透過「WebSphere MQ Workflow
用戶端」應用程式驗證程序是否暫停。
- 註:
- 程序會保持在 SUSPENDING 狀態,直到它可完成到 InterChange Server
的第一個要求為止-這反映 WebSphere MQ Workflow 的功能,而不是配接器的功能。
- 將動詞變更為 Resume 並重新傳送物件。將工作流程程序的狀態變更回
RUNNING。
- 將動詞變更為 Terminate
並重新傳送物件。工作流程程序的狀態會變更為 TERMINATED。您可以動詞
Retrieve 發出物件來驗證它。如此,您已透過 ICS
順利地控制及監視了工作流程程序的狀態。
- 註:
- 雖然終止了產生此要求的程序,但是要求訊息可能仍會在配接器的輸入佇列中。這是正常的。雖然配接器會處理此要求,但
WebSphere MQ Workflow 會忽略所產生的任何回應。
此範例情況會模擬從 WebSphere MQ Workflow 到 ICS
的同步要求及其回應。與「範例情況 1」的差異為, 配接器非同步地呼叫協同作業
(而範例情況 1 則是同步地呼叫協同作業)。此範例情況比範例情況 1 更實際,
因為其他工作流程程序不需要等待工作流程程序完成。
- 建立更新要求。在 WebSphere MQ Workflow
用戶端上,建立並啟動工作流程程序實例,然後填入輸入資料結構
SampleItemRequest,如下所示:
- SampleItemRequest
- Name = Hammer
- Price = 14.99
- Stock = 20
WebSphere MQ Workflow 同步地向配接器的輸入佇列發出此要求,並等待回應。
- 在配接器代理程式視窗中輸入 p 以輪詢事件。配接器會尋找 WebSphere MQ
Workflow 發出的要求。配接器會以動詞 Update 將此要求訊息轉換為物件
MQWF_SampleItemRequest。配接器也會使用對映
MQWF_Sample_RequesttoGBO,將商業物件轉換為通用商業物件
MQWF_GBO_SampleItem,
然後非同步地發佈它。此時,配接器不會等待其回應,且可接收其他要求。
- 透過「視覺化測試連接器」接受要求。訂閱通用商業物件的協同作業
SampleItemRequest_MQWF_to_MQWF
會收到物件,且它會為「視覺化測試連接器」所接受。請驗證物件
MQWF_GBO_SampleItem.InputItem 及
MQWF_GBO_SampleItem.OutputItem 的屬性 Name 為
Hammer (與我們的原始要求相同)。填入物件
MQWF_GBO_SampleItem.OutputItem 的空白屬性 (如下所示),
然後選取回覆成功,以將通用商業物件傳送到配接器。
- MQWF_GBO_SampleItemOrder
- ContainerInfo
- 已填入除 ReturnCode 之外的所有屬性。
- (請勿變更 ActImplCorrelID,它在 MQWF 中用作 ID)
- InputItem
- Name = Hammer
- Price = 14.99
- Stock = 20
- OutputItem
- Name = Hammer
- Price = 11.25
- Stock = 8
配接器會收到通用商業物件,並使用對映
MQWF_Sample_GBOtoResponse,將其轉換為物件
MQWF_SampleItemResponse。配接器將回應與包含在
MQWF_SampleItemResponse.Output_Item 中的商業資料,一同傳回
WebSphere MQ Workflow。WebSphere MQ Workflow 收到配接器的回應,並檢查
ActImplCorrelID 的值。如果有工作流程程序與
ActImplCorrelID 值相符,則程序完成。WebSphere MQ Workflow
用戶端中對應的程序實例會消失。(您可能需要重新整理視窗。)
