IPluginMonitor
Verwendungsmöglichkeiten
Das Plugin dient zum Zustands-Monitoring bei selbst erstellten Plugins oder prüfen von Verfügbarkeiten angebundener Drittsysteme per JMX-Schnittstelle.
Methodesignaturen
| String check() Diese Methode wird bei jedem Aktualisieren der Anzeige des Monitors aufgerufen. Im Fall einer erfolgreichen Prüfung ist die Konstante IPluginMonitor.CHECK_SUCCESS zurückzuliefern. Für den Fehlerfall bestehen folgende Möglichkeiten:
|
Beispiel-Implementierungen
Beispiel 1: Der nachfolgende Quellcode zeigt ein Beispiel, wo auf die Verfügbarkeit eines Drittsystems geprüft wird.
import java.net.HttpURLConnection;
import java.net.URL;
import de.xima.fc.plugin.interfaces.monitoring.IPluginMonitor;
public class MyMonitor implements IPluginMonitor {
@Override
public String check() {
try {
URL url = new URL("http://example.com");
HttpURLConnection urlConnection = null;
urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setConnectTimeout(1000);
urlConnection.setReadTimeout(1000);
urlConnection.connect();
if (HttpURLConnection.HTTP_OK != urlConnection.getResponseCode()) {
return urlConnection.getResponseMessage();
}
return IPluginMonitor.CHECK_SUCCESS;
}
catch (Exception e) {
return IPluginMonitor.CHECK_ERROR;
}
}
}Beispiel 2: Abfrage Fehlerstatus eines Statusverarbeitungs-Plugins
import org.apache.commons.lang3.StringUtils;
import de.xima.fc.plugin.interfaces.monitoring.IPluginMonitor;
import de.xima.foobar.plugin.MyTestPlugin;
public class MyMonitor implements IPluginMonitor {
@Override
public String check() throws Exception {
String state = MyTestPlugin.getMonitoringState();
if (StringUtils.isBlank(state) || StringUtils.equalsIgnoreCase(IPluginMonitor.CHECK_SUCCESS, state)) {
return IPluginMonitor.CHECK_SUCCESS;
} else {
return state;
}
}
}import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import de.xima.fc.bl.fdv.processing.result.ProcessingResultMultiValue;
import de.xima.fc.interfaces.plugin.param.workflow.IPluginProcessingParams;
import de.xima.fc.interfaces.plugin.retval.workflow.IPluginProcessingRetVal;
import de.xima.fc.plugin.config.IPluginConfigParam;
import de.xima.fc.plugin.config.IPluginConfigParam.EPluginParamBehavior;
import de.xima.fc.plugin.config.IPluginConfigParamList;
import de.xima.fc.plugin.exception.FCPluginException;
import de.xima.fc.plugin.interfaces.monitoring.IPluginMonitor;
import de.xima.fc.plugin.interfaces.workflow.IPluginProcessing;
import de.xima.fc.plugin.models.config.PluginConfigGroupItem;
import de.xima.fc.plugin.models.config.PluginConfigParam;
@SuppressWarnings("serial")
public class MyTestPlugin implements IPluginProcessing, IPluginConfigParamList {
private static final String PARAM_IN_1 = "InputParameter_1";
private static final String PARAM_OUT = "OutputParameter";
private static String monitoringState;
public String getName() {
return "MyPlugin";
}
public void initPlugin() throws FCPluginException { }
public static String getMonitoringState() {
return monitoringState;
}
@Override
public IPluginProcessingRetVal execute(IPluginProcessingParams processingParams) throws FCPluginException {
// read input values
Map<String, String> pluginParams = processingParams.getParams();
String param1 = pluginParams.get(PARAM_IN_1);
// check and write state for monitoring
if (StringUtils.isBlank(param1)) {
monitoringState = "Param1 is empty!";
} else {
monitoringState = IPluginMonitor.CHECK_SUCCESS;
}
// plugin processing
// .... do something
// write return values
String resultValue = "AnyResultValue";
return new ProcessingResultMultiValue(createResult(resultValue), true);
}
@Override
public String getDescription() {
return "The plugin makes something important...";
}
@Override
public Map<String, IPluginConfigParam> getConfigParameter() {
Map<String, IPluginConfigParam> map = new LinkedHashMap<>();
map.put("input", new PluginConfigGroupItem("base data:"));
map.put(PARAM_IN_1, new PluginConfigParam(PARAM_IN_1, "This is a mandatory parameter!", true, EPluginParamBehavior.IN));
map.put("output", new PluginConfigGroupItem("output data:"));
map.put(PARAM_OUT, new PluginConfigParam(PARAM_OUT, null, false, EPluginParamBehavior.OUT));
return map;
}
private List<Map<String, String>> createResult(String result) {
List<Map<String, String>> resultList = new ArrayList<Map<String, String>>();
Map<String, String> resultMap = new HashMap<String, String>();
resultMap.put(PARAM_OUT, result);
resultList.add(resultMap);
return resultList;
}
}War dieser Artikel hilfreich?
Das ist großartig!
Vielen Dank für das Feedback
Leider konnten wir nicht helfen
Vielen Dank für das Feedback
Feedback gesendet
Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren