You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

osTicket工单系统父工单自动创建子任务实现方案咨询

osTicket 自动创建关联子任务实现方案

你找到的两个核心文件方向完全正确,不需要从零开发功能,直接复用系统已有的手动建任务逻辑做自动触发即可,无复杂编程要求,按以下步骤操作即可。

核心实现逻辑

不要修改系统原生的任务创建核心代码,挂钩工单创建完成的后置节点,匹配到软件申请类工单时,复用现有任务创建方法自动生成对应子项即可,改动量极小,不会影响系统原有功能。

分步操作指引

  • 前置准备
    • 提前在后台建好对应配置:记录「软件申请」对应的帮助主题ID、支持团队所属部门ID、管理层审批岗对应的用户/角色ID,所有ID可以在后台对应列表页的URL参数里直接看到
    • 全量备份class.ticket.php、class.thread_actions.php两个文件,操作出错直接覆盖备份即可恢复
  • 定位触发点
    打开class.ticket.php,找到public static function create()方法,拉到方法最末尾,也就是工单数据成功写入数据库、返回工单ID的位置,插入触发判断逻辑:

    只对匹配「软件申请」帮助主题ID的工单执行自动创建逻辑,其余工单直接跳过,不影响原有流程

  • 复用现有任务创建逻辑
    打开class.thread_actions.php拉到末尾的TEA_CreateTask类,找到它调用任务创建的核心代码段,把参数组装逻辑抄到刚才的触发点位置,不需要自己重写任务创建逻辑:
    // 核心参数和手动创建任务的参数保持一致即可
    $parentTaskData = array(
        'title' => '软件申请处理工单',
        'dept_id' => 提前记录的支持团队部门ID,
        'assign_id' => 支持团队值班岗ID,
        'object_type' => 'T',
        'object_id' => $ticket->getId(), // 绑定用户提交的原始申请单
        'status' => 1
    );
    $parentTask = Task::create($parentTaskData);
    
    // 创建审批子任务,关联到上面的父任务
    $approveTaskData = array(
        'title' => '软件申请资质审批',
        'dept_id' => 提前记录的管理层部门ID,
        'assign_id' => 审批岗用户ID,
        'object_type' => 'P', // 固定值,代表关联父任务
        'object_id' => $parentTask->getId(),
        'status' => 1
    );
    Task::create($approveTaskData);
    
  • 加防重复判断
    给工单加一个值为「是/否」的自定义字段,字段名设为「自动任务已生成」,在触发逻辑最前面加判断:如果当前工单这个字段的值为「是」,直接跳过创建逻辑,避免工单更新、回复时重复生成任务。

注意事项

  • 不要修改TEA_CreateTask类的原有代码,只需要复用它的参数组装和调用逻辑,否则会导致系统手动创建任务的功能失效
  • 先在测试环境提交多笔不同类型的工单验证:确认非软件申请类工单不会生成额外任务、软件申请类工单生成的父任务/审批子任务归属和分配关系正确、关联关系正常,验证无误再上线到生产环境
  • 后续如果需要扩展其他自动化场景,比如硬件申请、权限申请的自动子任务,只需要增加对应的帮助主题ID判断、修改对应任务的分配参数即可,不需要调整核心逻辑

内容的提问来源于stack exchange,提问作者chilladelphia24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:24:23