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++; } }
private void InvokePackageCatched(EtlPackage package, EtlSession session, EtlVariableAssignment[] assignments) { var buildStartDateTime = DateTime.Now; _logger.LogEtlMessage ( new EtlMessage { EtlPackageId = session.EtlPackageId, EtlSessionId = session.EtlSessionId, LogDateTime = buildStartDateTime, LogUtcDateTime = buildStartDateTime.ToUniversalTime(), MessageType = EtlMessageType.Debug, Text = string.Format(Properties.Resources.VariablesInitStarted), } ); var context = new _Context(package, session); context.InitVariables(package.Variables, assignments); foreach (var variable in context.GetVariables()) { var escapedVariable = EscapeVariable(variable); _logger.LogEtlMessage ( new EtlMessage { EtlPackageId = context.EtlPackageId, EtlSessionId = context.EtlSessionId, LogDateTime = buildStartDateTime, LogUtcDateTime = buildStartDateTime.ToUniversalTime(), MessageType = EtlMessageType.Debug, Text = string.Format(Properties.Resources.VariableInit, escapedVariable.Name, escapedVariable.Value), } ); if (variable.Modifier == EtlVariableModifier.Input || variable.Modifier == EtlVariableModifier.Bound) { _logger.LogEtlVariable(escapedVariable); } } var preprocessor = new EtlPackagePreprocessor(); package = preprocessor.PreprocessPackage(package, context.GetVariables()); var buildEndDateTime = DateTime.Now; _logger.LogEtlMessage ( new EtlMessage { EtlPackageId = session.EtlPackageId, EtlSessionId = session.EtlSessionId, LogDateTime = buildEndDateTime, LogUtcDateTime = buildEndDateTime.ToUniversalTime(), MessageType = EtlMessageType.Debug, Text = string.Format(Properties.Resources.VariablesInitFinished), } ); InvokePackageSteps(package, context); foreach (var variable in context.GetVariables()) { if (variable.Modifier == EtlVariableModifier.Output) { _logger.LogEtlVariable(EscapeVariable(variable)); } } session.Status = context.CurrentStatus; }