There are built in services for Integration Server to suspend and Resume Triggers.
- pub.trigger:suspendProcessing
- pub.trigger:suspendRetrieval
- pub.trigger:resumeRetrieval
- pub.trigger:resumeProcessing
Having suspended a trigger, is there a way to know the state of a trigger?
In my case, (WM IS v7.1.2), we have a SOAP client service that gets invoked by a trigger. A colleague suspended the trigger to temporarily disable the service from operating. And conveniently forgot the action. It took a lot of time and effort to realize that the trigger may have been suspended. We resumed it and the service is now back online normal.
For future, I am looking for a way to determine if a given trigger is suspended or not.
Any one has done this before? Any advice on how to do this?
-Jose
Create a Flow Service and put an invoke step say pub.xml.queryXMLNode and then properties panel … change service to wm.server.triggers:getTriggerReport
Or here you go with Java code…
IDataCursor pipelineCursor = pipeline.getCursor();
String triggerName = IDataUtil.getString(pipelineCursor, “triggerName”);
pipelineCursor.destroy();
String triggerNameList;
if(triggerName == null || triggerName.length() < 1)
{
triggerNameList = TriggerManagementUtil.getTriggerList();
} else
{
triggerNameList = (new String {
triggerName
});
}
if(triggerNameList == null || triggerNameList.length < 1)
{
return;
}
pipelineCursor = pipeline.getCursor();
IData triggerDataArray[] = new IData[triggerNameList.length];
for(int i = 0; i < triggerNameList.length; i++)
{
TriggerManagementUtil tmu = new TriggerManagementUtil(triggerNameList[i]);
triggerDataArray[i] = IDataFactory.create();
IDataCursor triggerDataArrayCursor = triggerDataArray[i].getCursor();
IDataUtil.put(triggerDataArrayCursor, "name", triggerNameList[i]);
IData properties = tmu.getPropertiesAsData();
if(properties != null)
{
IDataUtil.put(triggerDataArrayCursor, "properties", properties);
}
IData conditions[] = tmu.getConditionsAsData();
if(conditions != null)
{
IDataUtil.put(triggerDataArrayCursor, "conditions", conditions);
}
try
{
IData retrievalStatus = tmu.getRetrievalStatusAsData();
if(retrievalStatus != null)
{
IDataUtil.put(triggerDataArrayCursor, "retrievalStatus", retrievalStatus);
}
IData processingStatus = tmu.getProcessingStatusAsData();
if(processingStatus != null)
{
IDataUtil.put(triggerDataArrayCursor, "processingStatus", processingStatus);
}
}
catch(ServiceException ex) { }
triggerDataArrayCursor.destroy();
}
IDataUtil.put(pipelineCursor, "triggers", triggerDataArray);
pipelineCursor.destroy();
You will need to import
com.wm.app.b2b.server.dispatcher.trigger.*
com.wm.lang.ns.NSTrigger
Thanks Suresh. And for the Java code too!
-Jose
Hi,
I need to find a way by which I can find the trigger name from trigger service (the service which is being called from the same trigger). I am using a resource monitoring service in the trigger. So when the trigger gets suspended after the trigger service retries on transient error is there any way to get the trigger name from resource monitoring service once it enables the trigger.?