使用錯誤界限事件來捕捉錯誤
附加至活動界限的錯誤中間事件稱為錯誤界限事件。 當您將錯誤界限附加至服務流程或繼承人工服務中的活動時,事件會從附加它的活動中捕捉錯誤並接收錯誤資料。 當活動在執行中,並岔斷在該步驟執行服務時,會觸發錯誤界限事件。
關於此作業
例如,在服務流程中,您附加錯誤事件的活動可以是服務作業或鏈結的服務流程。
提示: 若要針對不同的錯誤具有不同的錯誤處理邏輯,您可以在一個活動上定義多個錯誤界限事件。 對於每一個錯誤界限事件,請使用不同的錯誤碼或錯誤資料來區分不同類型的錯誤。 然後,將每一個連接至套用的錯誤處理邏輯。
程序
若要將錯誤界限事件新增至活動,請完成下列步驟:
- 開啟設計程式。
- 從檔案庫中,建立或開啟您要使用的服務。 若要建立服務,請參閱 建立服務流程。
- 在 圖表 視圖中,將錯誤事件
拖曳至活動節點。錯誤事件會將本身附加至活動的界限。 - 選取錯誤界限事件,並在 實作 標籤的 錯誤內容下,選取 捕捉所有錯誤 或 捕捉特定錯誤 ,以指定您要錯誤事件捕捉的錯誤類型。
- 如果您選取 捕捉特定錯誤,請按一下 錯誤碼 和 錯誤對映 旁邊的挑選器,以根據錯誤碼來過濾可捕捉的特定錯誤,並將錯誤資料對映至區域變數。 如果您有一項服務作業使用外部服務來呼叫 Web 服務,外部服務可能會根據 WSDL 定義而有錯誤。 您可以選擇捕捉及處理與這些特定錯誤相關的錯誤。附註: 錯誤資料無法對映至清單類型的變數。 如果您想要傳遞具有序列結構的資訊作為錯誤資料,請建立包含清單類型參數的商業物件,然後使用此商業物件作為變數的類型。
- 將錯誤界限事件連接至發生錯誤時要執行的邏輯。例如,如果您的服務流程呼叫 REST 服務,請將捕捉所有錯誤事件佈線至 Script 作業,以處理 REST 服務傳回的 HTTP 錯誤。 REST 服務傳回的錯誤資訊會在
RESTResponseException節點的tw.system.error變數中傳回:<error type="com.ibm.bpm.externalservice.rest.api.UnexpectedRESTResponseException" description="UnexpectedRESTResponseException"> <HTTPHeaderNames type="java.util.Collection" description="HTTPHeaderNames"></HTTPHeaderNames> <HTTPStatus type="java.lang.Integer" description="Integer">500</HTTPStatus> <RESTResponseException type="com.ibm.bpm.externalservice.rest.api.RestResponseData" description="RestResponseData"> <HTTPStatusCode type="java.lang.Integer" description="Integer">409</HTTPStatusCode> <HTTPStatusMessage type="java.lang.String" description="String">Conflict</HTTPStatusMessage> <content type="java.lang.String" description="String">{ "code" : 409, "error" : "Classifier not ready", "description" : "The classifier is not ready. The status of the classifier is 'Training'." } </content> </RESTResponseException> <cause type="java.lang.Throwable" description="cause"></cause> <localizedMessage type="java.lang.String" description="String">CWXSD1028E: The operation classify_get with HTTP method GET returned an unexpected response status code 409 with response message Conflict </localizedMessage> <message type="java.lang.String" description="String">CWXSD1028E: The operation classify_get with HTTP method GET returned an unexpected response status code 409 with response message Conflict </message> <messageKey type="java.lang.String" description="String">Api.UnexpectedResponseStatus</messageKey> ... </error>您的 JavaScript 可以存取tw.system.error變數中RESTResponseException節點的HTTPStatusCode、HTTPStatusMessage和content元素。 例如,若要測試 REST 服務是否傳回 HTTP 狀態碼 404 ,請在 Script 作業實作中使用下列陳述式:if (tw.system.error.RESTResponseException[0].HTTPStatusCode[0].getText()=='404') { ... } - 按一下 儲存 或 完成編輯。