您可以修改商業物件以利用處理功能。 修改商業物件時,可以使用「商業物件設計程式」。 如需進一步資訊,請參閱 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'
在上面的範例中,在發出要求訊息之後,配接器會為等同於 "Oshkosh" 之相互關係 ID 的回應訊息監視 ReplyToQueue。配接器會擷取符合此訊息選取元的第一個訊息,然後將其作為回應分派。
若要以訊息選取元過濾回應訊息,請執行下列動作:
其中 selectorstring 可唯一地識別回應。 當應用程式以您指定為 CorrelationID 的 selectorstring 傳回回應時, 連接器會將它識別為同步要求的回應。 然後連接器就會呼叫資料處理常式,將它轉換成回應商業物件, 並將它傳回發出要求的協同作業。
範例:配接器會選擇性地執行可讓您為每個要求產生唯一訊息選取元的執行時期替代。 不指定訊息選取元, 你可以大括弧括起的整數形式指定位置保留區,例如:'{1}'。然後跟上一個冒號及以逗點區隔清單屬性, 來使用於替代。會將位置保留區中的整數作為屬性的索引,使用於替代。例如,下列的訊息選取元:
response_selector=JMSCorrelationID LIKE '{1}': MyDynamicMO.CorrelationID
會通知配接器用緊跟選取元的第一屬性值取代 {1},在這種情況下係指 MyDynamicMO 子項物件的 CorrelationId 屬性。如果屬性 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}' 及 CompanyName='A{{P': MyDynamicMO.CorrelationID
連接器會解析此訊息選取元,如下所示:
JMSCorrelationID LIKE '123ABC' and CompanyName='A{P'
當連接器遇到屬性值中的特殊字元 (如 '{'、'}'、':' 或 ';') 時,會將它們直接插入查詢字串。這可讓您將特殊字元併入尚作為應用程式特有資訊定界字元之查詢字串中。
下一個範例說明如何從屬性值擷取文字字串替代:
response_selector=JMSCorrelation LIKE '{1}' 及 CompanyName='A{{P': MyDynamicMO.CorrelationID
若 MyDynamicMO.CorrelationID 內含值 {A:B}C;D,連接器會解析下面的訊息選取元: JMSCorrelationID LIKE '{A:B}C;D' 及 CompanyName='A{P'