factory/apps/wf/scripts.py

53 lines
1.7 KiB
Python
Executable File

from apps.system.models import User
from apps.wf.models import State, Ticket, TicketFlow, Transition
class GetParticipants:
"""
获取处理人脚本
"""
all_funcs = [
{'func': 'get_create_by', 'name': '获取工单创建人'}
]
@classmethod
def get_create_by(cls, state: dict = {}, ticket: dict = {}, new_ticket_data: dict = {}, handler: User = {}):
"""工单创建人"""
participant = ticket.create_by.id
return participant
class HandleScripts:
"""
任务处理脚本
"""
all_funcs = [
{'func': 'handle_something', 'name': '处理一些工作'}
]
@classmethod
def to_next(cls, ticket: Ticket, by_timer: bool = False,
by_task: bool = False, by_hook: bool = False, script_str: str = ''):
# 获取信息
transition_obj = Transition.objects.filter(source_state=ticket.state, is_deleted=False).first()
TicketFlow.objects.create(ticket=ticket, state=ticket.state,
participant_type=State.PARTICIPANT_TYPE_ROBOT,
participant_str='func:{}'.format(script_str),
transition=transition_obj)
from .services import WfService
# 自动执行流转
WfService.handle_ticket(ticket=ticket, transition=transition_obj,
new_ticket_data=ticket.ticket_data, by_task=True)
return ticket
@classmethod
def handle_something(cls, ticket: Ticket):
"""处理一些工作"""
# 任务处理代码区
# 调用自动流转
ticket = cls.to_next(ticket=ticket, by_task=True, script_str='handle_something')