// Método que realiza o monitoramento e executa as tarefas pendentes autorizadas public void monitorAndExecute(System.Diagnostics.EventLog log) { //string authToken = "uQLhVpS2kx2%2b95sRUwiq1uh8iRycp%2bWro6efT7eNTFM%3d"; string authToken = "T%2bVgaQPEbcfz%2bMbQPMd38d2pU7wL678T4nHb%2b%2fQjNI8WeISiIPYYh%2f62AqV3Uo0%2b"; List <AutomaticTask> tarefasAutorizadas = new Business.AutomaticTaskExecution().automaticTaskExecutionList(); // Se tem tarefas autorizadas if (tarefasAutorizadas.Count > 0) { foreach (AutomaticTask at in tarefasAutorizadas) { // Para cada tarefa autorizada por um usuário, verificar a existência destas tarefas em pendência de // execução sob a responsabilidade do usuário que autorizou // Chama query que consulta tarefas pendentes com o codTask e na responsabilidade do usuário em questão List <Data.Task> pendingTasks = new Business.Task().getPendingTasks(at.CodUser, at.CodTask); // Tem dessa tarefa em andamento? // Se sim, // Chamar o apoio à decisão para a tarefa, assim chama uma vez só para várias // Se não tem tarefa pendente, não há por que chamar trecho de apoio à decisão e nem de finalizar if (pendingTasks.Count > 0) { // Número total de execuções da tarefa int totalExecutions = getTotalExecutions(at.CodTask); // Lista de resultados da tarefa List <string> DsFlowResults = getTaskResults(at.CodTask); // Número de possíveis resultados para a tarefa sendo analisada int classCount = DsFlowResults.Count; // Chama a árvore de decisão // TODO: Usar árvore serializada Data.DecisionTree dTree = runDecisionSupport(at.CodTask, totalExecutions, classCount); // Para cada tarefa autorizada e pendente com o usuário, chama o apoio a decisão e depois finaliza a tarefa foreach (Data.Task t in pendingTasks) { // Pegar a sugestão de ação para a tarefa string action = getActionSuggestion(dTree, t.CodFlowExecute); // Cria o objeto de referência ao webservice Instance.Instance inst = new Instance.Instance(); //FinalizeTask02 - Finaliza a tarefa XmlNode xml = inst.FinalizeTask02(authToken, t.CodFlowExecuteTask, action, ""); if (log != null && xml.Name == "success") { log.WriteEntry("A Tarefa " + t.DsTask + " do processo " + t.CodFlowExecute.ToString() + " foi finalizada automaticamente com a opção " + action + "."); } if (xml.Name == "success") { // Notificar o usuário sobre a conclusão da tarefa new Business.AutomaticTaskExecution().notifyAutomaticExecution(at.CodTask, at.CodUser, t.CodFlowExecute); } } } } } }
public void runDecisionSupport() { Data.Task t = new Business.Task().getTaskInfo(Convert.ToInt32(this.CodFlowExecuteTask)); int codFlow = t.CodFlow; // Agendar aula de tênis int codTask = t.CodTask; // Informar se vai jogar tênis int codFlowExecute = t.CodFlowExecute; // Execução sendo verificada // Objeto DecisionSupport Business.DecisionSupport decisionSupport = new Business.DecisionSupport(); // Número total de execuções da tarefa int totalExecutions = decisionSupport.getTotalExecutions(t.CodTask); // Lista de resultados da tarefa List <string> DsFlowResults = decisionSupport.getTaskResults(codTask); // Número de possíveis resultados para a tarefa sendo analisada int classCount = DsFlowResults.Count; if (classCount < 1) { classCount = 1; } // Se o total de execuções for maior que o número de resultados salvos em uma tarefa if (totalExecutions >= 2 * classCount) { Data.DecisionTree dTree = decisionSupport.runDecisionSupport(codTask, totalExecutions, classCount); this.Suggestion = decisionSupport.getActionSuggestion(dTree, t.CodFlowExecute); if (this.Suggestion == string.Empty || this.Suggestion == null) { this.PhAlertResponseNull.Visible = true; this.PhDecisionSupport.Visible = false; } else { this.Accuracy = decisionSupport.getAccuracy(dTree, t.CodFlowExecute); } } else { // Essa atividade não possui um número suficiente de execuções para sugerir uma ação. this.PhAlertCantSuggest.Visible = true; this.PhDecisionSupport.Visible = false; } }
//Gets the task details using a lamda query. public IActionResult OnGet(int?id) { if (id == null) { return(NotFound()); } Task = _context.Task.FirstOrDefault(m => m.Id == id); if (Task == null) { return(NotFound()); } return(Page()); }
//Removes the task public IActionResult OnPost(int?id) { if (id == null) { return(NotFound()); } Task = (from task in _context.Task where task.Id == id select task).FirstOrDefault(); if (Task != null) { _context.Task.Remove(Task); _context.SaveChanges(); } return(RedirectToPage("./Index")); }