コード例 #1
0
        /// <summary>
        ///		Ejecuta el proyecto
        /// </summary>
        private async Task ExecuteProjectAsync(BlockLogModel block, string project, string context, CancellationToken cancellationToken)
        {
            JobProjectManager manager = new JobProjectManager(Logger);

            // Añade los procesadores
            manager.AddProcessor(new LibJobProcessor.Cloud.JobCloudManager(Logger));
            manager.AddProcessor(new LibJobProcessor.Database.JobDatabaseManager(Logger));
            manager.AddProcessor(new LibJobProcessor.FilesShell.JobFileShellManager(Logger));
            manager.AddProcessor(new LibJobProcessor.Rest.JobRestManager(Logger));
            // Ejecuta el proyecto
            await manager.ProcessAsync(project, context, cancellationToken);

            // Asigna los errores
            if (manager.Errors.Count == 0)
            {
                block.Info("La ejecución del proyecto ha terminado correctamente");
            }
            else
            {
                string errorTotal = "Error en la ejecución del proyecto";

                // Añade los errores
                foreach (string error in manager.Errors)
                {
                    if (!string.IsNullOrWhiteSpace(error))
                    {
                        errorTotal += Environment.NewLine + error.Trim();
                    }
                }
                // Lanza el mensaje de error
                block.Error(errorTotal);
            }
        }
コード例 #2
0
        /// <summary>
        ///		Crea el manager de los procesos
        /// </summary>
        private static JobProjectManager CreateManager()
        {
            JobProjectManager manager = new JobProjectManager(Logger);

            // Añade los procesadores
            manager.AddProcessor(new Libraries.LibJobProcessor.Cloud.JobCloudManager(Logger));
            manager.AddProcessor(new Libraries.LibJobProcessor.Database.JobDatabaseManager(Logger));
            manager.AddProcessor(new Libraries.LibJobProcessor.Powershell.JobPowershellManager(Logger));
            manager.AddProcessor(new Libraries.LibJobProcessor.FilesShell.JobFileShellManager(Logger));
            // Devuelve el manager de proyecto
            return(manager);
        }
コード例 #3
0
        /// <summary>
        ///		Procesa un archivo de contexto con los archivos del directorio general
        /// </summary>
        private static async Task <bool> ProcessAsync(Dictionary <ArgumentType, string> parameters, System.Threading.CancellationToken cancellationToken)
        {
            string contextFileName = parameters[ArgumentType.Context].TrimIgnoreNull();
            string projectFileName = parameters[ArgumentType.Project].TrimIgnoreNull();
            bool   processed       = false;

            // Ejecuta el proyecto
            using (BlockLogModel block = Logger.Default.CreateBlock(LogModel.LogType.Info, $"Process '{projectFileName}'"))
            {
                if (string.IsNullOrWhiteSpace(projectFileName) || !System.IO.File.Exists(projectFileName))
                {
                    block.Error($"Can't find the project file '{projectFileName}'");
                }
                else if (string.IsNullOrWhiteSpace(contextFileName) || !System.IO.File.Exists(contextFileName))
                {
                    block.Error($"Can't find the context file '{contextFileName}'");
                }
                else
                {
                    JobProjectManager manager = CreateManager();

                    // Ejecuta el proceso
                    try
                    {
                        if (!await manager.ProcessAsync(projectFileName, contextFileName, cancellationToken))
                        {
                            string error = string.Empty;

                            // Añade los errores
                            foreach (string innerError in manager.Errors)
                            {
                                error = error.AddWithSeparator(innerError, Environment.NewLine);
                            }
                            // Muestra el error
                            block.Error(error.TrimIgnoreNull());
                            // Indica si se ha procesado correctamente
                            if (manager.Errors.Count == 0)
                            {
                                processed = true;
                            }
                        }
                    }
                    catch (Exception exception)
                    {
                        block.Error($"Error when execute file '{projectFileName}' with context '{contextFileName}'", exception);
                    }
                    // Log
                    block.Info($"End process '{projectFileName}' with context '{contextFileName}'");
                }
            }
            // Devuelve el valor que indica si se ha procesado
            return(processed);
        }