我有一个Jython 2.7脚本,它接收URL并使用URL中的参数/值来创建或更新记录
http://server:host/maximo/oslc/script/CREATEWO?&wonum=WO0001&description=Legacy&classstructureid=1666&wopriority=1&worktype=CM
详情:
from psdi.server import MXServer from psdi.mbo import MboSet resp = {} wonum = request.getQueryParam("wonum") description = request.getQueryParam("description") classstructureid = request.getQueryParam("classstructureid") wopriority = request.getQueryParam("wopriority") worktype = request.getQueryParam("worktype")
woset = MXServer.getMXServer().getMboSet("workorder",request.getUserInfo()) whereClause = "wonum= '" + wonum + "'" woset.setWhere(whereClause) woset.reset() woMbo = woset.moveFirst()
#If workorder already exists, update it: if woMbo is not None: woMbo.setValue("description", description) woMbo.setValue("classstructureid", classstructureid) woMbo.setValue("wopriority", wopriority) woMbo.setValue("worktype", worktype) woset.save() woset.clear() woset.close() resp[0]='Updated workorder ' + wonum #Else, create a new workorder else: woMbo=woset.add() woMbo.setValue("wonum",wonum) woMbo.setValue("description", description) woMbo.setValue("classstructureid", classstructureid) woMbo.setValue("wopriority", wopriority) woMbo.setValue("worktype", worktype) woset.save() woset.clear() woset.close() resp[0]='Created workorder ' + wonum responseBody =resp[0]
问题:
不幸的是,字段名/值在脚本中的3个不同位置进行了硬编码
我想增强脚本,使其是动态的,而不是硬编码的
有可能这样做吗
您正在使用Maximo Next Gen.REST API执行一个自动化脚本,该脚本接受带有参数的HTTP请求,并在系统中创建或更新工单。您希望使脚本更通用(假定为创建/更新的工单接受更多参数)和/或其他mbo
这可以在不开发自动化脚本的情况下实现,而只需使用您已经在使用的下一代API来执行脚本。API已经接受create&;更新mxwo对象结构上的请求,使其能够使用所有字段、子对象等
https://developer.ibm.com/static/site-id/155/maximodev/restguide/Maximo_Nextgen_REST_API.html#_creating_and_updating_resources
假设您总是使用相同的查询参数,而不是定义变量,循环遍历字符串列表并将它们作为键值对
填充
然后设置
否则,您将寻找^{} 和
getQuery
方法,然后是一个split("=")
,例如,给您["wonum", "WO0001", "description", "Legacy"]
,您可以循环其他元素以获得动态条目注意:这会受到SQL注入攻击,应予以修复
相关问题 更多 >
编程相关推荐