Esempio n. 1
0
        public NextActivityKey ReportError(WorkflowExecutionContext context, ActivityParameterDictionary parameters)
        {
            var errorId               = parameters.GetParamValueOrThrow <string>("ErrorId");
            var maxRestartCount       = parameters.GetParamValue("MaxRestartCount", 5);
            var secondMaxRestartCount = parameters.GetParamValue("SecondMaxRestartCount", 5);

            RaiseOutputStarting(InfoType.Warning);
            var newErrorCount = _workflowManager.IncreaseErrorCounter(errorId);

            if (newErrorCount <= maxRestartCount)
            {
                return(SayPhraseAndExit(context, parameters, "ExitType"));
            }
            if (newErrorCount <= secondMaxRestartCount + maxRestartCount)
            {
                return(SayPhraseAndExit(context, parameters, "SecondExitType"));
            }
            var composer     = CreatePhraseComposer(parameters, false);
            var text         = composer.ComposeText();
            var sounds       = composer.ComposePhrase(new[] { "contact_technical_support" });
            var helpComposer = CreateHelpPhraseComposer(parameters);
            var helpText     = helpComposer.ComposeText();
            var helpSounds   = helpComposer.ComposePhrase();


            int occurredEventIndex;

            return(SayAndWaitEvents(
                       context,
                       text, sounds, helpText, helpSounds,
                       false, false,
                       new WaitHandle[] {}, 0, Timeout.Infinite,
                       null, out occurredEventIndex));
        }
Esempio n. 2
0
 public NextActivityKey EstablishConnectionToScanner( 
     WorkflowExecutionContext context, ActivityParameterDictionary parameters)
 {
     var maxTryCount = parameters.GetParamValue("MaxTryCount", 3);
     var delay = TimeSpan.Parse(parameters.GetParamValue("Delay", "0:0:5"));
     if (!_scannerManager.EstablishConnectionToScanner(maxTryCount, delay))
         return BpcNextActivityKeys.No;
     var errorId = parameters.GetParamValueOrThrow<string>("ErrorId");
     _workflowManager.ResetErrorCounter(errorId);
     return BpcNextActivityKeys.Yes;
 }
Esempio n. 3
0
        public NextActivityKey SayAndWaitTimeout(
            WorkflowExecutionContext context, ActivityParameterDictionary parameters)
        {
            var timeout      = parameters.GetParamValueOrThrow <int>("Timeout");
            var timeoutEvent = new TimeoutWaitHandle(timeout);

            AddInfiniteRepeatTimeoutParameter(parameters);


            return(SayAndWaitEvents(
                       context, parameters, new WaitHandle[] { timeoutEvent }, DefaultNextActivityKeyResolver));
        }
Esempio n. 4
0
        public NextActivityKey EstablishConnectionToScanner(
            WorkflowExecutionContext context, ActivityParameterDictionary parameters)
        {
            var maxTryCount = parameters.GetParamValue("MaxTryCount", 3);
            var delay       = TimeSpan.Parse(parameters.GetParamValue("Delay", "0:0:5"));

            if (!_scannerManager.EstablishConnectionToScanner(maxTryCount, delay))
            {
                return(BpcNextActivityKeys.No);
            }
            var errorId = parameters.GetParamValueOrThrow <string>("ErrorId");

            _workflowManager.ResetErrorCounter(errorId);
            return(BpcNextActivityKeys.Yes);
        }
Esempio n. 5
0
        public NextActivityKey SayAndWaitTimeout( 
            WorkflowExecutionContext context, ActivityParameterDictionary parameters)
        {
            var timeout = parameters.GetParamValueOrThrow<int>("Timeout");
            var timeoutEvent = new TimeoutWaitHandle(timeout);
            AddInfiniteRepeatTimeoutParameter(parameters);

            return SayAndWaitEvents(
                context, parameters, new WaitHandle[] { timeoutEvent }, DefaultNextActivityKeyResolver);
        }
Esempio n. 6
0
        public NextActivityKey ReportError(WorkflowExecutionContext context, ActivityParameterDictionary parameters)
        {
            var errorId = parameters.GetParamValueOrThrow<string>("ErrorId");
            var maxRestartCount = parameters.GetParamValue("MaxRestartCount", 5);
            var secondMaxRestartCount = parameters.GetParamValue("SecondMaxRestartCount", 5);
            RaiseOutputStarting(InfoType.Warning);
            var newErrorCount = _workflowManager.IncreaseErrorCounter(errorId);
            if (newErrorCount <= maxRestartCount)
            {
                return SayPhraseAndExit(context, parameters, "ExitType");
            }
            if (newErrorCount <= secondMaxRestartCount + maxRestartCount)
            {
                return SayPhraseAndExit(context, parameters, "SecondExitType");
            }
            var composer = CreatePhraseComposer(parameters, false);
            var text = composer.ComposeText();
            var sounds = composer.ComposePhrase(new[] { "contact_technical_support" });
            var helpComposer = CreateHelpPhraseComposer(parameters);
            var helpText = helpComposer.ComposeText();
            var helpSounds = helpComposer.ComposePhrase();

            int occurredEventIndex;
            return SayAndWaitEvents(
                context,
                text, sounds, helpText, helpSounds,
                false, false,
                new WaitHandle[] {}, 0, Timeout.Infinite,
                null, out occurredEventIndex);
        }