ProcessFlow.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System;
  2. namespace SKMC.Api.Process.Model
  3. {
  4. /// <summary>
  5. /// 线性流程引擎
  6. /// </summary>
  7. public abstract class ProcessFlow
  8. {
  9. // 流程id
  10. public int Id { get; set; }
  11. // 是否空跑测试
  12. public bool TestRunMode { get; set; } = false;
  13. // 是否已停止
  14. public bool IsStopped { get; set; }
  15. // 是否已挂起
  16. public bool IsSuspend { get; set; }
  17. // 每轮循环开始前执行
  18. public Action OnPrepare { get; set; }
  19. /// <summary>
  20. /// 启动流程
  21. /// </summary>
  22. public abstract void Start();
  23. /// <summary>
  24. /// 停止流程
  25. /// </summary>
  26. public abstract void Stop();
  27. /// <summary>
  28. /// 复位流程
  29. /// </summary>
  30. public abstract void Reset();
  31. /// <summary>
  32. /// 暂停流程
  33. /// </summary>
  34. public abstract void Pause();
  35. /// <summary>
  36. /// 恢复流程
  37. /// </summary>
  38. public abstract void Resume();
  39. /// <summary>
  40. /// 获取流程步骤
  41. /// </summary>
  42. /// <param name="processStepId">流程步骤Id</param>
  43. /// <returns></returns>
  44. public abstract ProcessStep Get(int processStepId);
  45. /// <summary>
  46. /// 注册流程步骤
  47. /// </summary>
  48. /// <param name="processStep">流程步骤</param>
  49. public abstract void Register(ProcessStep processStep);
  50. /// <summary>
  51. /// 设置流程的起始步骤
  52. /// </summary>
  53. /// <param name="processStep">流程步骤</param>
  54. public abstract void SetFirst(ProcessStep processStep);
  55. /// <summary>
  56. /// 设置流程的起始步骤
  57. /// </summary>
  58. /// <param name="processStepId">流程步骤Id</param>
  59. public abstract void SetFirst(int processStepId);
  60. /// <summary>
  61. /// 提交启动流程的第一个步骤、如果设置了初始步骤SetFirst则从该步骤开始
  62. /// </summary>
  63. public abstract void PostFirst();
  64. /// <summary>
  65. /// 提交流程步骤(自动模式的下一个)
  66. /// </summary>
  67. public abstract void PostAutoNext();
  68. /// <summary>
  69. /// 提交流程步骤(手动模式指定)
  70. /// </summary>
  71. /// <param name="processStep">流程步骤</param>
  72. public abstract void PostManual(ProcessStep processStep);
  73. /// <summary>
  74. /// 直接调用一个流程步骤的Actions(自动模式的下一个)
  75. /// </summary>
  76. public abstract void CallAutoNext();
  77. /// <summary>
  78. /// 直接调用一个流程步骤的Actions(手动模式指定)
  79. /// </summary>
  80. /// <param name="processStep">流程步骤</param>
  81. public abstract void CallManual(ProcessStep processStep);
  82. }
  83. }