執行企業規則集執行計劃
企業規則集執行計劃的產生將涉及:
1. 根據在企業規則中定義的選取器建立特定 RuleValidation 實例。
2. 將使用 RuleValidation 實例來藉由 isConfigurationValid 方法判斷企業規則的組態是否有效。如果組態無效,會針對企業規則集執行計劃跳過 RuleValidation,並記錄錯誤。
3. 針對每個企業規則,會使用下列項目呼叫 RuleValidation 實例:
a. 規則要評估的物件集合
b. RuleValidation 可用來配置其執行的前後關聯特定條件 (例如容器參考)。
4. 會將 RuleValidation 實例新增至執行計劃。
所有企業規則驗證器都將實行 RuleValidation 介面。一般企業規則將分為兩個主要類別:
簡單驗證:規則檢查會對企業物件本身或種子物件 (如關係所配置) 執行。例如,先檢查屬性驗證或檢查物件生命週期狀態再發行。
結構化驗證:規則可能會或可能不會對企業物件執行,但會包含對其相關聯物件 (例如零件或文件的子項) 的一些驗證檢查。在此類型的驗證中,通常可能需要更複雜的演算法集合來計算企業驗證規則並將適當的旗標填入驗證結果。結構化驗證規則的一個範例是驗證檢查,其可確保所有產生物件與所有第一層相依物件都處於正確狀態。
以下為提供的受支援 RuleValidation 實行:
企業規則選取器
RuleValidation
描述
CHECKOUT_RULE
com.ptc.core.businessRules.validation.CheckoutRuleValidator
驗證物件是未出庫還是已出庫至專案。
RELEASE_TARGET
com.ptc.core.businessRules.validation.ReleaseTargetValidator
確保所有「產生物件」都處於適當狀態,可供發行,且指定了與已指派生命週期轉移規則一致的適當變更管理轉移。
ATTRIBUTE_RULE
com.ptc.core.businessRules.validation.AttributeRuleValidator
驗證物件類型的已指定屬性規則組態是否有效。
BOM_RELEASE_RULE
com.ptc.core.businessRules.validation.BOMReleaseRuleValidator
確保所有產生物件都處於適當狀態,且其所有第一層子項都處於適當狀態。
* 
「推進請求」支援「屬性規則」與「出庫」規則。「變更通知」支援任何規則。
RuleValidation 的實例化將以在企業規則中定義的選取器為基礎。應用程式服務將用來查詢所定義選取器的實行類別。若未定義任何實行類別,或類別無法具現化,將會記錄錯誤。
在執行任何驗證之前,引擎會呼叫 RuleValidation.isConfigurationValid,以判斷企業規則組態是否有效。當載入企業規則時也會呼叫此企業規則組態驗證,但由於可以變更註冊的 RuleValidation,因此也會在執行企業規則驗證之前呼叫組態驗證。
名為 prepareTheRuleValidation 初始化方法用來對將根據企業規則集進行驗證的整個種子物件集執行一些初始前置處理。這是為了允許在 Windchill 伺服器內進行任何事前驗證 (例如,擷取許多項目都通用的生命週期範本)。最好從 RuleValidation.prepare 方法呼叫多物件 API。建議不要使用 RuleValidation.peformValidation 方法來執行多物件呼叫。
如果 RuleValidation.isConfigurationValid 方法傳回 true,會針對每個種子物件呼叫 RuleValidation performValidation。種子物件會在 RuleValidationObject 內傳遞。RuleValidationObject 包含目標物件 (如果不是連結,則為種子物件;如果種子物件是連結,則為角色 A 或角色 B) 與連結 (如果種子物件是連結)。當企業規則為結構化類型 RuleValidation 時,RuleValidationObject 也會包含收集的子項,以及收集的子項與收集它們時所用連結的對應。performValidation 應始終傳回參考目標物件而非連結的新 RuleValidationResult
企業規則引擎與工序圖
企業規則引擎與驗證互動圖
RuleValidation 實行在 service.properties 中註冊。欲建立或取代 RuleValidation 實行,請將以下內容新增至自訂 service.properties xconf 檔案:
<Service context="default" name="com.ptc.core.businessRules.validation.
RuleValidation">
<Option serviceClass="com.ptc.core.businessRules.validation.
CheckoutRuleValidator"
selector="CHECKOUT_RULE"
cardinality="singleton"
requestor="null"/>
</Service>
如果可能,應將 RuleValidation 的基數設定為「單一」,以減少特定 RuleValidation 實行的實例數。RuleValidationKeyaddToProcessingMap() 可用於儲存事前驗證資料,以在將基數設定為「單一」時支援 RuleValidation 實行的執行緒安全處理。
這是否有幫助?