116 lines
3.9 KiB
Python
116 lines
3.9 KiB
Python
"""Pydantic schemas - 工作流"""
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ProcessDefCreate(BaseModel):
|
|
processCode: str = Field(..., description="流程编码")
|
|
processName: str = Field(..., description="流程名称")
|
|
status: Optional[str] = Field("1", description="1启用 0停用")
|
|
orderNum: Optional[int] = Field(None, description="排序号")
|
|
remark: Optional[str] = Field(None, description="备注")
|
|
|
|
|
|
class ProcessDefUpdate(BaseModel):
|
|
processCode: Optional[str] = Field(None, description="流程编码")
|
|
processName: Optional[str] = Field(None, description="流程名称")
|
|
status: Optional[str] = Field(None, description="1启用 0停用")
|
|
orderNum: Optional[int] = Field(None, description="排序号")
|
|
remark: Optional[str] = Field(None, description="备注")
|
|
|
|
|
|
class ProcessDefResponse(BaseModel):
|
|
id: str
|
|
processCode: str
|
|
processName: str
|
|
status: str
|
|
latestVersion: Optional[int] = None
|
|
tenantNo: Optional[str] = None
|
|
orderNum: Optional[int] = None
|
|
remark: Optional[str] = None
|
|
createTime: Optional[str] = None
|
|
updateTime: Optional[str] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class NodeData(BaseModel):
|
|
nodeKey: str = Field(..., description="节点唯一键")
|
|
nodeType: str = Field(..., description="start/end/approval/condition 等")
|
|
nodeName: Optional[str] = Field(None, description="节点名称")
|
|
configJson: Optional[str] = Field(None, description="审批人/SQL/会签策略等配置")
|
|
|
|
|
|
class TransitionData(BaseModel):
|
|
fromNodeKey: str = Field(..., description="起始节点key")
|
|
toNodeKey: str = Field(..., description="目标节点key")
|
|
conditionExpr: Optional[str] = Field(None, description="条件表达式或分支说明")
|
|
|
|
|
|
class PublishVersionRequest(BaseModel):
|
|
graphJson: str = Field(..., description="节点与连线等配置JSON")
|
|
nodes: List[NodeData] = Field(..., description="节点列表")
|
|
transitions: List[TransitionData] = Field(default_factory=list, description="连线列表")
|
|
remark: Optional[str] = Field(None, description="备注")
|
|
|
|
|
|
class VersionResponse(BaseModel):
|
|
id: str
|
|
versionNo: int
|
|
isLatest: Optional[str] = None
|
|
remark: Optional[str] = None
|
|
createTime: Optional[str] = None
|
|
updateTime: Optional[str] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class StartInstanceRequest(BaseModel):
|
|
processCode: str = Field(..., description="流程编码")
|
|
businessType: Optional[str] = Field(None, description="业务类型")
|
|
businessId: Optional[str] = Field(None, description="业务主键")
|
|
variables: Optional[Dict[str, Any]] = Field(default_factory=dict, description="流程变量")
|
|
callbackUrl: Optional[str] = Field(None, description="业务回调地址")
|
|
|
|
|
|
class ApproveRequest(BaseModel):
|
|
commentText: Optional[str] = Field(None, description="审批意见")
|
|
|
|
|
|
class TaskResponse(BaseModel):
|
|
id: str
|
|
instanceId: str
|
|
nodeKey: Optional[str] = None
|
|
assigneeUserId: Optional[str] = None
|
|
status: Optional[str] = None
|
|
commentText: Optional[str] = None
|
|
createTime: Optional[str] = None
|
|
updateTime: Optional[str] = None
|
|
processName: Optional[str] = None
|
|
businessType: Optional[str] = None
|
|
businessId: Optional[str] = None
|
|
starterUserId: Optional[str] = None
|
|
instanceStatus: Optional[str] = None
|
|
instanceCreateTime: Optional[str] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class InstanceResponse(BaseModel):
|
|
id: str
|
|
processVersionId: str
|
|
businessType: Optional[str] = None
|
|
businessId: Optional[str] = None
|
|
starterUserId: Optional[str] = None
|
|
status: Optional[str] = None
|
|
createTime: Optional[str] = None
|
|
updateTime: Optional[str] = None
|
|
tasks: List[Dict[str, Any]] = Field(default_factory=list)
|
|
|
|
class Config:
|
|
from_attributes = True
|