DummyExecuteProvider.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using Quadarax.Foundation.Core.Data;
  2. namespace Quadarax.Foundation.Core.Business.Processor.Task.ExecuteProvider
  3. {
  4. public class DummyExecuteProvider : TaskExecuteProvider
  5. {
  6. #region *** Constants ***
  7. public const string EP_DMY_DURATION = "duration";
  8. public const string EP_DMY_RESULT = "result";
  9. public const string EP_DMY_ERROR = "is-error-emit";
  10. #endregion
  11. #region *** Properties ***
  12. private TimeSpan Duration { get; set; }
  13. private ResultType Result { get; set; }
  14. private bool IsErrorEmit { get; set; }
  15. #endregion
  16. #region *** Overrides ***
  17. protected override void OnExecute(ITaskIdentifier taskIdentifier, ITaskExecuteResult result)
  18. {
  19. if (IsErrorEmit) throw new Exception("Dummy exception emitted.");
  20. switch (Result)
  21. {
  22. case ResultType.Random:
  23. ((Result)result).SetSuccess(new Random().Next(0, 2) == 1);
  24. break;
  25. case ResultType.Success:
  26. ((Result)result).SetSuccess(true);
  27. break;
  28. case ResultType.Fail:
  29. ((Result)result).SetSuccess(false);
  30. break;
  31. }
  32. }
  33. protected override void OnValidateArguments(ITypedArgument[] arguments)
  34. {
  35. Duration = GetArgument<TimeSpan>(arguments, EP_DMY_DURATION);
  36. Result = GetArgument<ResultType>(arguments, EP_DMY_RESULT);
  37. IsErrorEmit = GetArgument<bool>(arguments, EP_DMY_ERROR);
  38. }
  39. #endregion
  40. #region *** Public Operations ***
  41. public static ITypedArgument[] CreateDefaultArguments()
  42. {
  43. var result = new List<ITypedArgument>();
  44. result.Add(new TypedArgument(EP_DMY_DURATION, typeof(TimeSpan), false));
  45. result.Add(new TypedArgument(EP_DMY_RESULT, typeof(ResultType), false));
  46. result.Add(new TypedArgument(EP_DMY_ERROR, typeof(bool), false));
  47. return result.ToArray();
  48. }
  49. #endregion
  50. #region *** Nested Classes ***
  51. private enum ResultType
  52. {
  53. Random,
  54. Success,
  55. Fail
  56. }
  57. #endregion
  58. }
  59. }