Vincoli di espressione e vincoli di tabella nei modelli di configurazione prodotto

In questo articolo viene descritto l'utilizzo dei vincoli di espressione e dei vincoli di tabella. I vincoli consentono di controllare i valori di attributo da selezionare quando si configurano i prodotti per un ordine cliente, un'offerta di vendita, un ordine fornitore o un ordine di produzione. È possibile utilizzare i vincoli di espressione o i vincoli di tabella, a seconda di come si preferisce creare i vincoli.

I vincoli consentono di controllare i valori di attributo da selezionare quando si configurano i prodotti per un ordine cliente, un'offerta di vendita, un ordine fornitore o un ordine di produzione. È possibile utilizzare i vincoli di espressione o i vincoli di tabella, a seconda di come si preferisce creare i vincoli.

Cosa sono i vincoli di espressione?

I vincoli di espressione sono caratterizzati da un'espressione che utilizza funzioni e operatori aritmetici e booleani. Un vincolo di espressione viene scritto per un componente specifico nel modello di configurazione prodotto e non può essere riutilizzato o condiviso con un altro componente. Può tuttavia fare riferimento ad attributi di sottocomponenti del componente per cui è scritto.

Cosa sono i vincoli di tabella?

I vincoli di tabella elencano le combinazioni di valori consentiti per gli attributi quando si configura un prodotto. Le definizioni dei vincoli di tabella possono essere utilizzate genericamente. Quando si crea un vincolo di tabella per un componente in un modello di configurazione prodotto, selezionare una definizione di vincolo di tabella. Per creare le combinazioni consentite, si aggiungono attributi di tipi specifici ai componenti. Ogni tipo di attributo ha un valore specifico.

Esempio di vincolo di tabella

In questo esempio viene illustrato come è possibile limitare la configurazione di un altoparlante a rivestimenti e frontali specifici del cabinet. Nella prima tabella vengono illustrati i rivestimenti e i frontali del cabinet che sono in genere disponibili per la configurazione. I valori sono definiti per i tipi di attributo Rivestimento del cabinet e Griglia anteriore.

Tipo di attributo Valori
Rivestimento del cabinet Nero, Quercia, Palissandro, Bianco
Griglia anteriore Nero, Metallo, Bianco

Nella tabella seguente vengono illustrate le combinazioni definite dal vincolo di tabella Colore e rivestimento. Utilizzando questo vincolo di tabella, è possibile configurare un altoparlante con un rivestimento di quercia e una griglia nera, un rivestimento di palissandro e una griglia bianca, ecc.

Fine Griglia
Quercia Nero
Palissandro Bianco
Bianco Nero
Bianco Bianco
Nero Nero
Nero Metallo

È possibile creare vincoli di tabella definiti dal sistema e vincoli di tabella definiti dall'utente. Per ulteriori informazioni, vedere Vincoli di tabella definiti dall'utente e dal sistema.

Quale sintassi deve essere utilizzata per scrivere i vincoli?

Per scrivere i vincoli, è necessario utilizzare la sintassi OML (Optimization Modeling Language). Il sistema utilizza il risolutore dei vincoli Microsoft Solver Foundation.

È meglio utilizzare i vincoli di tabella o i vincoli di espressione?

È possibile utilizzare i vincoli di espressione o i vincoli di tabella, a seconda di come si preferisce creare i vincoli. Si sviluppa un vincolo di tabella come matrice, mentre un vincolo di espressione è una singola istruzione. Quando si configura un prodotto, non importa il tipo di vincolo utilizzato. Nel seguente esempio è mostrato in che modo i due metodi differiscono.

Quando si configura un prodotto tramite le seguenti impostazioni del vincolo, sono consentite queste combinazioni:

  • Un prodotto di colore nero e con dimensioni 30 o 50
  • Un prodotto di colore rosso e con dimensioni 20

Impostazione del vincolo di tabella

Colore Dimensione
Nero 30
Nero 50
Rosso 20

Impostazione del vincolo di espressione

(Color == "Nero" & (size == "30" | size == "50")) | (color == "Rosso" & size = "20")

È necessario utilizzare gli operatori o la notazione di infisso quando si scrivono i vincoli di espressione?

È possibile scrivere un vincolo di espressione utilizzando gli operatori di prefisso disponibili o la notazione di infisso. Per gli operatori Min, Max e Abs non è possibile utilizzare una notazione di infisso. Questi operatori sono inclusi come operatori standard nella maggior parte dei linguaggi di programmazione.

Quali operatori e notazione di infisso è possibile utilizzare quando si scrivono i vincoli di espressione?

