Конфигурация и выполнение бизнес-правил
Обработчик бизнес-правил выполняет зарегистрированные правила из набора бизнес-правил и возвращает результаты проверки. Обработчик бизнес-правил загружает набор бизнес-правил при предоставлении уникальных ключей набора бизнес-правил и ссылки на контекст объектов. Используя набор бизнес-правил, обработчик выполняет их для исходных объектов.
Выполнение наборов бизнес-правил обработчиком бизнес-правил разбивается на следующие фазы:
1. Загружает указанные исходные объекты для проверки
2. Загружает наборы бизнес-правил.
3. Создает и выполняет план выполнения наборов бизнес-правил.
4. Сообщает о результатах выполнения плана.
Последовательность операций по выполнению бизнес-правил
Вызов обработчика бизнес-правил
В рабочих процессах извещения об изменении и запроса на продвижение по умолчанию имеются примеры, показывающие, как вызвать обработчик бизнес-правил из рабочего процесса. Рабочий процесс извещения об изменении по умолчанию поставляется с двумя различными условными маршрутизаторами, вызывающими обработчик бизнес-правил. При наличии сбоев в задании "Аудит извещений об изменении" будет отображаться ссылка "Показать конфликты" для задания. Задание "Аудит извещений об изменении" позволяет продолжить работу без исправления сбоев. Аналогично в задании "Разрешение конфликтов выпуска" отображаются конфликты, если они есть. Прежде чем продолжить выполнение этого задания, необходимо устранить проблемы.
Ниже приведен другой пример того, как организовать цикл настройки в процессе утверждения запроса на продвижение. Бизнес-правило выполняется с условным маршрутизатором ИЛИ. При сбое отправляется сообщение электронной почты и отображается задание "Доработка запроса на продвижение".
Имеются два поддерживаемых интерфейса 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. Дополнительные сведения о том, как указать взаимосвязь для набора бизнес-правил и текущих поддерживаемых делегатов взаимосвязей, см. в Javadoc BusinessRuleSetBean.
В следующей таблице показаны делегаты по умолчанию, предоставляемые в стандартной установке 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. Наборы бизнес-правил будут обнаруживаться с помощью поиска иерархического контейнера. Наборы бизнес-правил, которые не включены, игнорируются.
На следующей блок-схеме описана последовательность операций поиска в контейнере для ключа набора правил и контейнера.