Da una prospettiva DDD c'è un servizio di generazione di report di un servizio di dominio o di infrastruttura?

2

Supponiamo di avere il seguente servizio la cui responsabilità è generare report Excel:

class ExcelReportService{

   public String generateReport(String fileFormatFilePath, ResultSet data){
      ReportFormat reportFormat = new ReportFormat(fileFormatFilePath);
      ExcelDataFormatterService excelDataFormatterService = new ExcelDataFormatterService();
      FormattedData formattedData = excelDataFormatterService.format(data);
      ExcelFileService excelFileService = new ExcelFileService();
      String reportPath= excelFileService.generateReport(reportFormat,formattedData);         
      return reportPath;    
   }    
}

Questo è uno pseudo codice per il servizio che desidero progettare dove:

  • fileFormatFilePath : percorso a un file di configurazione dove manterrò il formato del mio file excel (intestazioni, larghezza delle colonne, numero di colonne, .. ecc.)

  • data : i record effettivi restituiti dal database. Questo dato
    non può essere usato direttamente coz Potrei aver bisogno di fare ulteriori calcoli ai dati prima di inserirli nel file excel.

  • ReportFormat : oggetto valore per contenere il formato del report, ha metodi
    come getHeaders() , getColumnWidth() , ... ecc.

  • ExcelDataFormatterService : un servizio per contenere qualsiasi logica necessaria essere applicato ai dati restituiti dal database prima di inserirlo al file.

  • FormattedData : oggetto valore che rappresenta i dati formattati da essere inserito. ExcelFileService : un wrapper in cima alla libreria di terze parti che genera il file excel.

Come si determina se un servizio è un'infrastruttura o un servizio di dominio?
Ho i seguenti 3 servizi qui:
ExcelReportService , ExcelDataFormatterService e ExcelFileService ?

    
posta Songo 13.05.2014 - 10:21
fonte

2 risposte

2

Tutto ciò è un servizio di infrastruttura. Il dominio in DDD riguarda principalmente i dati e le regole aziendali che operano su questi dati. Non ha nulla a che fare con il modo in cui i dati vengono presentati. Pertanto, nel tuo esempio, l'unica parte correlata al dominio è il modo in cui ottieni data .

    
risposta data 13.05.2014 - 10:39
fonte
1

Penso che potresti metterlo in questo modo: nel tuo caso specifico se lo scopo principale dell'applicazione / webservice / qualsiasi cosa tu stia sviluppando è fare rapporti, allora il reporting tende ad essere considerato un servizio di dominio. Altrimenti è un servizio di infrastruttura.

    
risposta data 31.01.2015 - 21:56
fonte