Пример нескольких правил, наборов правил и взаимосвязей
Предположим, что необходимо конфигурировать правила для нескольких изделий и нескольких взаимосвязей. Рассмотрим следующий пример.
Изделие 1
|
Изделие 2
|
Изделие 3
|
Организация
|
Два набора правил.
• Изменяемые объекты (правило взятия на изменение)
• Результирующие объекты (правило взятия на изменение и правило атрибута детали - имя должно быть короче 10 знаков)
|
Один набор правил.
• Результирующие объекты (правило атрибута детали - имя должно начинаться с EXT)
|
Правила или наборы правил отсутствуют
|
Один набор правил.
• Правило извещения об изменении - имя должно начинаться с CN
|
После создания всех правил можно сконфигурировать рабочий процесс для использования этих наборов правил при помощи кода, подобного следующему:
com.ptc.core.businessRules.engine.BusinessRuleSetBean[] ruleSetBeans = new
com.ptc.core.businessRules.engine.BusinessRuleSetBean[] {
com.ptc.core.businessRules.engine.BusinessRuleSetBean.
newBusinessRuleSetBean ("CNOrgRuleSet", com.ptc.core.businessRules.engine.
BusinessRuleSetBean.PRIMARY_BUSINESS_OBJECT),
com.ptc.core.businessRules.engine.BusinessRuleSetBean.
newBusinessRuleSetBean("AffectedPartProdRuleSet", wt.change2.
AffectedActivityData.class.getName()),
com.ptc.core.businessRules.engine.BusinessRuleSetBean.newBusinessRuleSetBean
("ResultingPartProdRuleSet", wt.change2.ChangeRecord2.class.getName())
};
businessRulesResultSetGlobal = "";
preReleaseConflictsMsg = "";
com.ptc.core.businessRules.validation.RuleValidationResultSet
resultSet = wt.businessRules.BusinessRulesHelper.engine.execute
(primaryBusinessObject, ruleSetBeans );
Примеры:
• Деталь, входящая в Изделие 1, которое является результирующим объектом, должна была бы (согласно правилу) иметь наименование, состоящее менее чем из 10 символов, и Изделие 1 не может быть взято на изменение.
• Для документа, входящего в Изделие 2, которое является результирующим объектом, правила отсутствуют, поскольку имеющиеся правила относятся только к деталям.