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

Maximo Anywhere自定义应用缓存异常:离线无法检索已下载工单记录

解决Maximo Anywhere 7.6.2离线筛选工单缺失的问题

针对你在自定义Work_Execution应用中遇到的离线筛选工单找不到的问题,结合Maximo Anywhere 7.6.2版本的特性,我整理了几个可行的解决方案和排查思路:

一、强制所有下载记录进入缓存

你猜测的“仅20条进入缓存、其余在本地存储”是符合Maximo Anywhere默认行为的——分页加载时,只有当前页的记录会存入内存缓存,剩余记录保存在本地SQLite数据库中。要让所有下载的工单都进入缓存,可以通过以下方式调整配置:

  1. 修改资源配置文件
    打开自定义应用的WorkOrder.json资源配置文件,调整以下参数:

    • 将pageSize设置为足够大的值(比如2000),2000条记录在Android 5/6设备的内存承受范围内;
    • 添加或修改cachePolicy属性为"full",确保下载的所有记录都被缓存到内存中;
    • 若启用了离线分页,关闭enableOfflinePagination属性,避免分页逻辑限制缓存数量。
  2. 自定义下载动作逻辑
    在“下载当前列表”的按钮动作中,替换默认的分页加载方法为loadAll(),这个方法会一次性将所有符合条件的记录加载到缓存中。示例代码片段:

    // 替换原有的分页加载逻辑
    WorkOrder.loadAll({
        where: yourDownloadFilterCondition,
        success: function() {
            // 处理下载成功提示等逻辑
        },
        failure: function(error) {
            // 处理下载失败的错误提示
        }
    });
    

二、直接查询设备本地SQLite存储

如果不想修改缓存策略,也可以直接查询本地存储的工单数据。Maximo Anywhere将离线数据存在设备的SQLite数据库中,你可以通过自定义代码访问:

  1. 使用SQLiteAccess API
    编写自定义JavaScript模块,调用Anywhere提供的SQLiteAccess工具类执行查询。示例代码:
    var db = new SQLiteAccess();
    db.openDatabase(function() {
        // 替换ROUTE_FIELD为你实际的路线字段名
        var query = "SELECT * FROM WORKORDER WHERE ROUTE_FIELD = ?";
        db.executeSql(query, [targetRouteValue], function(resultSet) {
            // 处理查询结果,转换为应用可识别的工单对象
            var workOrders = [];
            while (resultSet.isValidRow()) {
                workOrders.push({
                    wonum: resultSet.fieldByName("WONUM"),
                    route: resultSet.fieldByName("ROUTE_FIELD"),
                    // 按需添加其他需要展示的字段
                });
                resultSet.next();
            }
            // 将结果绑定到界面控件进行展示
        }, function(error) {
            // 处理查询错误的提示逻辑
        });
    }, function(error) {
        // 处理数据库打开失败的错误提示
    });
    
    注意:需要先确认本地SQLite表的字段名和结构(可通过导出设备上的数据库文件查看),确保查询的字段与Maximo中的自定义组合字段完全对应。

三、额外排查要点

在实施上述方案前,建议先确认以下问题:

  • 确认下载记录是否完整存储:通过Android调试工具导出应用的SQLite数据库(路径通常为/data/data/com.ibm.anywhere.yourApp/databases/),用SQLite查看工具检查WORKORDER表的记录数,确认2000条工单是否都已下载到本地;
  • 检查筛选字段的离线同步配置:确保“路线”这个自定义组合字段已添加到WorkOrder资源的offlineFields列表中,否则离线时该字段可能没有值,导致筛选失效;
  • 验证筛选逻辑的正确性:离线时的筛选是否正确匹配了本地存储中的字段值,比如组合字段的格式是否与在线时一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:10:44