Пример #1
0
 public async Task StartProcess()
 {
     Console.WriteLine("----------------------------");
     Console.WriteLine("Process Service StartProcess");
     TransactionCreateContext context = TransactionCreateContext.CreateNewContext();
     await _mainModule.Process(context);
 }
Пример #2
0
        public async Task Process(TransactionCreateContext context)
        {
            Console.WriteLine("BM - BaseModule Process");
            context.ModuleDepth++;
            Console.WriteLine("BM - BaseModule BeginModule");
            await BeginModule(context);

            foreach (var step in _steps)
            {
                var stepName = step.GetType().Name;
                if (stepName.EndsWith("Module"))
                {
                    Console.WriteLine("-------------Next Module---------------");
                }
                else
                {
                    Console.WriteLine("-------------Next Step---------------");
                }
                Console.WriteLine(stepName);
                await step.Process(context);
            }
            Console.WriteLine("BM - BaseModule CompleteModule");
            await CompleteModule(context);

            context.ModuleDepth--;
        }
Пример #3
0
        private async Task RealCompleteStep(TransactionCreateContext context)
        {
            Console.WriteLine("BS - BaseStep RealCompleteStep");
            await CompleteStep(context);

            context.StepsCompleted++;
            var stepName = GetType().Name;

            context.LastSuccessfulStep = stepName;
            await context.PersistProgress();

            var stats = new Dictionary <string, object>
            {
                ["instanceId"]      = context.InstanceId,
                ["percentComplete"] = context.PercentComplete,
                ["stepName"]        = stepName
            };
            var stepTime = context.FinishTimingAndGetStepElapsedMilliseconds(stepName);

            if (stepTime != -1)
            {
                stats["stepElapsedTimeMs"] = stepTime;
            }
            context.SimultaneousSteps--;
            if (context.SimultaneousSteps != 0)
            {
                throw new Exception("somehow the copy process has become internally inconsistent");
            }
        }
Пример #4
0
        private async Task RealBeginStep(TransactionCreateContext context)
        {
            Console.WriteLine("BS - BaseStep RealBeginStep");
            if (context.SimultaneousSteps > 0)
            {
                throw new Exception("Detected an attempt to run steps in parallel. Do not run steps in parallel.");
            }
            context.SimultaneousSteps++;
            context.LastAttemptedStep = GetType().Name;
            await context.PersistProgress();

            await BeginStep(context);
        }
Пример #5
0
        public async Task Process(TransactionCreateContext context)
        {
            Console.WriteLine("BS - BaseStep Process");
            if (context.AttemptingResume)
            {
                // skip steps until we've reached our resume point
                if (context.ResumeAt != GetType().Name)
                {
                    context.StepsCompleted++;
                    return;
                }
                context.AttemptingResume = false;
            }

            await RealBeginStep(context);

            if (ShouldRunStep(context) && await ShouldRunStepAsync(context))
            {
                await ProcessData(context);
            }

            await RealCompleteStep(context);
        }
Пример #6
0
 protected override async Task AdjustData(TransactionCreateContext context)
 {
     Console.WriteLine("1.2.4 - Basic Step Two AdjustData");
     await Task.CompletedTask;
 }
Пример #7
0
 protected override Task ProcessData(TransactionCreateContext context)
 {
     Console.WriteLine("1.2.3 - Basic Step Two ProcessData");
     return(Task.CompletedTask);
 }
Пример #8
0
 protected override Task BeginStep(TransactionCreateContext context)
 {
     Console.WriteLine("1.2.2 - Basic Step Two Begin Step");
     return(Task.CompletedTask);
 }
Пример #9
0
 /// An extra optional async check for ShouldRunStep.  If overridden, this is combined with the result of ShouldRunStep.
 protected virtual Task <bool> ShouldRunStepAsync(TransactionCreateContext context)
 {
     Console.WriteLine("BS - BaseStep ShouldRunStepAsync");
     return(Task.FromResult(true));
 }
 protected override async Task AdjustData(TransactionCreateContext context)
 {
     Console.WriteLine("3.1.4 - Product Step One AdjustData");
     await Task.CompletedTask;
 }
 // virtual method from BaseStep (optional)
 protected override Task BeginStep(TransactionCreateContext context)
 {
     Console.WriteLine("3.1.2 - Product Step One Begin Step");
     return(Task.CompletedTask);
 }
Пример #12
0
 protected virtual Task CompleteStep(TransactionCreateContext context)
 {
     Console.WriteLine("BS - BaseStep CompleteStep");
     Console.WriteLine("--------------BaseStep Ends--------------");
     return(Task.CompletedTask);
 }
Пример #13
0
 protected virtual Task AdjustData(TransactionCreateContext context)
 {
     Console.WriteLine("BS - BaseStep AdjustData");
     return(Task.CompletedTask);
 }
Пример #14
0
 protected virtual void CreateDefaults(TransactionCreateContext context)
 {
     Console.WriteLine("BS - BaseStep CreateDefaults");
 }
Пример #15
0
 protected abstract Task ProcessData(TransactionCreateContext context);
Пример #16
0
 protected override bool ShouldRunStep(TransactionCreateContext context)
 {
     Console.WriteLine("1.2.1 - Basic Step Two ShouldRunStep");
     return(true);
 }
 // virtual method from BaseStep
 protected override bool ShouldRunStep(TransactionCreateContext context)
 {
     Console.WriteLine("3.1.1 - Product Step One ShouldRunStep");
     return(true);
 }
Пример #18
0
 protected override async Task BeginModule(TransactionCreateContext context)
 {
     Console.WriteLine("-------------Main Module Begins---------------");
     Console.WriteLine("Main Module BeginModule");
     await Task.CompletedTask;
 }
 // abstract method from BaseStep
 protected override Task ProcessData(TransactionCreateContext context)
 {
     Console.WriteLine("3.1.3 - Product Step One ProcessData");
     return(Task.CompletedTask);
 }
Пример #20
0
 protected override Task CompleteModule(TransactionCreateContext context)
 {
     Console.WriteLine("Main Module CompleteModule");
     Console.WriteLine("---------------Main Module Ends-------------");
     return(Task.CompletedTask);
 }
Пример #21
0
 protected virtual Task CompleteModule(TransactionCreateContext context)
 {
     Console.WriteLine("BM - BaseModule CompleteModule");
     Console.WriteLine("--------------BaseModule Ends--------------");
     return(Task.CompletedTask);
 }
Пример #22
0
 protected abstract bool ShouldRunStep(TransactionCreateContext context);