我们目前使用的是 Maximo 7.6.1,并已开始使用 Restful API,并且想知道是否有办法通过传递 wonum 和 siteid 而不是 workorderid 来使用 RESTApi 更新工作订单。
我们希望避免对中间件进行额外的 GET 调用来检索 workorderid,然后在 PUT 请求中使用它。
使用此 URL(以及操作系统)会尝试插入记录,即使 HTTP 方法是 PUT。
/maxrest/rest/mbo/WORKORDER?_action=AddChange&siteid=XXX&wonum=7065644&description=测试
任何指示都会有帮助。
谢谢
最佳答案
IBM 文档似乎建议您只能使用唯一 ID 更新现有记录:
Use the PUT method to update or insert a resource. An update request must provide the unique ID of the resource. To update an object structure resource, the ID of the main object is required.
使用您提供的 URL 收到的响应似乎证实了这一点,因为它表明工作订单已存在,因此无法创建:
Error 400: BMXAA4129E - The record for Site=BEDFORD, Work Order=1234 already exists. Ensure that the key value for the given record is unique.
查看以下网址中的信息,我无法确定在没有唯一 ID 的情况下执行更新的方法:
此外,Maximo RESTful API Swagger 文档表明使用 POST 到/os/mxwo 来“创建新资源”:
/maximo/oas3/api.html?includeactions=1#/Work_Order_Definition_(MXWO)/post_os_mxwo
虽然对/os/mxwo/{id} 的 POST 用于“更新 WORKORDER 对象”:
/maximo/oas3/api.html?includeactions=1#/Work_Order_Definition_(MXWO)/post_os_mxwo__id_
但是,我能够使用唯一 ID 更新现有工作订单。既然如此,我只能建议以下之一:
- 如果您首先使用 REST/OSLC API 创建工作订单, 从收到的响应中检索并存储唯一 ID 记录已创建。
- 如果上述 (1) 不可行,请执行 GET 并使用参数 根据 wonum 和 siteid 进行过滤的查询,并且只接收返回的最小值 字段(例如仅 workorderid)。
- 如果 (1) 或 (2) 都不可行,请调查是否可能 自定义 Maximo 并为工作订单创建您自己的端点 以 wonum 和 siteid 作为参数的对象结构, 检索 mbo 并执行更新。
关于Maximo- 通过传递 wonum 和 siteid 而不是 workorderid 使用 RESTApi 更新工作订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61559251/