Maximo 事件过滤器 Java class 未被发布频道拾取
Maximo Event Filter Java class not being picked up by Publish Channel
我写了一个 Java class 用于在其中一个发布通道上进行事件过滤,并重新构建和部署了它。我也在发布频道上引用了它。但是,Maximo 的行为就好像 class 从未存在过一样。
package com.sof.iface.eventfilter;
import java.rmi.RemoteException;
import psdi.iface.mic.MaximoEventFilter;
import psdi.iface.mic.PublishInfo;
import psdi.mbo.MboRemote;
import psdi.util.MXException;
import psdi.util.logging.MXLogger;
import psdi.util.logging.MXLoggerFactory;
public class VSPPWOCOMPEventFilter extends MaximoEventFilter {
private static final String SILMX_ATTRIBUTE_STATUS = "STATUS";
private MXLogger log = MXLoggerFactory.getLogger("maximo.application.EVENTFILTER");
/**
* Constructor
*
* @param pubInfo Publish Channel Information
* @throws MXException Maximo Exception
*/
public VSPPWOCOMPEventFilter(PublishInfo pubInfo) throws MXException {
super(pubInfo);
} // end constructor.
/**
* Decide whether to filter out the event before it triggers the
* Publish Channel or not.
*/
public boolean filterEvent(MboRemote mbo) throws MXException, RemoteException {
log.debug("######## com.sof.iface.eventfilter.VSPPWOCOMPEventFilter::filterEvent() - Start of Method");
boolean filter = false;
// try {
String status = mbo.getString(SILMX_ATTRIBUTE_STATUS);
log.debug("######## com.sof.iface.eventfilter.VSPPWOCOMPEventFilter::filterEvent() - WO Status " + status);
if(mbo.isModified("STATUS") && status == "COMP") {
log.debug("######## com.sof.iface.eventfilter.VSPPWOCOMPEventFilter::filterEvent() - Skipping MBO");
filter = true;
} else {
filter = super.filterEvent(mbo);
}
log.debug("######## com.sof.iface.eventfilter.VSPPWOCOMPEventFilter::filterEvent() - End of Method");
return filter;
// }
} // end filterEvent.
} // end class.
请忽略下面的文字:)
当您在生产环境中遇到问题时,良好的日志记录(跟踪)始终是您的救星。我永远不会停止告诉我的程序员同事用有意义的日志填充代码有多么重要 calls.Maximo 有一个良好而灵活的日志子系统。这篇 IBM TechNote 详细描述了日志记录在 Maximo 中的工作原理。现在让我们看看如何在您的自定义 Java 代码中使用 Maximo 登录。
工作订单完成后,您似乎需要跳过出站消息。当事件似乎没有发生时,请确保检查这些标志:
- 外部系统处于活动状态
- 发布频道已激活
- 发布频道侦听器已启用
我认为您可以使用 SKIP 操作处理规则轻松获得相同的结果。在此处查看详细信息:
还值得一提:IBM 在 7.6 版中添加了对事件过滤的自动化脚本支持,因此不再需要 build/redeploy。
我写了一个 Java class 用于在其中一个发布通道上进行事件过滤,并重新构建和部署了它。我也在发布频道上引用了它。但是,Maximo 的行为就好像 class 从未存在过一样。
package com.sof.iface.eventfilter;
import java.rmi.RemoteException;
import psdi.iface.mic.MaximoEventFilter;
import psdi.iface.mic.PublishInfo;
import psdi.mbo.MboRemote;
import psdi.util.MXException;
import psdi.util.logging.MXLogger;
import psdi.util.logging.MXLoggerFactory;
public class VSPPWOCOMPEventFilter extends MaximoEventFilter {
private static final String SILMX_ATTRIBUTE_STATUS = "STATUS";
private MXLogger log = MXLoggerFactory.getLogger("maximo.application.EVENTFILTER");
/**
* Constructor
*
* @param pubInfo Publish Channel Information
* @throws MXException Maximo Exception
*/
public VSPPWOCOMPEventFilter(PublishInfo pubInfo) throws MXException {
super(pubInfo);
} // end constructor.
/**
* Decide whether to filter out the event before it triggers the
* Publish Channel or not.
*/
public boolean filterEvent(MboRemote mbo) throws MXException, RemoteException {
log.debug("######## com.sof.iface.eventfilter.VSPPWOCOMPEventFilter::filterEvent() - Start of Method");
boolean filter = false;
// try {
String status = mbo.getString(SILMX_ATTRIBUTE_STATUS);
log.debug("######## com.sof.iface.eventfilter.VSPPWOCOMPEventFilter::filterEvent() - WO Status " + status);
if(mbo.isModified("STATUS") && status == "COMP") {
log.debug("######## com.sof.iface.eventfilter.VSPPWOCOMPEventFilter::filterEvent() - Skipping MBO");
filter = true;
} else {
filter = super.filterEvent(mbo);
}
log.debug("######## com.sof.iface.eventfilter.VSPPWOCOMPEventFilter::filterEvent() - End of Method");
return filter;
// }
} // end filterEvent.
} // end class.
请忽略下面的文字:) 当您在生产环境中遇到问题时,良好的日志记录(跟踪)始终是您的救星。我永远不会停止告诉我的程序员同事用有意义的日志填充代码有多么重要 calls.Maximo 有一个良好而灵活的日志子系统。这篇 IBM TechNote 详细描述了日志记录在 Maximo 中的工作原理。现在让我们看看如何在您的自定义 Java 代码中使用 Maximo 登录。
工作订单完成后,您似乎需要跳过出站消息。当事件似乎没有发生时,请确保检查这些标志:
- 外部系统处于活动状态
- 发布频道已激活
- 发布频道侦听器已启用
我认为您可以使用 SKIP 操作处理规则轻松获得相同的结果。在此处查看详细信息:
还值得一提:IBM 在 7.6 版中添加了对事件过滤的自动化脚本支持,因此不再需要 build/redeploy。