Выполнение плана выполнения набора бизнес-правил
Создание плана выполнения набора бизнес-правил включает следующее:
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, проверка конфигурации также вызывается до выполнения проверки бизнес-правила.
Метод инициализации TheRuleValidation с именем prepare используется для выполнения некоторой начальной предварительной обработки всего набора исходных объектов, которые будут проверяться на соответствие набору бизнес-правил. Это позволяет выполнять предварительную проверку на сервере Windchill (например, может использоваться загрузка шаблона жизненного цикла, который является общим для многих элементов). Лучше всего вызывать многообъектные интерфейсы API из метода RuleValidation.prepare. Не рекомендуется использовать метод 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 должен быть установлен как "singleton", чтобы уменьшить число экземпляров в конкретной реализации RuleValidation. Метод addToProcessingMap() класса RuleValidationKey может использоваться для хранения данных предварительной проверки, чтобы поддерживать потокобезопасную обработку реализаций RuleValidation, если для типа отношения задано значение singleton.
Было ли это полезно?