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)); }
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; }
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)); }
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); }
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); }
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); }