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