目标:参照请假流程(
oa_leave)的实现方式,继续开发订单变更流程(Order_Change)的前后端,实现业务表与流程实例关联、流程状态落库、发起/详情/列表页面对齐,以及流程结束结果监听与业务状态回写。
业务表:crm_seorder
字段:process_instance_id
用途:关联流程实例。
crm_seorder.process_instance_id 对应流程引擎历史流程实例表:
ACT_HI_PROCINSTPROC_INST_ID_即:
crm_seorder.process_instance_id ↔ ACT_HI_PROCINST.PROC_INST_ID_业务表:crm_seorder
字段:flowstate
用途:记录流程状态(例如:未发起 / 审批中 / 审批完成)。
通过 Listener 监听流程引擎回调,并更新 flowstate。
update crm_seorder
set flowstate='审批中'
where id='{<InstanceId>}'
update crm_seorder
set flowstate='审批完成'
where id='{<InstanceId>}';
update crm_seorderentry
set progress=0
where seorder_id='{<InstanceId>}'
请假流程后端可参考:
BpmOALeaveControllerBpmOALeaveServiceImpl订单变更流程需实现类似结构的 Controller + Service,并按“业务表 + 流程”方式接入。
oa_leaveOrder_Change订单变更模块需定义静态变量:
PROCESS_KEY = "Order_Change"使用 BpmProcessInstanceApi 提供的创建方法:
#createProcessInstance(...):用于创建流程实例订单变更发起时建议完成:
crm_seorder.process_instance_idflowstate(建议通过 listener 统一处理,或创建成功后立即设置)请假模块前端可参考:
leave/create.vueleave/detail.vueleave/index.vue订单变更流程的发起模式不可修改,仍需:
请假业务流程表单在 router/modules/remaining.ts 中定义 create.vue 和 detail.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'
}
}
]
}
为订单变更流程新增类似的隐藏路由(create/detail),用于:
审批结束时(通过 / 不通过 / 取消),后端必须监听最终结果,并更新业务表状态。
请假流程实现参考:
BpmOALeaveStatusListener它继承框架封装的监听器抽象类:
BpmProcessInstanceStatusEventListener该监听器特点:
订单变更业务接入工作流并需要监听审批结果时,必须:
BpmProcessInstanceStatusEventListenerBpmOrderChangeStatusListener)crm_seorder.flowstatecrm_seorderentry.progress(如需求:流程结束后置 0)PROCESS_KEY = "Order_Change"BpmOALeaveController)BpmOALeaveServiceImpl)BpmProcessInstanceApi#createProcessInstance(...) 创建流程实例crm_seorder.process_instance_idflowstate 更新逻辑(建议走 Listener)BpmProcessInstanceStatusEventListener)leave/create.vue)leave/detail.vue)leave/index.vue)router/modules/remaining.ts 增加订单变更 create/detail 路由