Order_Change_流程开发说明.md 5.6 KB

订单变更流程(Order_Change)接入工作流开发说明(参照 oa_leave)

目标:参照请假流程(oa_leave)的实现方式,继续开发订单变更流程(Order_Change)的前后端,实现业务表与流程实例关联、流程状态落库、发起/详情/列表页面对齐,以及流程结束结果监听与业务状态回写。


1. 流程实例关联字段设计

1.1 业务表字段

业务表:crm_seorder

字段:process_instance_id
用途:关联流程实例。

1.2 关联关系

crm_seorder.process_instance_id 对应流程引擎历史流程实例表:

  • 表:ACT_HI_PROCINST
  • 字段:PROC_INST_ID_

即:

  • crm_seorder.process_instance_idACT_HI_PROCINST.PROC_INST_ID_

2. 流程状态字段与回调更新策略

2.1 状态字段

业务表:crm_seorder

字段:flowstate
用途:记录流程状态(例如:未发起 / 审批中 / 审批完成)。

2.2 状态更新方式

通过 Listener 监听流程引擎回调,并更新 flowstate

2.2.1 流程提交后:更新为“审批中”

update crm_seorder
set flowstate='审批中'
where id='{<InstanceId>}'

2.2.2 流程结束后:更新为“审批完成”,并重置订单明细进度为 0

update crm_seorder
set flowstate='审批完成'
where id='{<InstanceId>}';

update crm_seorderentry
set progress=0
where seorder_id='{<InstanceId>}'

3. 后端业务逻辑开发(参照 oa_leave)

3.1 参考类

请假流程后端可参考:

  • BpmOALeaveController
  • BpmOALeaveServiceImpl

订单变更流程需实现类似结构的 Controller + Service,并按“业务表 + 流程”方式接入。

3.2 流程模型编号(PROCESS_KEY)

  • 请假:oa_leave
  • 订单变更:Order_Change

订单变更模块需定义静态变量:

  • PROCESS_KEY = "Order_Change"

3.3 创建流程实例

使用 BpmProcessInstanceApi 提供的创建方法:

  • #createProcessInstance(...):用于创建流程实例

订单变更发起时建议完成:

  • 创建流程实例
  • 回写 crm_seorder.process_instance_id
  • 同步更新 flowstate(建议通过 listener 统一处理,或创建成功后立即设置)

4. 前端业务逻辑开发(参照 oa_leave,但发起模式保持不变)

4.1 参考页面

请假模块前端可参考:

  • 发起界面:leave/create.vue
  • 详情界面:leave/detail.vue
  • 列表界面:leave/index.vue

4.2 发起模式要求(订单变更特有约束)

订单变更流程的发起模式不可修改,仍需:

  • 在订单行点击“变更”按钮发起流程
  • 点击按钮后,可改为打开订单变更流程标签页
  • 剩余操作形式(创建、查看、表单结构)可与请假流程一致

5. 路由配置(参照 remaining.ts 的请假流程配置)

5.1 请假 create/detail 路由定义示例

请假业务流程表单在 router/modules/remaining.ts 中定义 create.vuedetail.vue 路由,示例:

{
  path: '/bpm',
  component: Layout,
  name: 'bpm',
  meta: {
    hidden: true
  },
  children: [
    {
      path: 'oa/leave/create',
      component: () => import('@/views/bpm/oa/leave/create.vue'),
      name: 'OALeaveCreate',
      meta: {
        noCache: true,
        hidden: true,
        canTo: true,
        title: '发起 OA 请假',
        activeMenu: '/bpm/oa/leave'
      }
    },
    {
      path: 'oa/leave/detail',
      component: () => import('@/views/bpm/oa/leave/detail.vue'),
      name: 'OALeaveDetail',
      meta: {
        noCache: true,
        hidden: true,
        canTo: true,
        title: '查看 OA 请假',
        activeMenu: '/bpm/oa/leave'
      }
    }
  ]
}

5.2 订单变更路由要求

为订单变更流程新增类似的隐藏路由(create/detail),用于:

  • 从订单行按钮跳转打开流程发起页面(create)
  • 在流程流转/审批中查看业务详情(detail)

6. 流程结束回调监听与业务状态更新(必须)

6.1 监听器机制

审批结束时(通过 / 不通过 / 取消),后端必须监听最终结果,并更新业务表状态。

请假流程实现参考:

  • BpmOALeaveStatusListener

它继承框架封装的监听器抽象类:

  • BpmProcessInstanceStatusEventListener

该监听器特点:

  • 监听流程实例最终结束状态
  • 流程实例结束时回调通知最终结果(通过/不通过/取消)

6.2 订单变更监听器要求

订单变更业务接入工作流并需要监听审批结果时,必须:

  • 继承 BpmProcessInstanceStatusEventListener
  • 实现订单变更监听器(示例命名:BpmOrderChangeStatusListener
  • 在流程结束回调里更新:
    • crm_seorder.flowstate
    • crm_seorderentry.progress(如需求:流程结束后置 0)

7. 交付清单(Checklist)

7.1 后端

  • 定义 PROCESS_KEY = "Order_Change"
  • Controller(参照 BpmOALeaveController
  • ServiceImpl(参照 BpmOALeaveServiceImpl
  • 调用 BpmProcessInstanceApi#createProcessInstance(...) 创建流程实例
  • 回写 crm_seorder.process_instance_id
  • 提交后/结束后 flowstate 更新逻辑(建议走 Listener)
  • 新增流程结束监听器(继承 BpmProcessInstanceStatusEventListener

7.2 前端

  • 订单行“变更”按钮发起流程(保持发起模式不变)
  • 新增 create 页面(参照 leave/create.vue
  • 新增 detail 页面(参照 leave/detail.vue
  • [ ](可选)新增列表页面(参照 leave/index.vue
  • router/modules/remaining.ts 增加订单变更 create/detail 路由