Возможности управления данными > Управление структурами деталей > Возможности Windchill по управлению опциями и исполнениями > Фильтрация конфигурируемой структуры изделия с помощью фильтра опций > Вычисление выражений во время фильтрации опций
  
Вычисление выражений во время фильтрации опций
При фильтрации связи использования рассматриваются два вида выражений: выражения в связи использования и выражения в дочерней детали связи использования. Если выражение в дочерней детали существует, оно всегда используется для фильтрации конфигурируемой дочерней детали. Если деталь неконфигурируемая, то выражение рассматривается (и может быть назначено с использованием интерфейса пользователя), только если для настройки Allow Assignment of Expressions to Non-Configurable Items задано значение true.
Если любой из двух видов выражений (в случае, если представлены оба вида) оценивается как ложный, связь использования отфильтровывается.
Оценка логических выражений
Во время фильтрации система оценивает назначенные выражения, сравнивая их с вариантами, выбранными в фильтре опций. Если для опции выбраны какие-либо варианты, этим выбранным вариантам назначается значение true, а невыбранным вариантам - значение false. Эти значения подставляются в выражение, и выражение оценивается. При укороченной оценке логического выражения определяется значение выражения, даже если некоторые переменные выражения не определены. Рассмотрим следующие примеры.
Случай 1
Имеется выражение: RED && LARGE
Если переменная RED или LARGE имеет значение FALSE, то значением всего выражения является ЛОЖЬ независимо от того, какое значение имеет другая переменная.
Случай 2
Имеется выражение: RED||LARGE
Если переменная RED или LARGE имеет значение TRUE, то значением всего выражения является TRUE независимо от того, какое значение имеет другая переменная.
Общий случай
Эти примеры можно расширить до общего случая логических выражений, поскольку их можно разложить на вложенные операции конъюнкции, дизъюнкции и отрицания. Например, рассмотрим следующее выражение:
(X || Y) && (Z && W) && (V || W)
Если переменная Z имеет значение FALSE, то все логическое выражение оценивается как FALSE независимо от значений переменных X, Y, W, V.
Дополнительные примеры использования для фильтрации
Существуют дополнительные примеры использования, которые можно использовать при фильтрации конфигурируемой структуры.
Структура изделия может содержать как базовые, так и расширенные выражения, назначенные различным исполнениям узла. Поведение фильтрации опций можно описать следующим образом.
В случае базовых выражений фильтр учитывает объединение выбора для элемента и для связи использования. Если хотя бы одно выражение имеет значение ИСТИНА, исполнение узла не отфильтровывается.
В случае расширенных выражений исполнение узла не отфильтровывается, только если и выражение для элемента, и выражение для связи использования этого элемента имеют значение ИСТИНА.
В сконфигурированной структуре изделия выражение назначается как связи использования, так и вхождениям исполнения узла. Фильтр опций вычисляет сначала выражение, назначенное связи использования, а затем - выражение, назначенное его вхождениям, в следующем порядке.
Если назначенное выражение имеет значение ЛОЖЬ, исполнение узла отфильтровывается, включая все его вхождения.
Если назначенное выражение имеет значение ИСТИНА, то фильтр опций вычисляет выражение, назначенное вхождениям. Если это выражение имеет значение ЛОЖЬ, вхождение отфильтровывается.