ProcessManager.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Newtonsoft.Json.Linq;
  2. using PTMedicalInsurance.Helper;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace PTMedicalInsurance.Business
  9. {
  10. class ProcessManager
  11. {
  12. private List<AbstractProcess> Processes { get; set; }
  13. public ProcessManager()
  14. {
  15. Processes = new List<AbstractProcess>();
  16. }
  17. public ProcessManager(List<AbstractProcess> processes)
  18. {
  19. Processes = processes;
  20. }
  21. /// <summary>
  22. /// 增加单个处理流程
  23. /// </summary>
  24. /// <param name="process"></param>
  25. public ProcessManager Add(AbstractProcess process)
  26. {
  27. Processes.Add(process);
  28. return this;
  29. }
  30. /// <summary>
  31. /// 运行
  32. /// </summary>
  33. /// <param name="input"></param>
  34. /// <returns></returns>
  35. public string Run(JObject input)
  36. {
  37. string data = "";
  38. // 按顺序执行业务
  39. foreach (var process in Processes)
  40. {
  41. var ret = process.Process(input);
  42. data = ret.Data;
  43. if (ret.Code < 0)
  44. {
  45. //异常
  46. data = ret.Data;
  47. break;
  48. }
  49. if (!string.IsNullOrEmpty(data))
  50. {
  51. input = JObject.Parse(data);
  52. }
  53. }
  54. return data;
  55. }
  56. }
  57. }