从位置导航到工单
Navigating from Location to Workorder
我需要:
1.创建单页定位应用
2. 在 table 中显示所选位置的所有资产
3. 提供一个按钮,用户可以从该按钮导航到 WOTRACK 以查看在选定位置及其资产上创建的所有工作订单。
我在第三个中遇到了困难。我已经尝试在上下文中启动并且它工作正常,除了我无法通过 sql 查询,如 'location={location} and assetnum in ({asset.assetnum})'。我需要过滤具有特定位置及其所有资产的工单。
我尝试将位置中的所有资产保存到非持久属性,并在上下文 url 中传递 Launch 中的属性值,它按预期工作但这样做我已经写了'Initialize value' 上的脚本导致性能问题。
脚本是这样的:
从 psdi.server 导入 MXServer;
从 psdi.mbo 导入 MboConstants;
如果应用 == "LOCATION1" :
if mbo.getString("LOCATION") is not None:
Locsite = mbo.getString("SITEID")
desc = mbo.getString("DESCRIPTION")
MaxuserSet = MXServer.getMXServer().getMboSet("MAXUSER", mbo.getUserInfo())
MaxuserSet.setWhere(" userid='"+user+"' ")
MaxuserSet.reset()
UserSite = MaxuserSet.getMbo(0).getString("DEFSITE")
if Locsite == UserSite:
AssetSet = mbo.getMboSet("ASSET")
AssetSet.setFlag(MboConstants.DISCARDABLE, True);
if not AssetSet.isEmpty():
AssetList = ""
AssetMbo = AssetSet.moveFirst()
while AssetMbo is not None:
AssetList = AssetList + str(AssetMbo.getString("ASSETNUM")) + "%2C"
AssetMbo = AssetSet.moveNext()
mbo.setValue("non-persitant",str(AssetList),11L)
并且在 LIC url 中我给出了:'http://xx.x.x.xx/maximo/ui/?event=loadapp&value=wotrack&tabid=List&additionalevent=useqbe&additionaleventvalue=location={LOCATION}|assetnum={non-persistant}'
这个需求还有其他可行的方案吗?
提前致谢
Launch In Context 更适用于将用户发送到 Maximo 应用程序外部,并从 Maximo 内部传递一些数据以在该外部应用程序中提供上下文。
您所做的听起来像是将工作流过程与交互节点结合使用的好地方。开发人员告诉交互节点将用户带到哪个应用程序以及使用哪个关系来查找用户应该在那里使用的数据。
为什么不在 table 详细信息(扩展的 table 行)中添加一个 table 控件,并在其中显示工单列表。从 table 中的 WONUM,如果他们想要有关特定工作订单的更多详细信息,您可以拥有一个应用程序 link 将他们带到 WOTRACK。无需定制(自动化脚本)。无需工作流程。漂亮又简单。
我需要: 1.创建单页定位应用 2. 在 table 中显示所选位置的所有资产 3. 提供一个按钮,用户可以从该按钮导航到 WOTRACK 以查看在选定位置及其资产上创建的所有工作订单。
我在第三个中遇到了困难。我已经尝试在上下文中启动并且它工作正常,除了我无法通过 sql 查询,如 'location={location} and assetnum in ({asset.assetnum})'。我需要过滤具有特定位置及其所有资产的工单。
我尝试将位置中的所有资产保存到非持久属性,并在上下文 url 中传递 Launch 中的属性值,它按预期工作但这样做我已经写了'Initialize value' 上的脚本导致性能问题。
脚本是这样的:
从 psdi.server 导入 MXServer;
从 psdi.mbo 导入 MboConstants;
如果应用 == "LOCATION1" :
if mbo.getString("LOCATION") is not None:
Locsite = mbo.getString("SITEID")
desc = mbo.getString("DESCRIPTION")
MaxuserSet = MXServer.getMXServer().getMboSet("MAXUSER", mbo.getUserInfo())
MaxuserSet.setWhere(" userid='"+user+"' ")
MaxuserSet.reset()
UserSite = MaxuserSet.getMbo(0).getString("DEFSITE")
if Locsite == UserSite:
AssetSet = mbo.getMboSet("ASSET")
AssetSet.setFlag(MboConstants.DISCARDABLE, True);
if not AssetSet.isEmpty():
AssetList = ""
AssetMbo = AssetSet.moveFirst()
while AssetMbo is not None:
AssetList = AssetList + str(AssetMbo.getString("ASSETNUM")) + "%2C"
AssetMbo = AssetSet.moveNext()
mbo.setValue("non-persitant",str(AssetList),11L)
并且在 LIC url 中我给出了:'http://xx.x.x.xx/maximo/ui/?event=loadapp&value=wotrack&tabid=List&additionalevent=useqbe&additionaleventvalue=location={LOCATION}|assetnum={non-persistant}'
这个需求还有其他可行的方案吗?
提前致谢
Launch In Context 更适用于将用户发送到 Maximo 应用程序外部,并从 Maximo 内部传递一些数据以在该外部应用程序中提供上下文。
您所做的听起来像是将工作流过程与交互节点结合使用的好地方。开发人员告诉交互节点将用户带到哪个应用程序以及使用哪个关系来查找用户应该在那里使用的数据。
为什么不在 table 详细信息(扩展的 table 行)中添加一个 table 控件,并在其中显示工单列表。从 table 中的 WONUM,如果他们想要有关特定工作订单的更多详细信息,您可以拥有一个应用程序 link 将他们带到 WOTRACK。无需定制(自动化脚本)。无需工作流程。漂亮又简单。