幾乎所有的錯誤訊息都需要您採取動作, 以解決訊息文字中所指出的問題。如欲簡化每天的同步化管理, 您可以選擇新增您自己的邏輯,以便在發出特定錯誤訊息碼時能自動執行這些動作。
如欲定義錯誤自動處理:
DSYUserExits.properties
此檔案關聯著訊息碼及訊息碼寫入日誌中時執行的常式或程式。這個內容檔支援許多不同的參數。
# 格式: # {DSY 訊息 ID}={要執行的類別} {環境參數} # {DSY 訊息 ID}={要執行的指令} {環境參數} # 其中 # {DSY 訊息 ID}: # 您要為其定義使用者結束程式的 DSY* 訊息 ID (例如 # DSYD000E) # {要執行的類別}: # 要執行的 Java .class 名稱。此類別必須實作 # com.ibm.mobileservices.DSYUserExitsInterface # {要執行的指令}: # 要執行的指令名稱 (例如 pager.exe) # {環境參數}: # 要傳入給要執行之類別或指令的一系列參數 # # 可選用的指令標籤: # <DSYID> = 訊息 ID # <DSYIDMSG> = 訊息 ID 訊息文字 # <DSYIDMSG_> = 訊息 ID 訊息文字,但所有空白都 # 轉換為底線 # <DSYMSG> = 訊息文字 # <DSYMSG_> = 訊息文字,但所有空白都轉換為 # 底線。 # <SERVER_IPADDRESS> = 伺服器 ip 位址 (例如 9.112.19.143) # <SERVER_NAME> = 伺服器名稱 (例如 mpauser.stl.ibm.com) # # 請參閱可用的 DSY 訊息 ID 的訊息區段。 # # 範例 1: # 若您想要有 DSYD000E 的使用者結束程式,您會新增一行 # 類似以下內容: # # DSYD000E=pager.exe number=5551234 id=<DSYID> msg=<DSYMSG_> # # 當發出 DSYD000E 訊息時,pager.exe 指令便會被執行, # 同時會設定兩個環境參數:number=5551234, id=DSYD000E # 及 msg=DSY 訊息文字,並將空白替換成底線 (_)。 # # 範例 2: # 若您想要在發現 DSYD020E 時執行一個類別, # 您會新增一行類似以下的內容: # # DSYD020E=com.ibm.mobileservices.DSYUserExitsSample.class # # 當發出 DSYD020E 時,com.ibm.mobileservices.DSYUserExitsSample # 類別便會被執行。
message_number=action parameter=value
其中:
要執行的動作必須是對有效常式或程式的參照。
例如,假設您要併入的使用者跳出程式會在發出訊息 DSYD000E 時呼叫您。 您可以撰寫程式 pager.exe 來撥接您的呼叫器,並將呼叫器號碼併入為參數。在 DSYUserExits 檔案中的字行類似下面:
DSYD000E=pager.exe number=9980674
您也可以併入下列參數及變數與指令:
下面範例會撥接相同的呼叫器,但會提出訊息碼及其文字作為參數, 以便能出現在呼叫器視窗中:
DSYD000E=pager.exe number=9980674 id=dsyid msg=dsymsg
Sync Server 不會檢查 DSYUserExits 檔中登錄的有效性, 也不會驗證與訊息相關的動作是否完成。
為了測試使用者呼叫常式,因此包括了 DSYUserExitsTest.bat 檔案工具。 若要使用 DSYUserExitsTest 工具測試使用者呼叫常式,請使用下列格式:
DSYUserExitsTest.bat dsy_message_id
其中 dsy_message_id 是您要模擬的訊息碼。若您未提供訊息 ID,畫面上會顯示可用的訊息 ID 的清單。
訊息 ID 為 DSYS001I 的範例指令:
DSYUserExitsTest.bat dsys001i
會產生 DSYS001I 訊息,而定義給此訊息碼的使用者結束程式便會被啟動。
訊息 ID 無效的範例指令:
DSYUserExitsTest.bat zzz
DSYUserExitsTest 工具的輸出為:
DSYUserExitsTest 找不到 DSY 訊息 ID 'ZZZ'。有效的 DSY 訊息 ID為: DSYA000E, DSYA001E, DSYD000E, DSYD002E, DSYD006E, DSYD007E, ...