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

IBM Maximo跳转自定义应用(带Where条件)的排班人员筛选实现咨询

Maximo 员工班次分配选择功能实现方案

你这个需求有两种成熟的原生实现方案,均可以满足过滤参数传递、记录回传、列表可编辑的要求,具体实现步骤如下:

方案一:自定义可编辑列表对话框(推荐)

该方案不需要额外开发独立应用,直接在现有父应用中扩展功能,交互逻辑更符合用户操作习惯:

  • 第一步:先创建自定义业务对象存储班次分配数据,建议新建交叉表XX_EMP_SHIFTASSIGN,关联PERSON(员工表)、SHIFT(班次表),存储班次ID、员工ID、是否已发放班次、发放时间、资历年数等字段,既可以支撑列表编辑修改的需求,也方便后续做循环排班的排序逻辑。
  • 第二步:在父应用(班次管理应用)的应用设计器中新增自定义对话框,对话框数据源绑定上述自定义对象,将列表控件设置为可编辑状态,用户浏览列表时可直接修改记录字段(比如标记班次已发放)。
  • 第三步:实现父应用参数传递:给弹出对话框的按钮配置launchDialog事件,在事件参数中拼接需要传递的上下文参数,示例配置如下:
    launchDialog('empSelectDialog', '&siteid=' + mainRecord.siteid + '&shifttype=' + mainRecord.shifttype)
    对话框的数据源会自动将传入参数作为过滤条件,也可以在对话框的initialize事件中编写自动化脚本获取参数,拼接更复杂的过滤逻辑(比如按资历年数排序、排除已有排班冲突的员工)。
  • 第四步:实现选中记录回传:给对话框的「确认选择」按钮添加事件脚本,获取用户选中的列表记录,将需要的字段值赋值给父应用对应字段后关闭对话框即可,示例脚本如下:
    var selectedRecs = dialog.getDataProvider().getSelectedRecords();
    var parentShiftRec = app.getMainRecord();
    // 批量赋值多条选中员工到父应用班次分配子表
    for(var i=0; i<selectedRecs.length; i++){
      var newAssign = parentShiftRec.getMboSet("XX_SHIFTASSIGN").add();
      newAssign.setValue("PERSONID", selectedRecs[i].getString("PERSONID"));
    }
    dialog.close();
    

方案二:独立子应用+Go To菜单跳转实现

如果确实需要独立应用管理员工排班分配逻辑,可按以下步骤实现两个要求:

A 父应用向子应用传递过滤条件

Go To菜单跳转原生支持上下文参数传递,只需做两处配置:

  • 在父应用的应用设计器中,配置跳转按钮的目标URL,格式如下:
    maximo.jsp?event=loadapp&appname=你的子应用标识&additionalevent=useqbe&shifttype={SHIFTTYPE}&siteid={SITEID}
    其中{SHIFTTYPE}、{SITEID}为父应用当前主记录的字段名,Maximo会自动替换为当前记录的实际值传递给子应用。
  • 在子应用的appinit事件中添加自动化脚本,通过getWebClientSession().getParameter("参数名")获取传入的参数,自行拼接查询条件过滤子应用列表,同时可添加按资历排序的规则。

B 子应用选中记录回传给父应用

Maximo原生支持跨应用返回值逻辑,配置如下:

  • 在子应用的应用设计器中新增「确认选择并返回」按钮,按钮事件配置为returnvalue,指定需要返回的字段列表(比如PERSONID、DISPLAYNAME)。
  • 在父应用的跳转事件中添加returnvalue监听规则,子应用返回值后自动将字段映射赋值给父应用的对应字段,也可以添加脚本处理批量返回的多条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:27:01