Ограничения выражений и ограничения таблиц в моделях конфигурации продукта
В этой статье описывается использование ограничений выражений и ограничений таблиц. Ограничения управляют значениями атрибутов, которые можно выбирать при настройке продуктов для заказа на продажу, предложения по продажам, заказа на покупку или производственного заказа. Можно использовать ограничения выражений или ограничения таблиц в зависимости того, как вы предпочитаете формировать ограничения.
Ограничения используются для управления значениями атрибутов, которые можно выбирать при настройке продуктов для заказа на продажу, предложения по продажам, заказа на покупку или производственного заказа. Можно использовать ограничения выражений или ограничения таблиц в зависимости того, как вы предпочитаете формировать ограничения.
Что такое ограничения выражений?
Ограничения выражения описываются выражением, которое использует арифметические и логические операторы и функции. Ограничение выражения пишется для определенного компонента в модели конфигурации продукта. Его нельзя использовать повторно или совместно с другим компонентом. Однако ограничения выражения для компонента могут ссылаться на атрибуты субкомпонентов компонента.
Что такое ограничения таблиц?
Ограничения таблиц содержат сочетания допустимых значений атрибутов при настройке продукта. Определения ограничений таблиц можно использовать универсальным образом. При создании ограничения таблицы для компонента в модели конфигурации продукта выбирается определение ограничения таблицы. Чтобы создать допустимые комбинации, можно добавить атрибуты конкретных типов к компонентам. Каждый тип атрибута имеет определенное значение.
Пример ограничения таблицы
Этот пример показывает, как вы можете ограничить конфигурацию динамика определенными видами отделки корпуса и передней панели. В первой таблице показаны отделки корпуса и передние решетки, которые обычно доступны для настройки. Значения определены для типов атрибутов Отделка корпуса и Передняя решетка.
Тип атрибута | Значения |
---|---|
Отделка корпуса | Черный, Дуб, Палисандр, Белый |
Передняя решетка | Черная, Металл, Белая |
В следующей таблице показаны сочетания, которые определены ограничением таблицы Цвет и отделка. Путем использование этого ограничения таблицы вы можете задать конфигурацию динамика с отделкой дубом и черной решеткой, с отделкой палисандром и белой решеткой и так далее.
Готово | Решетка |
---|---|
Дуб | Черный |
Палисандр | Белый |
Белый | Черный |
Белый | Белый |
Черный | Черный |
Черный | Металл |
Вы можете создавать системные и пользовательские ограничения таблиц. Дополнительную информацию см. в разделе Системные и пользовательские ограничения таблиц.
Какой синтаксис следует использовать для записи ограничений?
При написании ограничений используется синтаксис языка OML. В системе для разрешения ограничений используется решатель ограничений Microsoft Solver Foundation.
Как выбрать между ограничениями таблиц и ограничениями выражений?
Можно использовать как ограничения выражений, так и ограничения таблиц, в зависимости того, как вы предпочитаете формировать ограничения. Ограничение таблицы формируется как матрица, тогда как ограничение выражения — как отдельное выражение. При настройке продукта используемый тип ограничения не имеет значения. Следующий пример демонстрирует отличия этих двух методов.
Когда вы настраиваете продукт путем использования приведенных ниже установок ограничения, разрешены следующие комбинации:
- Продукт в цвете "Черный", размер 30 или 50
- Продукт в цвете "Красный", размер 20
Настройка ограничений таблицы
Цвет | Размер |
---|---|
Черный | 30 |
Черный | 50 |
Красный | 20 |
Настройка ограничения выражения
(Color == "Black" & (size == "30" | size == "50")) | (color == "Red" & size = "20")
Нужно ли использовать операторы или инфиксную нотацию при написании ограничений выражений?
Вы можете писать ограничения выражений с помощью доступных префиксных операторов или с использованием инфиксной нотации. Для операторов Min, Max и Abs использовать инфиксную нотацию нельзя. Эти операторы включены в качестве стандартных операторов в большинство языков программирования.
Какие операторы и инфиксные нотации можно использовать при написании ограничений выражений?
В следующей таблице перечислены операторы и инфиксные нотации, которые можно использовать при написании ограничений выражений для компонента модели конфигурации продукта. В примерах в первой таблице показано, как записать выражение с помощью инфиксной нотации или операторов.
Оператор | Описание | Синтаксис | Примеры |
---|---|---|---|
Implies | Если условие a имеет значение true, то примените раскладку b. | Implies[a, b], infix: a -: b |
|
И | Выражение истинно, только если условия истинны. Если число условий равно 0, результатом будет True. | And[args], инфиксная нотация: a & b & ... & z |
|
Или | Выражение истинно, если любое из условий истинно. Если число условий равно 0, результатом будет False. | Or[args], infix: a | b | ... | z |
|
Плюс | Выражение суммирует его условия. Если число условий равно 0, результатом будет 0. | Plus[args], infix: a + b + ... + z |
|
Минус | Инвертирует свой аргумент. У этого выражения должно быть ровно одно условие. | Minus[expr], infix: -expr |
|
Abs | Выражение получает модуль значения условия. У этого выражения должно быть ровно одно условие. | Abs[expr] | Оператор: Abs[x] |
Время | Выражение получает произведение условий. Если число условий равно 0, результатом будет 1. | Times[args], infix: a * b * ... * z |
|
Степень | Выражение возводит аргумент в степень. Возведение в степень применяется справа налево. (То есть, это правоассоциативное выражение.) Поэтому выражение Power[a, b, c] эквивалентно Power[a, Power[b, c]]. Power можно использовать только в том случае, если экспонента является положительной константой. | Power[args], infix: a ^ b ^ ... ^ z |
|
Макс. | Выражение получает наибольшее из условий. Если число условий равно 0, результатом будет Infinity. | Max[args] | Оператор: Max[x, y, 2] == z |
Мин. | Выражение получает наименьшее из условий. Если число условий равно 0, результатом будет Infinity. | Min[args] | Оператор: Min[x, y, 2] == z |
Не | Выражение получает логическую инверсию условия. У этого выражения должно быть ровно одно условие. | Not[expr], инфиксная нотация: !expr |
|
Примеры в следующей таблице показывают запись в инфиксной нотации.
Нотация infix | Наименование |
---|---|
x + y + z | Дополнение |
x * y * z | Умножение |
x - y | Двоичное вычитание преобразуется так же, как двоичное сложение с измененным знаком второго аргумента. |
x ^ y ^ z | Возведение в степень является правоассоциативным выражением |
!x | Логическое НЕ |
x -: y | Логическая импликация |
x | y |
x & y & z | Логическое И |
x == y == z | Равенство |
x != y != z | Определенный |
x < y < z | Меньше |
x > y > z | Больше |
x <= y <= z | Меньше или равен |
x >= y >= z | Больше или равен |
(x) | Скобки имеют наивысший приоритет. |
Почему мои ограничения выражений не проходят проверку?
Нельзя использовать зарезервированные ключевые слова, такие как имена решателя, для атрибутов, компонентов или субкомпонентов в модели конфигурации продукта. Ниже приведен список зарезервированных ключевых слов, которые нельзя использовать.
- Ceiling
- Элемент
- Равно
- Этаж
- Если
- Less
- Больше
- Implies
- Журнал
- Макс.
- Мин.
- Минус
- Плюс
- Мощность
- Время
- Интервал
- Модель
- Роль в решениях
- Цель