Ejemplo n.º 1
0
        public ActionResult RunAlgorithms([FromBody] ProjectAlgoListEntity data)
        {
            string userName = _accessor.HttpContext.User.Identity.Name;

            _algoExecutionService.Run(data, userName);
            return(Ok());
        }
Ejemplo n.º 2
0
        public void Run(ProjectAlgoListEntity projectAlg, string executedBy)
        {
            if (projectAlg == null || (projectAlg.ProjectId == 0 && projectAlg.Algos.Count == 0))
            {
                return;
            }

            List <ExecutionInfoEntity> algoExecs = new List <ExecutionInfoEntity>();
            ExecutionInfoEntity        firstAlgoExe;

            algoExecs    = ProjectsRepository.SetAlgoExecutions(projectAlg, executedBy);
            firstAlgoExe = algoExecs.First();

            string resultPath = Path.Combine(ExecutionPath, string.Format("{0}_{1}", firstAlgoExe.ProjectId, firstAlgoExe.Id));

            Directory.CreateDirectory(resultPath);

            string backgroundJobID = BackgroundJob.Enqueue(() => StartExecution(firstAlgoExe, executedBy, resultPath, firstAlgoExe.Id));

            if (algoExecs.Count > 1)
            {
                for (int i = 1; i < algoExecs.Count; i++)
                {
                    backgroundJobID = BackgroundJob.ContinueWith(backgroundJobID, () => StartExecution(algoExecs[i], executedBy, resultPath, firstAlgoExe.Id));
                }

                BackgroundJob.ContinueWith(backgroundJobID, () => FinishProjectExecution(executedBy, firstAlgoExe));
            }
        }
Ejemplo n.º 3
0
        internal List <ExecutionInfoEntity> SetAlgoExecutions(ProjectAlgoListEntity projectAlg, string executerName)
        {
            List <ExecutionInfoEntity> exeInfoList = new List <ExecutionInfoEntity>();
            Random rand = new Random();

            int    projectID   = 0;
            string projectName = string.Empty;

            if (projectAlg.ProjectId > 0)
            {
                projectID   = projectAlg.ProjectId;
                projectName = _dbContext.Projects.First(x => x.Id == projectAlg.ProjectId).Name;
            }

            foreach (var algo in projectAlg.Algos)
            {
                var exe = new ExecutionInfoEntity
                {
                    Id          = rand.Next(),
                    AlgoName    = algo.Name,
                    ProjectId   = projectID,
                    ProjectName = projectName,
                    StartDate   = DateTime.Now,
                    ExecutedBy  = executerName,
                    FileExePath = algo.FileServerPath,
                    AlgoId      = algo.Id,
                    ExeParams   = algo.AlgoParams.Select(x => new AlgoExecutionParamEntity {
                        Name = x.Name, Value = x.Value
                    }).ToList()
                };
                exeInfoList.Add(exe);

                //AddNewAlg to db
                _dbContext.ExecutionInfos.Add(_mapper.Map <ExecutionInfo>(exe));
            }

            return(exeInfoList);
        }