workflow.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. """Pydantic schemas - 工作流"""
  2. from typing import Any, Dict, List, Optional
  3. from pydantic import BaseModel, Field
  4. class ProcessDefCreate(BaseModel):
  5. processCode: str = Field(..., description="流程编码")
  6. processName: str = Field(..., description="流程名称")
  7. status: Optional[str] = Field("1", description="1启用 0停用")
  8. orderNum: Optional[int] = Field(None, description="排序号")
  9. remark: Optional[str] = Field(None, description="备注")
  10. class ProcessDefUpdate(BaseModel):
  11. processCode: Optional[str] = Field(None, description="流程编码")
  12. processName: Optional[str] = Field(None, description="流程名称")
  13. status: Optional[str] = Field(None, description="1启用 0停用")
  14. orderNum: Optional[int] = Field(None, description="排序号")
  15. remark: Optional[str] = Field(None, description="备注")
  16. class ProcessDefResponse(BaseModel):
  17. id: str
  18. processCode: str
  19. processName: str
  20. status: str
  21. latestVersion: Optional[int] = None
  22. tenantNo: Optional[str] = None
  23. orderNum: Optional[int] = None
  24. remark: Optional[str] = None
  25. createTime: Optional[str] = None
  26. updateTime: Optional[str] = None
  27. class Config:
  28. from_attributes = True
  29. class NodeData(BaseModel):
  30. nodeKey: str = Field(..., description="节点唯一键")
  31. nodeType: str = Field(..., description="start/end/approval/condition 等")
  32. nodeName: Optional[str] = Field(None, description="节点名称")
  33. configJson: Optional[str] = Field(None, description="审批人/SQL/会签策略等配置")
  34. class TransitionData(BaseModel):
  35. fromNodeKey: str = Field(..., description="起始节点key")
  36. toNodeKey: str = Field(..., description="目标节点key")
  37. conditionExpr: Optional[str] = Field(None, description="条件表达式或分支说明")
  38. class PublishVersionRequest(BaseModel):
  39. graphJson: str = Field(..., description="节点与连线等配置JSON")
  40. nodes: List[NodeData] = Field(..., description="节点列表")
  41. transitions: List[TransitionData] = Field(default_factory=list, description="连线列表")
  42. remark: Optional[str] = Field(None, description="备注")
  43. class VersionResponse(BaseModel):
  44. id: str
  45. versionNo: int
  46. isLatest: Optional[str] = None
  47. remark: Optional[str] = None
  48. createTime: Optional[str] = None
  49. updateTime: Optional[str] = None
  50. class Config:
  51. from_attributes = True
  52. class StartInstanceRequest(BaseModel):
  53. processCode: str = Field(..., description="流程编码")
  54. businessType: Optional[str] = Field(None, description="业务类型")
  55. businessId: Optional[str] = Field(None, description="业务主键")
  56. variables: Optional[Dict[str, Any]] = Field(default_factory=dict, description="流程变量")
  57. callbackUrl: Optional[str] = Field(None, description="业务回调地址")
  58. class ApproveRequest(BaseModel):
  59. commentText: Optional[str] = Field(None, description="审批意见")
  60. class TaskResponse(BaseModel):
  61. id: str
  62. instanceId: str
  63. nodeKey: Optional[str] = None
  64. assigneeUserId: Optional[str] = None
  65. status: Optional[str] = None
  66. commentText: Optional[str] = None
  67. createTime: Optional[str] = None
  68. updateTime: Optional[str] = None
  69. processName: Optional[str] = None
  70. businessType: Optional[str] = None
  71. businessId: Optional[str] = None
  72. starterUserId: Optional[str] = None
  73. instanceStatus: Optional[str] = None
  74. instanceCreateTime: Optional[str] = None
  75. class Config:
  76. from_attributes = True
  77. class InstanceResponse(BaseModel):
  78. id: str
  79. processVersionId: str
  80. businessType: Optional[str] = None
  81. businessId: Optional[str] = None
  82. starterUserId: Optional[str] = None
  83. status: Optional[str] = None
  84. createTime: Optional[str] = None
  85. updateTime: Optional[str] = None
  86. tasks: List[Dict[str, Any]] = Field(default_factory=list)
  87. class Config:
  88. from_attributes = True