Implementazione di un insieme di regole

5

Mi è stato assegnato il compito di implementare ciò che posso solo riferire come interprete di regole. Parte del mio lavoro consiste nell'identificare gli errori di produzione nel momento in cui si verificano con i codici di spedizione, e stiamo cercando di semplificare questo processo con una GUI user-friendly in modo da poter scaricare la responsabilità in un altro reparto. Posso gestire la parte della GUI abbastanza facilmente, ma non ho mai scritto niente del genere prima.

Ecco i tratti generali della situazione:

  1. Abbiamo un numero di clienti. Ognuno segue gli stessi processi per tutto tranne l'assegnazione dei codici alle spedizioni. Ogni cliente ha le proprie regole per farlo.
  2. Ogni regola è rappresentata da un'istruzione SQL in una stored procedure. Abbiamo anche le regole documentate in inglese semplice.
  3. Ad ogni regola è associato un file di convalida e una chiave generata dalle informazioni del pacchetto (ad esempio, il corriere e un numero di conto), pertanto le singole spedizioni conoscono sempre le proprie chiavi per i file di convalida.
  4. Ogni processo ha anche le proprie regole per determinare se il codice di spedizione è valido, solitamente espresso come la lunghezza di alcuni segmenti del codice di spedizione.

Quindi, quello che stiamo cercando di fare è rappresentarlo fuori da SQL. Esiste un buon modello di progettazione per rappresentare un insieme di regole che possono essere espresse in qualsiasi ordine in modo che possiamo creare un'applicazione per verificare perché si sono verificati errori?

Ecco un esempio di regole:

  1. Per ogni spedizione, ottieni il corriere, il numero di tracciamento e il numero di conto.
  2. Utilizza il corriere e le prime quattro cifre del numero di conto per determinare il centro di profitto per la spedizione dal file di valori 2003-01
  3. Utilizza il centro di profitto carrier + per ottenere il codice di destinazione dal 2003-22.
  4. Infine, determina il codice contabile concatenando il corriere + il codice di destinazione + il numero di conto.
  5. Convalidare il codice. Dovrebbero essere sedici caratteri alfanumerici. Il pacchetto deve avere un numero di conto a 8 cifre e un codice di operatore a 4 cifre. Nessuno dei valori utilizzati sopra deve essere vuoto.
posta Adam Wells 18.11.2016 - 20:40
fonte

1 risposta

1

È complesso, ma è possibile creare una lingua di regole, una lingua in cui è possibile esprimere regole. Lo farei solo se hai bisogno che le persone modifichino le regole senza l'aiuto di uno sviluppatore di software.

Un tale linguaggio avrebbe bisogno di operatori logici (booleani) e di "riferimenti variabili di ambiente"; tali riferimenti si riferiscono a cose come "numero di tracciamento", ecc. Potresti aver bisogno anche di altri operatori.

    
risposta data 23.11.2016 - 23:54
fonte

Leggi altre domande sui tag