Motivo di progettazione per il dominio di spedizione / ricezione

0

Sto lavorando alla riscrittura di una base di codice nel dominio di spedizione / ricezione e il mio piano corrente è quello di implementare la parte ricevente utilizzando un design di stato accoppiato con un modello di comando / decoratore. Volevo scegliere il cervello di altri ingegneri del software per ottenere prospettive diverse.

Considera che "Ricevere" è il processo in cui un cliente invia l'inventario a un magazzino e che il dipendente di magazzino deve ricevere i contenitori (scatole o pallet) e passare attraverso una serie di controlli prima di destinare l'inventario ai contenitori.

I piani iniziali sono i seguenti:

public class Container
{
  public State CurrentState {get; set;}
}

public abstract class State
{
  public Process  Process {get; set;}
}

public abstract class Process
{
 public Process NextProcess {get; set;}
 public bool IsCompleted {get; set;}
 public abstract bool Execute();
}

public class AwaitingState : State
{

}


public class AwaitingProcess : Process
{
 public override bool Execute()
 {
    //do something

    if(this.NextProcess != null)
    {
        return this.NextProcess.Execute();
    }

    return true;
 }
}

Tieni presente che questo è un piano approssimativo che sto elaborando. Sto pensando che ogni Container ha un State e ogni State deve passare attraverso una serie di passaggi per completare lo scopo come State . Ciò funzionerebbe bene se i passaggi fossero consecutivi e non richiedessero input umani; tuttavia, tutti questi passaggi sono passaggi del mondo reale lungo una "linea di ricezione". I due problemi con cui ho difficoltà sono i fatti che questi passaggi devono verificarsi tra le richieste Web e ogni fase potrebbe avere un parametro di input diverso. Ad esempio, un passaggio potrebbe comportare la scansione di un codice a barre mentre il passaggio successivo potrebbe essere un semplice input vero / falso dall'utente per guidare il sistema nella selezione del passaggio successivo. Quindi c'è anche il problema di persistere di questi dati e di ricostruire gli oggetti del dominio ogni volta su ogni richiesta per i passaggi successivi.

Quindi la mia domanda è di 2 volte:

Come posso piegare questi 2 modelli tenendo conto: esecuzioni di processi posticipati con diversi tipi di parametri.

O

Quali altri schemi di progettazione andrebbero bene per questo scenario?

    
posta Adrian 28.12.2017 - 23:43
fonte

1 risposta

1

Informazioni sui parametri per Execute () ... potresti provare i generici.

public abstract class Process<T> 
{ 
    public Process<T> NextProcess {get; set;} 
    public bool IsCompleted {get; set;} 
    public abstract bool Execute(T data); 
}

Se vuoi un maggiore controllo, dovresti usare code come RabbitMQ o strumenti simili.

    
risposta data 29.12.2017 - 00:42
fonte

Leggi altre domande sui tag