連接器的角色是橋接工作流程中的資料結構與商業物件。MQ Workflow 要負責依據商業物件中設定的動詞來採取動作-連接器僅能保證工作流程順利收到內容。因此,連接器無法影響 MQ Workflow 產品中的商業物件。實際上,就 MQ Workflow 的本質而言,商業物件的持續性資料結構可能不存在,因為它可能僅用作後續工作流程的觸發程式。
「商業物件處理常式 (BOHandler)」會忽略動詞,而以同一方式處理所有商業物件。使用 DOM 剖析器,連接器可建構 WfMessage。
連接器會檢查最上層商業物件的應用程式特有文字,以確定是否定義 cw_mo_wfptcfg=XXX 格式的名稱值組。會剖析 XXX 識別的子項 Meta 物件,並解譯值。
執行的範本由 Meta 物件屬性 ProcessTemplateName 識別。這些範本提供指定 MQ Workflow 的全部指令及包含結果所需要的結構。]如果指定屬性 ProcessInstanceName,則連接器會執行現有的實例;否則,它會建立範本的新實例。範本將使用授與子項 Meta 物件屬性 UserId 識別之使用者的權限來執行。如果未指定屬性,則會使用連接器配置內容 ApplicationUserID 的值來替代。如需範本的詳細資訊,請參閱修改 WebSphere MQ Workflow 應用程式的最上層商業物件及內容配置。
連接器支援控制現有工作流程之要求的下列商業物件動詞:
收到 MQ Workflow 的訊息時,連接器會從 WfMessage 中 ProgramParameters 的值識別商業物件的動詞。ProgramParameters 的文字必須包含一個 name=value 組,指定包含在訊息中的商業物件動詞。例如,若要指定 Delete 動詞,元素文字包含的 name=value 組為 verb=Delete。
然而在反方向的部份,連接器並不指示 MQ Workflow 要使用哪個動詞來處理要求。當向 MQ Workflow 發出商業物件時, 連接器會忽略商業物件的動詞。相反地,連接器會將商業物件轉換成 XML,並將內容納入 MQ Workflow 的 WfMessage 中。向其發出商業物件的工作流程會判斷應採取的動作 (而不是由協同作業為商業物件指定的動詞)。
使用 MQ Workflow 連接器 XML API,協同作業可以監視及控制工作流程程序的狀態。在順利控制工作流程作業時, 連接器會將程序的詳細資料移入程序實例物件 (MO_MQWorkflow_ProcessInstance)。連接器會將其 app-text 等同於 ProcessInstance 的任何物件,視為 MO_MQWorkflow_ProcessInstance 的實例。
連接器會將商業物件轉換成 XML,並將內容納入 MQ Workflow 的 WfMessage。為商業物件指定的動詞決定了要對程序實例所執行的動作。
使用 XML API 時,連接器支援 MO_MQWorkflow_ProcessInstance 的下列動詞:
連接器會從 MQ Workflow 刪除指定的程序實例。程序實例必須處於下列其中一種狀態:「已備妥」、「已完成」或「已終止」。如果程序不存在或無法刪除,則連接器會傳回 BON_FAIL。否則,連接器會傳回輸入新狀態的 MO_MQWorkflow_ProcessInstance 物件。
連接器會發出暫停工作流程程序的要求,如果程序不存在或無法暫停,則會傳回 BON_FAIL。程序實例必須處於「執行中」狀態。如果 deep 選項為 true,則也會暫停所有非自主子程序。如果程序不存在或無法暫停,則連接器會傳回 BON_FAIL。否則,連接器會傳回輸入新狀態的 MO_MQWorkflow_ProcessInstance 物件。
連接器會終止程序實例及其所有非自主子程序。所有在執行中、已移出及已暫停的活動都會終止。程序必須處於下列其中一種狀態:「執行中」、「已暫停」或「暫停中」。如果程序不存在或無法終止,則連接器會傳回 BON_FAIL。否則,連接器會傳回輸入新狀態的 MO_MQWorkflow_ProcessInstance 物件。
連接器會發出重新啟動工作流程程序實例的要求。僅可以重新啟動已完成或已終止的最上層程序實例。如果程序不存在或無法重新啟動,則連接器會傳回 BON_FAIL。否則,連接器會傳回輸入新狀態的 MO_MQWorkflow_ProcessInstance 物件。
連接器會發出回復處理已暫停或暫停中之程序實例的要求。如果 deep 選項為 true,則也會回復所有非自主子程序。如果程序不存在或無法回復,則連接器會傳回 BON_FAIL。否則,連接器會傳回輸入新狀態的 MO_MQWorkflow_ProcessInstance 物件。
如果配置 Meta 物件的屬性 ResponseTimeout 小於零,則連接器會向 MQ Workflow 伺服器發出要求,而無需等待回應。如果執行程序時發生錯誤,則無法通知協同作業。圖 4 顯示範例非同步要求。
如果子項 Meta 物件中提供非負的 ResponseTimeout 且屬性 ExecutionMode 為 Asynchronous,則連接器會發出要求,並將程序實例 ID 傳回協同作業。順利接收程序實例 ID 並不表示順利完成對應的工作流程程序。協同作業必須在程序實例 ID 上執行 『Retrieve』,才能判斷狀態。這對長期交易有用處。圖 5 說明此程序。
當子項 Meta 物件中提供非負的 ResponseTimeout 屬性且屬性 ExecutionMode 為 Synchronous 時,連接器會發出同步要求。工作流程程序已完成之後,要求才會順利傳回。同步要求處理能夠保證通知協同作業由其起始之 MQ Workflow 程序的成功或失效。對於短期交易,同步處理是產生立即回饋的有效方法。圖 6 說明同步要求。