略過企業規則衝突的範例

文章推薦指數: 80 %
投票人數:10人

略過企業規則衝突的範例. 您可能想要顯示某些或全部企業規則失敗,但不阻礙繼續或完成工作流程。

建立兩個唯一的企業規則集,一個放置繼續或完成流程所需的規則,另一個 ... 略過企業規則衝突的範例 您可能想要顯示某些或全部企業規則失敗,但不阻礙繼續或完成工作流程。

建立兩個唯一的企業規則集,一個放置繼續或完成流程所需的規則,另一個放置會報告其失敗但並非完成流程所需的規則。

擁有兩個單獨的企業規則集可讓您將工作流程配置為在工作流程中的不同位置呼叫任一規則集。

下列範例顯示如何配置繼續所需的規則集以及非所需的第二個規則集。

假設您想要檢查是否已填入某些屬性(在此情況下為材料)。

如果屬性為空,流程會繼續;但發行目標規則必須通過。

1.針對屬性檢查,建立非必要的企業規則集。

standardX20.dtd">wt.businessRules.BusinessRuleSet:10001/wt.inf.container.OrgContainer=DemoOrganization/wt.pdmlink.PDMLinkProduct=Example1TestProductEXAMPLE1_NON_REQUIRED_ATTRIBUTE_RULE_SETEXAMPLE1_NON_REQUIRED_ATTRIBUTE_RULE_SETEXAMPLE1_NON_REQUIRED_ATTRIBUTE_RULE_SETtruetruetrue 2.為材料建立屬性規則。

standardX20.dtd">wt.businessRules.BusinessRule:10002/wt.inf.container.OrgContainer=DemoOrganization/wt.pdmlink.PDMLinkProduct=Example1TestProductEXAMPLE1_ATTRIBUTE_RULEATTRIBUTE_RULEExample1AttributeRuleExample1AttributeRuletruetrue 3.為屬性規則與非必要的規則集建立連結。

standardX20.dtd">wt.businessRules.BusinessRuleLink:10003wt.businessRules.BusinessRuleSet:10001wt.businessRules.BusinessRule:100021true 4.為發行目標規則建立必要的企業規則集。

standardX20.dtd">wt.businessRules.BusinessRuleSet:20001/wt.inf.container.OrgContainer=DemoOrganization/wt.pdmlink.PDMLinkProduct=Example1TestProductEXAMPLE1_RELEASE_RULE_SETExample1_ReleaseRuleSettrueExample1_ReleaseRuleSettruetrue 5.重新載入網站發行目標規則。

standardX20.dtd">wt.businessRules.BusinessRule:20002RELEASE_TARGETRELEASE_TARGETcom.ptc.windchill.enterprise.change2.change2ClientResource:RELEASE_TARGET_RULE_NAMEcom.ptc.windchill.enterprise.change2.change2ClientResource:RELEASE_TARGET_RULE_DESCtruetrue 6.為目標規則與必要規則集建立連結。

standardX20.dtd">wt.businessRules.BusinessRuleLink:20003wt.businessRules.BusinessRuleSet:20001wt.businessRules.BusinessRule:200021true 7.執行所有必要與非必要的企業規則集。

欲顯示所有必要與非必要的規則衝突,請將「稽核變更通知」工作流程任務條件更新為使用EXAMPLE1_RELEASE_RULE_SET與EXAMPLE1_NON_REQUIRED_ATTRIBUTE_RULE_SET兩個規則集。

if(wt.change2.ChangeHelper2.isTrackingChange((wt.inf.container.WTContained)primaryBusinessObject)){result="RevisioningEnabled";}else{result="RevisioningDisabled";com.ptc.core.businessRules.engine.BusinessRuleSetBean[]beans=newcom.ptc.core.businessRules.engine.BusinessRuleSetBean[]{//Configuretocallnon-requiredrulesetcom.ptc.core.businessRules.engine.BusinessRuleSetBean.newBusinessRuleSetBean("EXAMPLE1_NON_REQUIRED_ATTRIBUTE_RULE_SET","wt.change2.ChangeRecord2"),//Configuretocallrequiredrulesetcom.ptc.core.businessRules.engine.BusinessRuleSetBean.newBusinessRuleSetBean("EXAMPLE1_RELEASE_RULE_SET","wt.change2.ChangeRecord2")};}com.ptc.core.businessRules.validation.RuleValidationResultSetresultSet=wt.businessRules.BusinessRulesHelper.engine.execute(primaryBusinessObject,beans);if(resultSet.hasResultsByStatus(com.ptc.core.businessRules.validation.RuleValidationStatus.FAILURE)){businessRulesResultSetGlobal=wt.businessRules.BusinessRulesHelper.serialize(resultSet);preReleaseConflictsMsg=newwt.util.WTMessage("com.ptc.windchill.enterprise.change2.change2ClientResource",com.ptc.windchill.enterprise.change2.change2ClientResource.BUSINESS_RULES_PRERELEASE_VALIDATION_MSG,null).getLocalizedMessage();preReleaseConflictsMsg=preReleaseConflictsMsg+"\n"+resultSet.getFailedRulesMessage(java.util.Locale.getDefault());}8.執行必要的企業規則集。

針對必要的規則集,為避免變更通知工作流程繼續執行,請將條件更新為針對ResolveReleaseConflicts工作流程任務,僅使用必要的規則集EXAMPLE1_RELEASE_RULE_SET。

result="NOT_READY";com.ptc.core.businessRules.engine.BusinessRuleSetBean[]beans=newcom.ptc.core.businessRules.engine.BusinessRuleSetBean[]{//Configuretocallrequiredrulesetonlycom.ptc.core.businessRules.engine.BusinessRuleSetBean.newBusinessRuleSetBean("EXAMPLE1_RELEASE_RULE_SET","wt.change2.ChangeRecord2")};com.ptc.core.businessRules.validation.RuleValidationResultSetresultSet=wt.businessRules.BusinessRulesHelper.engine.execute(primaryBusinessObject,beans);if(!resultSet.hasResultsByStatus(com.ptc.core.businessRules.validation.RuleValidationStatus.FAILURE)){result="PROCEED";}else{businessRulesResultSetGlobal=wt.businessRules.BusinessRulesHelper.serialize(resultSet);preReleaseConflictsMsg=newwt.util.WTMessage("com.ptc.windchill.enterprise.change2.change2ClientResource",com.ptc.windchill.enterprise.change2.change2ClientResource.BUSINESS_RULES_PRERELEASE_VALIDATION_MSG,null).getLocalizedMessage();preReleaseConflictsMsg=preReleaseConflictsMsg+"\n"+resultSet.getFailedRulesMessage(java.util.Locale.getDefault());}「解決發行衝突」工作流程任務會繼續再生任務,直到所有衝突均已解決為止。



請為這篇文章評分?