您可以修改商業物件以利用處理功能。 當您修改商業物件時,可以使用「商業物件設計程式」。 如需進一步資訊,請參閱 Business Object Development Guide。
本主題包含修改商業物件以進行同步要求處理功能的概觀及程序。
在收到要進行同步要求處理的商業物件時,連接器會檢查動詞之應用程式特有資訊中的 response_selector 字串是否存在。如果未定義 response_selector, 連接器會使用Retrieve、exists 及 retrieve by content說明的相互關係 ID 來識別回應訊息。
如果定義了 response_selector,則連接器會預期具有下列語法的名稱值組:
response_selector=JMSCorrelationID LIKE'selectorstring'
訊息 selectorstring 必須唯一地識別回應,並且其值必須像下面範例顯示的一樣用單引號括上:
response_selector=JMSCorrelationID LIKE 'Oshkosh'
在上面的範例中,發出要求訊息之後,配接器會監視 ReplyToQueue 中是否有 correlationID 等於 "Oshkosh" 的回應訊息。配接器會首先擷取符合此訊息選取元的第一則訊息,然後將其當作回應來分派。
若要利用訊息選取元來過濾回應訊息,請執行下列動作:
其中 selectorstring 可唯一地識別回應。 當應用程式以您指定為
CorrelationID 的 selectorstring 傳回回應時,
連接器就會將它識別為同步要求的回應。
然後連接器就會呼叫資料處理常式,將它轉換成回應商業物件,
並將它傳回發出要求的協同作業。
範例: 配接器會選擇是否執行可讓您為每個要求產生唯一訊息選取元的執行時期替代。 不指定訊息選取元,您可以大括弧括起的整數形式, 指定位置保留區,例如:'{1}'。然後接上一個冒號及以逗點區隔的屬性清單,以便用於替代。位置保留區中的整數將作為屬性的索引,以便用於替代。例如,下列的訊息選取元:
response_selector=JMSCorrelationID LIKE '{1}': MyDynamicMO.CorrelationID
會通知配接器用選取元之後的第一個屬性值 (在本例中為 MyDynamicMO 子項物件的 CorrelationId 屬性) 取代 {1}。如果屬性 CorrelationID 的值為 123ABC,配接器會產生並使用依下列準則建立的訊息選取元:
JMSCorrelation LIKE '123ABC'
來識別回應訊息。
您還可以指定多重替代,如下所示:
response_selector=PrimaryId LIKE '{1}' AND AddressId LIKE '{2}' : PrimaryId, Address[4].AddressId
在此範例中,配接器會用最上層商業物件之屬性 PrimaryId 替代 {1}, 以子項儲存區物件 Address 第五個位置的 AddressId 值替代 {2}。以這種方式,您可以在回應訊息選取元中參照商業物件及 meta 物件中的任何屬性。如需如何使用 Address[4].AddressId 執行深層擷取的詳細資訊,請參閱 JCDK API 手冊 (getAttribute 方法)。
當執行時期發生下列任一情況時,都會報告錯誤:
例如,如果您在訊息選取元中併入文字值 '{' 或 '}',則可以分別使用 '{{' 或 "{}"。您還可以將這些字元放置在屬性值中, 在這種情況下就不需要第一個 "{"。請考量以下使用跳離字元的範例:response_selector=JMSCorrelation LIKE '{1}' and CompanyName='A{{P': MyDynamicMO.CorrelationID
連接器會解析此訊息選取元,如下所示:
JMSCorrelationID LIKE '123ABC' and CompanyName='A{P'
當連接器遇到屬性值中的特殊字元 (如 '{'、'}'、':' 或 ';') 時,會將它們直接插入查詢字串。這可讓您在查詢字串中併入特殊字元, 這些字元同時也作為應用程式特有資訊的定界字元。
下一個範例說明如何從屬性值擷取文字字串替代:
response_selector=JMSCorrelation LIKE '{1}' and CompanyName='A{{P': MyDynamicMO.CorrelationID
若 MyDynamicMO.CorrelationID 內含值 {A:B}C;D,連接器會解析下面的訊息選取元: JMSCorrelationID LIKE '{A:B}C;D' and CompanyName='A{P'