Devo eseguire un certo numero di istruzioni (che stanno eseguendo .exe) in un ciclo

-2

Devo eseguire un certo numero di istruzioni (che stanno eseguendo .exe) in un ciclo.

 ForEach(object obj in ListOfVersions)
    {
      Step 1: call Exe1 Args=obj.somevalues
      Log Step 1 completed for obj

      Step 2: call Exe2 Args=obj.somevalues
      Log Step 2 completed for obj

      Step 3: call Exe3 Args=obj.somevalues
      Log step 3 completed for obj
    }

Step 4: call Exe4

Esiste uno schema di progettazione specifico disponibile per la situazione di sopra.

    
posta Dr. Rajesh Rolen 02.05.2012 - 08:15
fonte

2 risposte

1

Sono d'accordo con @Neil che dice che non sembra esistere un nome di modello speciale per questo tipo di elaborazione. Il nome che darei è "Processo di elaborazione batch" con ogni chiamata che rappresenta un passaggio nel batch. Questa denominazione viene spesso utilizzata in alcuni strumenti ETL e Mainframe.

Nota comunque:

  • È necessario decidere se tenere tutti i registri in un file o meno. Se lo si desidera, sono disponibili due opzioni: utilizzare file separati e concatenare alla fine di tutti i processi oppure utilizzare uno stream writer e mantenerlo aperto fino al completamento di tutti i processi, quindi svuotarlo e chiuderlo in tutti i casi (anche quando un processo non riesce ).

  • Devi eseguire il controllo degli errori dopo ogni chiamata.

risposta data 02.05.2012 - 11:40
fonte
0

Non esiste uno schema specifico in senso generale. Se ti riferisci alle operazioni asincrone, la risposta qui sotto non è quella che stai cercando:

public void executeForAll() 
{
    ForEach(object obj in ListOfVersions)
    {
      execute("Exe1", obj);
      execute("Exe2", obj);
      execute("Exe3", obj);
    }
    execute("Exe4");
}

public void execute(String executable) 
{
    execute(executable, null);
}

public void execute(String executable, object obj) 
{
    // Call executable Args=obj == null ? null : obj.somevalues
    log(executable, obj);
}

public void log(String executable, object obj)
{
    // Log Step 2 completed for obj
}
    
risposta data 02.05.2012 - 10:57
fonte

Leggi altre domande sui tag