此資訊包括有效率地編碼表示式的一些最佳實務範例、提示及秘訣。
- 為了便於理解,此資訊所提供的大部份表示式範例包括直接在 XML 建構內的 Java™ 程式碼。
然而,當您建立規則時,最佳實務範例是使用外部模組來包含 Java 程式碼,並將這些外部模組作為表示式的一部分進行呼叫。
您還可以在規則建置器中使用或編輯現有片段,或建立新片段,以提供用來呼叫外部模組的程式碼。片段是可以用於表示式之原始碼的摘錄。在規則建置器中,可透過「片段」檢視畫面取得片段。
透過這種方式,您可以選擇在整合開發環境 (IDE) 中,完成設計、開發、編輯、測試及除錯 Java 程式碼的作業,並且可以將其作為開發處理程序的標準部分來管制。
- 若要避免將表示式代碼當作 XML 來剖析,請將代碼含括在 CDATA 區段中,其中 <![CDATA[ 緊接在代碼之前,而 ]]> 則緊隨在代碼之後,如下列範例所示:
<onTimeOut>
<action expressionLanguage="java">
<![CDATA[
IEvent firstEvent = act_eventList.get(0);
System.out.println("Expired Item: " + firstEvent.getAttribute("sourceComponentId.location"));
]]>
</action>
</onTimeOut>
XML Parser 會忽略 CDATA 區段內的所有內容。
- 如果您在表示式中使用 act_lib.getExternalContext() 方法,請不要儲存從規則集或規則區塊變數的方法所傳回的物件。原因在於應用程式可以變更物件實例的參照,而相關的規則集或規則區塊變數卻不會更新。
- 如果您在 <action> 元素內的表示式中使用 return 陳述式 (return;),
而其他 <action> 元素是為各自的規則回應或生命週期動作編碼,
則代碼執行會在編碼 return 陳述式的地方結束,並在下一個 <action> 元素內的表示式中重新開始。
- 無法從規則回應或生命週期動作內呼叫規則管理及其他「主動式相互關聯技術」引擎方法。