public bool Run(int computerId) { ComputerId = computerId; try { var res = MQueryCommand.TryInsertNewOperationByShedulerStep(computerId, OperationType, OperationAttributes); if (!res.IsComplete) { MLogger.Error($"1 - {res.Message}"); MQueryCommand.TryInsertShedulerHistory(TaskId, Id, computerId, false, res.Message); return(false); } OperationID = res.ReturnedId; MLogger.Debug($"\"Step Run\", ThreadId: {Thread.CurrentThread.ManagedThreadId}, AddedOperationId: {OperationID}"); MQueryCommand.TryInsertShedulerHistory(TaskId, Id, computerId, true, $"Выполнено. Операция {OperationID} добавлена."); return(true); } catch (Exception ex) { MLogger.Error($"2 - {ex.ToString()}"); MQueryCommand.TryInsertShedulerHistory(TaskId, Id, computerId, true, ex.Message); return(false); } }
private ShedulerStepObj CheckStepResultNew(ShedulerStepObj step) { MLogger.Debug($"\"CheckStepResultNew\", StepId: {step.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); var operation = MQueryCommand.SelectOperationById(step.OperationID); if (operation != null) { //операция не прочитана if (!(operation.IsRead ?? false)) { MLogger.Debug($"\"CheckStepResultNew\" - operation not readed, StepId: {step.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); var typeName = OperationTools.GetOperationNameEnById(operation.OperationType); MQueryCommand.TryInsertShedulerHistory(Id, step.Id, step.ComputerId, false, $"Операция \"{typeName}\" для компьютера \"{operation.ComputerName}\" не прочитана. ID операции = {operation.ID}"); return(null); } //операция прочитана, но не выполена if ((operation.IsRead ?? false) && (!(operation.IsCompleted ?? false) || (operation.Is1CError == 1))) { MLogger.Debug($"\"CheckStepResultNew\" - operation readed, bun not completed, StepId: {step.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); if (step.RepeatCount > 0) { MLogger.Debug($"\"CheckStepResultNew\" - step.RepeatCount > 0) operation readed, bun not completed, StepId: {step.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); MLogger.Debug($"\"CheckStepResultNew\" - step.RepeatCount ((до step.RepeatCount -= 1) = {step.RepeatCount}) operation readed, bun not completed, StepId: {step.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); step.RepeatCount -= 1; MLogger.Debug($"\"CheckStepResultNew\" - step.RepeatCount ((после step.RepeatCount -= 1) = {step.RepeatCount}) operation readed, bun not completed, StepId: {step.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); Thread.Sleep(step.RepeatTimeout ?? 0); MLogger.Debug($"\"CheckStepResultNew\" - step.RepeatCount (после step.RepeatCount -= 1), operation readed, bun not completed, return StepId: {step.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); return(step); } else { var newStep = GetStep(step.OnOperationErrorStep); if (newStep != null) { MLogger.Debug($"\"CheckStepResultNew\" - step.RepeatCount <= 0, operation readed, bun not completed, return StepId: {newStep.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); } else { MLogger.Debug($"\"CheckStepResultNew\" - step.RepeatCount <= 0, operation readed, bun not completed, return StepId: null, ThreadId: {Thread.CurrentThread.ManagedThreadId}"); } return(newStep); } } //операция прочитана и выполнена if ((operation.IsRead ?? false) && (operation.IsCompleted ?? false) && (operation.Is1CError == 0)) { var newStep = GetStep(step.OnOperationCompleteStep); if (newStep != null) { MLogger.Debug($"\"CheckStepResultNew\" - operation readed, bun not completed, return StepId: {newStep.Id}, ThreadId: {Thread.CurrentThread.ManagedThreadId}, OperationId: {step.OperationID}"); } else { MLogger.Debug($"\"CheckStepResultNew\" - operation readed, bun not completed, return StepId: null, ThreadId: {Thread.CurrentThread.ManagedThreadId}"); } return(newStep); } } return(null); }