Ejemplo n.º 1
0
            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++;
                }
            }
Ejemplo n.º 2
0
            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;
            }