当前位置: 首页 > news >正文

Maximo 在 Automation Script 中访问数据库

在 Automation Script 中我们通常使用 mbo 对象来操作数据,但有时候当数据量较大时,使用 mbo 对象来操作数据会比较慢。这时候,我们可以使用 JDBC 的方式来直接访问数据库,从而提高操作数据的效率。

下面看看使用 JavaScript 脚本怎么实现在 Automation Script 中访问数据库:

  1. 首先需要倒入必要的包
load('nashorn:mozilla_compat.js');
importPackage(Packages.psdi.server);
importPackage(Packages.psdi.security);
importPackage(Packages.psdi.security);
importPackage(Packages.java.sql);
  1. 获取 Connection 实例
var mxServer = MXServer.getMXServer();
var connKey = mxServer.getSystemUserInfo().getConnectionKey();
var conn = mxServer.getDBManager().getConnection(connKey);
  1. 执行 SQL 语句并处理结果
var wos = [];var stmt = conn.createStatement();
var rs = stmt.executeQuery("select * from workorder order by WORKORDERID");
var i = 0;
while(rs.next()) {var wo = {};if (i < (pageNum - 1) * pageSize) {continue;}if (i >= pageNum * pageSize) {break;}i++;wo.wonum = rs.getString("WONUM");wo.workorderid = rs.getString("WORKORDERID");wo.description = rs.getString("DESCRIPTION");wos.push(wo);
}rs.close()
stmt.close()
conn.close()
  1. 以 json 格式返回
var responseBody = JSON.stringify(wos);

完整代码

下面看一下完整的 Automation Script 代码:

load('nashorn:mozilla_compat.js');
importPackage(Packages.psdi.server);
importPackage(Packages.psdi.security);
importPackage(Packages.psdi.security);
importPackage(Packages.java.sql);var pageNum = request.getQueryParam("pageNum");
var pageSize = request.getQueryParam("pageSize");var mxServer = MXServer.getMXServer();
var connKey = mxServer.getSystemUserInfo().getConnectionKey();
var conn = mxServer.getDBManager().getConnection(connKey);var wos = [];var stmt = conn.createStatement();
var rs = stmt.executeQuery("select * from workorder order by WORKORDERID");
var i = 0;
while(rs.next()) {var wo = {};if (i < (pageNum - 1) * pageSize) {continue;}if (i >= pageNum * pageSize) {break;}i++;wo.wonum = rs.getString("WONUM");wo.workorderid = rs.getString("WORKORDERID");wo.description = rs.getString("DESCRIPTION");wos.push(wo);
}rs.close()
stmt.close()
conn.close()var responseBody = JSON.stringify(wos);

测试

使用 vscode 的 REST Client 插件来测试这个 Automation Script

### 
# call automation script
GET {{base_url}}/api/script/<automation script>?apikey={{api_key}}&lean=1&pageNum=1&pageSize=10
Content-Type: application/json

返回结果类似如下:

[{"wonum": "1638","workorderid": "1","description": "Check Leaking Condensate Return Pump"},...
]
http://www.lryc.cn/news/349143.html

相关文章:

  • gitee 简易使用 上传文件
  • iOS Xcode 升级Xcode15报错: SDK does not contain ‘libarclite
  • 即插即用篇 | YOLOv8引入轴向注意力 Axial Attention | 多维变换器中的轴向注意力
  • 【芯片制造】【常用术语】CP、FT、WAT
  • 计算机vcruntime140.dll找不到如何修复,分享5种靠谱的修复教程
  • 超级简单的地图操作工具开发可疑应急,地图画点,画线,画区域,获取地图经纬度等
  • 25_NumPy数组np.round将ndarray舍入为偶数
  • Java字符串去除空格的方法
  • 【Python】【应用】Python应用之如何操作WiFi之一——使用pywifi
  • 2024OD机试卷-分割均衡字符串 (java\python\c++)
  • 完整版解答!2024年数维杯数学建模挑战赛B题
  • Android开发,日志级别
  • Docker 部署 MySQL 数据库
  • 代码技巧: 类中同一个函数可以同时存在常函数版本和普通函数版本(c++)
  • 2024OD机试卷-转盘寿司 (java\python\c++)
  • MongoDB创建或删除用户并验证数据库权限
  • 半小时搞懂STM32面经知识——RCC
  • 汇聚荣科技:拼多多开店没有流量应该怎么办?
  • uni-app(三):离线打包与插件引用(Android)
  • 数据分析——对比思维、A/B test
  • 深度探索Java工厂模式:创新与灵活性的结合
  • delphi6直连redis服务(用lua脚本redis模块)
  • 嵌入式Linux:编译和使用Protobuf库
  • 导航app为什么知道还有几秒变绿灯?
  • 设计模式 六大原则之单一职责原则
  • DOM重点核心(注册事件+DOM事件流)
  • 浅谈操作系统中的重要概念——线程(3)——设计模式
  • nginx配置域名与IP访问服务冲突问题
  • 2024OD机试卷-字符串序列判定 (java\python\c++)
  • 7-128 最长公共子串