feat: restore source parity and harden agent runtime
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
工作流引擎基础模块
|
||||
定义核心类型、枚举和数据类
|
||||
"""
|
||||
import logging
|
||||
import uuid
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
from typing import Dict, Any
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class NodeType(Enum):
|
||||
"""节点类型"""
|
||||
START = 'start'
|
||||
END = 'end'
|
||||
APPROVAL = 'approval'
|
||||
HANDLE = 'handle'
|
||||
COPY = 'copy'
|
||||
CONDITION = 'condition'
|
||||
PARALLEL = 'parallel'
|
||||
DELAY = 'delay'
|
||||
NOTIFY = 'notify'
|
||||
SERVICE = 'service'
|
||||
SUBFLOW = 'subflow'
|
||||
DATA_UPDATE = 'data_update'
|
||||
|
||||
|
||||
class TaskAction(Enum):
|
||||
"""任务操作"""
|
||||
APPROVE = 'approve'
|
||||
REJECT = 'reject'
|
||||
TRANSFER = 'transfer'
|
||||
RETURN = 'return'
|
||||
DELEGATE = 'delegate'
|
||||
ADD_SIGN = 'add_sign'
|
||||
|
||||
|
||||
class MultiApprovalType(Enum):
|
||||
"""多人审批类型"""
|
||||
SEQUENTIAL = 'sequential'
|
||||
PARALLEL = 'parallel'
|
||||
ANY = 'any'
|
||||
|
||||
|
||||
class InstanceStatus(Enum):
|
||||
"""流程实例状态"""
|
||||
PENDING = 'pending'
|
||||
APPROVED = 'approved'
|
||||
REJECTED = 'rejected'
|
||||
CANCELED = 'canceled'
|
||||
|
||||
|
||||
class TaskStatus(Enum):
|
||||
"""任务状态"""
|
||||
PENDING = 'pending'
|
||||
WAITING = 'waiting'
|
||||
APPROVED = 'approved'
|
||||
REJECTED = 'rejected'
|
||||
RETURNED = 'returned'
|
||||
TRANSFERRED = 'transferred'
|
||||
DELEGATED = 'delegated'
|
||||
HANDLED = 'handled'
|
||||
CANCELED = 'canceled'
|
||||
READ = 'read'
|
||||
|
||||
|
||||
@dataclass
|
||||
class ExecutionContext:
|
||||
"""
|
||||
执行上下文
|
||||
在流程执行过程中传递的上下文信息
|
||||
"""
|
||||
instance: Any
|
||||
form_data: Dict
|
||||
current_user_id: str
|
||||
flow_definition: Dict
|
||||
db: Any = None
|
||||
|
||||
def get_initiator_id(self) -> str:
|
||||
"""获取发起人ID"""
|
||||
return self.instance.initiator_id if self.instance else ''
|
||||
|
||||
def get_instance_id(self) -> str:
|
||||
"""获取实例ID"""
|
||||
return str(self.instance.id) if self.instance else ''
|
||||
|
||||
def get_current_node_id(self) -> str:
|
||||
"""获取当前节点ID"""
|
||||
return self.instance.current_node_id if self.instance else ''
|
||||
|
||||
|
||||
def generate_instance_no() -> str:
|
||||
"""生成流程实例编号"""
|
||||
now = datetime.now()
|
||||
return f"WF{now.strftime('%Y%m%d%H%M%S')}{str(uuid.uuid4())[:8].upper()}"
|
||||
Reference in New Issue
Block a user