业务规则配置和执行
业务规则引擎可执行业务规则集中注册的规则并返回验证结果。只要给出业务规则集的唯一键和来自种子对象的容器参考,业务规则引擎即可检索该业务规则集。引擎会针对种子对象执行业务规则集。
以下阶段将介绍业务规则引擎执行业务规则集的方法:
1. 检索要验证的指定种子对象
2. 检索业务规则集
3. 针对业务规则集生成执行计划并予以执行
4. 报告已执行计划的结果
业务规则执行工作流
调用业务规则引擎
默认更改通告和升级请求工作流中提供了一些示例,用于说明如何从工作流调用业务规则引擎。默认更改通告工作流附带了两个用于调用业务规则引擎的不同条件。如果发生任何失败,则审计更改通告任务将在任务中显示名为“查看冲突”的链接。审计更改通告任务允许用户在不修复失败的情况下继续操作。同样,解决发布冲突任务会显示冲突 (如果有)。用户必须先解决问题,然后才能继续执行此任务。
以下是有关如何在升级请求批准过程中设置返工循环的另一个示例。业务规则将在 OR 条件中执行。如果失败,则会发送电子邮件并显示返工升级请求任务。
有两个支持的 API 可用于执行业务规则集。
• BusinessRulesHelper.engine.execute(primaryBusinessObject, BusinessRuleSetBean[]) : RuleValidationResultSet
第二个选项允许覆盖所有对象的容器,而不管是否为种子对象所在容器。此 API 要求在前面指定种子对象,并且仅支持一次执行一个业务规则集。
• BusinessRulesHelper.engine.execute(“Business rule set”, RuleValidationCriteria) : RuleValidationResultSet
有关详细信息,请参阅 Javadoc。
检索种子对象
关系委派用于获取要针对特定业务规则集进行评估的主要业务对象的种子对象。所有关系委派均实现 RuleValidation 接口。
关系委派在 service.properties 中注册。以下委派示例将获取主要对象的生成对象:
<Service context="default" name="com.ptc.core.businessRules.relationship.
BusinessRuleSetRelationshipDelegate">
<Option serviceClass="com.ptc.core.businessRules.relationship.
ResultingObjectsRelationshipDelegate"
selector="wt.change2.ChangeRecord2"
cardinality="singleton"
requestor="null"/>
选择器是用于查找关系委派实例的关系键。关系键命名约定是使用链接类名称,但并非必需选项。请注意,如果关系委派返回关系的链接,则链接的角色 B 对象将被用作种子对象。可在 BusinessRuleSetBean 或 RuleValidationCriteria 中选择指定目标链接角色。有关如何为业务规则集和当前支持的关系委派指定关系的详细信息,请参阅 BusinessRuleSetBean 的 Javadoc。
下表显示了在标准 Windchill 安装中提供的默认委派:
关系 | 关系委派 | 说明 |
wt.change2.AffectedActivityData | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | 如果主要业务对象是更改通告或更改任务,则获取其受影响的对象链接。 |
wt.change2.ReportedAgainst | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | 如果主要业务对象是问题报告或超差,则获取其受影响的对象链接。 |
wt.change2.RelevantRequestData | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | 如果主要业务对象是更改请求,则获取其受影响的对象链接 |
wt.change2.ChangeRecord2 | com.ptc.core.businessRules.relationship.ResultingObjectsRelationshipDelegate | 如果主要业务对象是更改通告或更改任务,则获取其产生的对象链接。 |
wt.change2.IncludedIn2 | com.ptc.core.businessRules.relationship.IncludedInRelationshipDelegate | 如果主要业务对象是更改通告,则获取其更改任务,或者,如果主要业务对象是更改任务,则获取其更改通知。 |
wt.maturity.MaturityBaseline | com.ptc.core.businessRules.relationship.MaturityBaselineObjectsRelationshipDelegate | 如果主要业务对象是升级通知,则获取其基线项。 |
wt.maturity.PromotionSeed | com.ptc.core.businessRules.relationship.PromotionSeedObjectsRelationshipDelegate | 如果主要业务对象是升级通知,则获取其升级种子。 |
wt.maturity.PromotionTarget | com.ptc.core.businessRules.relationship.PromotionTargetObjectsRelationshipDelegate | 如果主要业务对象是升级通知,则获取其升级目标。 |
基于容器检索业务规则集
要从系统获取业务规则集,需要以下信息:
1. 业务规则集的唯一键
2. 应为其评估规则的容器参考
业务规则引擎将负责从 Windchill 服务中获取相应的业务规则集。将使用分级容器查找探索业务规则集。未启用的业务规则集将被忽略。
以下流程图将说明用于查找规则集键和容器的容器工作流。