Nelle tabelle seguenti sono elencati gli operatori e la notazione di infisso che è possibile utilizzare per scrivere un vincolo di espressione per un componente in un modello di configurazione prodotto. Negli esempi della prima tabella è possibile vedere come scrivere un'espressione utilizzando la notazione di infisso o gli operatori.

Operatore Description Sintassi Esempi
Implies Se la condizione a è true, applicare il vincolo b. Implies[a, b], infix: a -: b
  • Operatore: Implies[x != 0, y >= 0]
  • Notazione di infisso: x != 0 -: y >= 0
E È true solo se tutte le condizioni sono true. Se il numero di condizioni è 0 (zero), viene generato il valore True. And[args], infix: a & b & ... & z
  • Operatore: And[x == 2, y <= 2]
  • Notazione di infisso: x == 2 & y <= 2
Or È true se qualsiasi condizione è true. Se il numero di condizioni è 0 (zero), viene generato il valore False. Or[args], infix: a | b | ... | z
  • Operatore: Or[x == 2, y <= 2]
  • Notazione di infisso: x == 2 | y <= 2
Più Questa espressione somma le condizioni. Se il numero di condizioni è 0 (zero), viene generato il valore 0. Plus[args], infix: a + b + ... + z
  • Operatore: Plus[x, y, 2] == z
  • Notazione di infisso: x + y + 2 == z
Meno Nega il proprio argomento. Questa espressione deve avere esattamente una condizione. Minus[expr], infix: -expr
  • Operatore: Minus[x] == y
  • Notazione di infisso: -x == y
Abs Questa espressione accetta il valore assoluto della propria condizione. Questa espressione deve avere esattamente una condizione. Abs[expr] Operatore: Abs[x]
Tempi questa espressione accetta il prodotto delle proprie condizioni. Se il numero di condizioni è 0 (zero), viene generato il valore 1. Times[args], infix: a * b * ... * z
  • Operatore: Times[x, y, 2] == z
  • Notazione di infisso: x * y * 2 == z
Potenza Questa espressione accetta un valore esponenziale. Questa espressione applica l'elevamento a potenza da destra a sinistra. Ciò significa che è associativa a destra e di conseguenza Power[a, b, c] equivale a Power[a, Power[b, c]]. Elevamento a potenza può essere utilizzato solo se l'esponente è una costante positiva. Power[args], infix: a ^ b ^ ... ^ z
  • Operatore: Power[x, 2] == y
  • Notazione di infisso: x ^ 2 == y
Max. Questa espressione genera la maggiore condizione. Se il numero di condizioni è 0 (zero), viene generato il valore Infinity. Max[args] Operatore: Max[x, y, 2] == z
Min. Questa espressione genera la condizione minore. Se il numero di condizioni è 0 (zero), viene generato il valore Infinity. Min[args] Operatore: Min[x, y, 2] == z
Non Questa espressione genera l'inverso logico della propria condizione. Questa espressione deve avere esattamente una condizione. Not[expr], infix: !expr
  • Operatore: Not[x] & Not[y == 3]
  • Notazione di infisso: !x!(y == 3)

Gli esempi nella seguente tabella illustrano come scrivere una notazione di infisso.

Notazione di infisso Descrizione
x + y + z Aggiunta
x * y * z Moltiplicazione
x - y La sottrazione binaria è tradotta come l'addizione binaria nei casi in cui esiste un secondo valore negato.
x ^ y ^ z Elevamento a potenza con associatività a destra
!x Booleano not
x -: y Implicazione booleana
x y
x & y & z Booleano and
x == y == z Uguaglianza
x != y != z Distinto
x < y < z Minore di
x > y > z Maggiore di
x <= y <= z Uguale o minore di
x >= y >= z Uguale o maggiore di
(x) Le parentesi hanno precedenza sulla priorità predefinita.

Perché i vincoli di espressione non vengono convalidati correttamente?

Non è possibile utilizzare le parole chiave riservate come nomi di risoluzione per gli attributi, i componenti o i sottocomponenti nel modello di configurazione prodotto. Ecco un elenco delle parole chiave riservate che non possono essere utilizzate.

  • Arrotonda eccesso
  • Elemento
  • Uguale
  • Piano
  • Se
  • Minore di
  • Maggiore di
  • Implies
  • Registro
  • Max.
  • Min.
  • Meno
  • Più
  • Potenza
  • Tempi
  • Fascia oraria
  • Modello
  • Potere decisionale
  • Obiettivo

Risorse aggiuntive

Creare un vincolo di espressione

Aggiungere un calcolo a un modello di configurazione dei prodotti