Suggerimenti su come posso implementare un sistema di corrispondenza generico per gli utenti?

1

Ho bisogno di aiuto per scrivere qualcosa. Sto provando a progettare un sistema che consenta agli utenti di impostare regole per il sistema da elaborare (in modo simile alle regole di elaborazione della posta elettronica, in un certo senso). Quando ricevo un blocco di dati (in questo caso, è un oggetto che ha proprietà con valori correlati al nome host del sistema client, alla versione del sistema operativo, ecc.) Voglio che l'utente sia in grado di creare un criterio come "quando il nome host equivale a 'somehost' o la versione del sistema operativo è maggiore di 6, ecc.

La tabella che ho finora ha un ID record, una colonna per contenere il nome del valore che sto controllando (come il nome della proprietà, ad esempio object.Hostname memorizza come "Hostname"), un codice a due caratteri per il operatore (EQ, NE, GT, ecc.), il valore da confrontare e un valore di chiave esterna.

Però non ne ho una calda confusione. Sto andando nella giusta direzione? Volevo che la corrispondenza fosse flessibile. Sto visualizzando le proprietà della classe in un menu a discesa in modo che l'utente possa selezionare la proprietà, digitare un valore di ricerca e selezionare i criteri. Pensieri?

Grazie!

    
posta Darkwater23 16.05.2013 - 21:20
fonte

1 risposta

1

Il tuo design è corretto. Suppongo che:

  • il tuo ID non è impostato su incremento automatico, perché significherebbe che non è possibile aggiungere più di una condizione a una determinata regola
  • per quanto riguarda il punto precedente: desideri avere più di una condizione per regola.

Suggerirei di aggiungere un'altra colonna per la connessione logica tra ciascuna condizione (OR; AND), a meno che le condizioni di una regola siano sempre OR o AND connesse. Sto assumendo questo perché hai scritto

when the hostname equals 'somehost' or the OS version is greater than 6, etc.

L'architettura non è eccessiva: è minimalista e pagherà! Avrei normalizzato ancora di più le tabelle:

  • Regole
  • Condizioni
  • Operatori
  • Proprietà
  • Valori
  • e così via

Dove lavoro, abbiamo un motore di regole personalizzate esattamente per tali scopi ed è progettato più o meno come lo hai descritto.

    
risposta data 25.05.2013 - 01:17
fonte

Leggi altre domande sui tag