private void InvokePackageSteps(EtlPackage package, _Context context) { var stepIndex = 0; while (stepIndex < package.Steps.Count) { var step = package.Steps[stepIndex]; var stepResult = InvokePackageStep(step, context); if (EtlStatuses.GetPriorityStatus(stepResult.Status, context.CurrentStatus) == stepResult.Status) { context.CurrentStatus = stepResult.Status; } if (stepResult.Status == EtlStatus.Failed) { break; } if (HasVariableAssignments(stepResult)) { var rebuildStartDateTime = DateTime.Now; _logger.LogEtlMessage ( new EtlMessage { EtlPackageId = context.EtlPackageId, EtlSessionId = context.EtlSessionId, LogDateTime = rebuildStartDateTime, LogUtcDateTime = rebuildStartDateTime.ToUniversalTime(), MessageType = EtlMessageType.Debug, Text = string.Format(Properties.Resources.VariablesUpdateStarted), } ); foreach (var assignment in stepResult.VariableAssignments) { var assignedVariable = context.AssignVariable(assignment); var escapedVariable = EscapeVariable(assignedVariable); _logger.LogEtlMessage ( new EtlMessage { EtlPackageId = context.EtlPackageId, EtlSessionId = context.EtlSessionId, LogDateTime = rebuildStartDateTime, LogUtcDateTime = rebuildStartDateTime.ToUniversalTime(), MessageType = EtlMessageType.Debug, Text = string.Format(Properties.Resources.VariableUpdate, escapedVariable.Name, escapedVariable.Value), } ); } var preprocessor = new EtlPackagePreprocessor(); package = preprocessor.PreprocessPackage(context.OriginalPackage, context.GetVariables()); var rebuildEndDateTime = DateTime.Now; _logger.LogEtlMessage ( new EtlMessage { EtlPackageId = context.EtlPackageId, EtlSessionId = context.EtlSessionId, LogDateTime = rebuildEndDateTime, LogUtcDateTime = rebuildEndDateTime.ToUniversalTime(), MessageType = EtlMessageType.Debug, Text = string.Format(Properties.Resources.VariablesUpdateFinished), } ); } stepIndex++; } }