53 lines
1.7 KiB
Python
Executable File
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')
|