TopicUtilOOB: Bereichsbezogen
Die TopicUtilOOB-Skripteinbindung enthält Funktionen, mit denen Sie Datensätze in der Thementabelle [sn_api_notif_mgmt_topic] abfragen und bearbeiten können. Diese Klasse wird auf der Serviceebene ausgeführt, die mit der DAO-Klasse (Data Access Object) interagiert.
Diese Funktionen werden aufgerufen, wenn im Formular „Themen“ die Schaltfläche Themen abrufen ausgewählt wird. Wenn Sie die Standardfunktionalität dieser Skripteinbindung ändern möchten, müssen Sie die in dieser Skripteinbindung enthaltenen Funktionen in der Skripteinbindung TopicUtil überschreiben.
Beide Skripteinbindungen werden im Namespace sn_api_notif_mgmt ausgeführt.
Weitere Informationen zu Themen finden Sie unter Handling the external events using Telecommunications API notification.
TopicUtilOOB - createTopic(Object topicObj)
Erstellt einen Datensatz in der Thementabelle [sn_api_notif_mgmt_topic] mithilfe der DAO-Einfügung.
Normalerweise rufen Sie diese Funktion innerhalb der Funktion „ validateAndInsertTopic “ auf, die auch verschiedene Validierungen des Inhalts durchführt.
| Name | Typ | Beschreibung |
|---|---|---|
| topicObj | Objekt | Objekt, das die Felder enthält, die im Themendatensatz gespeichert werden sollen. Für die Basisimplementierung weist das Objekt das folgende Format auf. Wenn Sie die Thementabelle ändern oder erweitern, sollte dieses Objekt diese Struktur widerspiegeln. Achten Sie darauf, alle Pflichtfelder einzubeziehen. |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Sys_id des erstellten Themendatensatzes. |
Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.
validateAndInsertTopics: function(topicsResponse) {
if (!gs.nil(topicsResponse)) {
var topicsArr = topicsResponse.response;
for (var i = 0; i < topicsArr.length; i++) {
var name = topicsArr[i].name;
var headerQuery = topicsArr[i].headerQuery;
var contentQuery = topicsArr[i].contentQuery;
var namespace = topicsArr[i].namespace;
var id = topicsArr[i].id;
var description = topicsArr[i].description;
var topicGr = TopicDAO.getTopicByNameHeaderContentNamespace(name, headerQuery, contentQuery, namespace,'');
if (topicGr && !topicGr.hasNext()) {
var topicObj = new sn_tmt_core.BaseObject();
topicObj.setValue('topic_name', name);
topicObj.setValue('header_query', headerQuery);
topicObj.setValue('content_query', contentQuery);
topicObj.setValue('namespace', namespace);
topicObj.setValue('description', description);
topicObj.setValue('topic_id', id);
topicObj.setValue('type', Constants.TYPE_INGRESS);
this.createTopic(topicObj);
}
}
}
}
Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.
var TopicUtil = Class.create();
TopicUtil.prototype =
Object.extendsObject(TopicUtilOOB, {
// Define overriding functions here. Pass a topic record object with
// values for a single Topic table record.
createTopic: function(topicObj){
return this.topicDAO.create(topicObj);
}
type: TopicUtil
});
TopicUtilOOB – getSubFlowName()
Gibt den Namen des Subflows zurück, der aufgerufen werden soll, um Themen aus einem externen System abzurufen.
Normalerweise wird diese Funktion von der Funktion triggerSubflow() aus aufgerufen. Dieser Subflow ist für die Kontaktaufnahme mit einem externen System und den Abruf von Themendatensätzen verantwortlich, die in die Tabelle „Themen“ [sn_api_notif_mgmt_topic] eingefügt werden müssen.
Der Name des Subflows ist in Konstanten.GET_TOPICS_SUBFLOWdefiniert. Für die Demo-Implementierung lautet dieser Subflow sn_ind_tmf642.event_alarm_notifications_api und generiert eine „Mock“-Antwort (ruft kein externes System auf), um die End-to-End-Verarbeitung zu zeigen.
Sie können diese Funktionalität so ändern, dass sie den Namen Ihres eigenen Subflows enthält, indem Sie den Namen des Subflows, der in der Skripteinbindung sn_api_notif_mgmt.Constants ausgeführt werden soll, überschreiben.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Zeichenfolge | Name des Subflows, der zum Abrufen von Themen aus einem externen System verwendet werden soll. |
Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.
var TopicUtil= Class.create();
TopicUtil.prototype =
Object.extendsObject(TopicUtilOOB, {
// Define overriding function here. In TopicUtilOOB it returns the flow name of a GET outbound API call that mocks the GET call.
// Override this function to return a flow that returns topics from an external system.
getSubflowName: function(){
return <flow_name>; // Return the name here
}
type: TopicUtil
});
TopicUtilOOB – triggerSubflow()
Löst den Subflow aus, der für das Abrufen von Themendatensätzen von einem externen System verantwortlich ist.
Diese Funktion wird aufgerufen, wenn der Benutzer im Formular „Themen“ die Schaltfläche Themen abrufen auswählt.
Der Name des Subflows, der ausgelöst wird, ist in Konstanten.GET_TOPICS_SUBFLOWdefiniert. Für die Demo-Implementierung lautet dieser Subflow sn_ind_tmf642.event_alarm_notifications_api und generiert eine „Mock“-Antwort (ruft kein externes System auf), um die End-to-End-Verarbeitung zu zeigen.
Sie müssen diese Funktion so ändern, dass sie den Namen Ihres eigenen Subflows enthält, indem Sie den Namen des Subflows, der in der Skripteinbindung sn_api_notif_mgmt.Constants ausgeführt werden soll, überschreiben.
Innerhalb des Subflows müssen Sie einen REST-Schritt, einen Verbindungsalias oder eine andere Implementierung erstellen, um eine Endpunkt-URL bereitzustellen, die Themen aus Ihrem externen Netzwerk abruft. Wenn die Themen von diesem Subflow zurückgegeben werden, rufen Sie die Funktion „ validateAndInsertTopics “ auf, um die zurückgegebene Themennutzlast zu überprüfen und die Datensätze in der Thementabelle einzufügen/zu aktualisieren.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.
var TopicUtil = Class.create();
TopicUtil.prototype =
Object.extendsObject(TopicUtilOOB, {
// Define overriding functions here. Override this function to call your own GET API outbound call subflow.
triggerSubflow: function(){
var result =''; // Pass the subflow here
try {
var flowOp = sn_fd.FlowAPI.getRunner().subflow(result).inBackground().withInputs().run();
if (flowOp) {
gs.addInfoMessage(gs.getMessage('Please refresh the list to see new Topics.'));
}
} catch (ex) {
gs.addInfoMessage(gs.getMessage(ex + ' Please check if the trigger is defined and passed correctly'));
}
}
type: TopicUtil
});
TopicUtilOOB – validAndInsertTopics(Array topicResponse)
Validiert die im Themendatensatz übergebene Nutzlast und fügt Datensätze in die Tabelle „Thema“ [sn_api_notif_mgmt_topic] ein, die diese Daten enthält.
Die Nutzlast der übergebenen Themen wird vom „GET API-Endpunkt“ abgerufen, der zum Abrufen von Themen aus einem externen System verwendet wird. Weitere Informationen zum Auslösen dieser GET-API finden Sie unter triggerSubflow().
Sie können diese Funktionalität ändern, um Ihre eigenen Validierungsregeln und Themendatensatzfelder einzubeziehen, indem Sie diese Funktion in der Skripteinbindung TopicUtil überschreiben.
| Name | Typ | Beschreibung |
|---|---|---|
| topicResponse | Array von Objekten | Nutzlast des Themendatensatzes, die vom externen System über den GET-API-Endpunkt innerhalb des Subflows zurückgegeben wird. Diese Nutzlast muss mit der Struktur der Thementabelle [sn_api_notif_mgmt_topic] übereinstimmen. Jedes Objekt innerhalb des Arrays ist ein separates Thema. In der Demoimplementierung ist dies beispielsweise: |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.
var TopicUtil= Class.create();
TopicUtil.prototype =
Object.extendsObject(TopicUtilOOB, {
// Define overriding functions here. Override this function to include custom
// validations on topic payload parameters and insert the record into the Topics table.
validateInsertTopics: function(topicsResponse){
// Provide validation on the passed payload.
this.createTopic(topicObj);
}
type: TopicUtil
});
TopicUtilOOB - VerifyTopics(Zeichenfolge „topicname“, Zeichenfolge „headerQuery“, Zeichenfolge „contentQuery“, Zeichenfolge „namespace“, Zeichenfolge previousSysId)
Bestimmt, ob ein anderer Themendatensatz in der Thementabelle [sn_api_notif_mgmt_topic] die angegebene Feldkombination als zusammengesetzten Schlüssel enthält, was auf ein doppeltes Thema hinweist.
| Name | Typ | Beschreibung |
|---|---|---|
| Themenname | Zeichenfolge | Der Name des Themas. |
| headerQuery | Zeichenfolge | Filter, der auf den Inhalt der Ereignis-Header-Eigenschaften angewendet werden soll. Diese Abfrage definiert den Typ der Ereignisse, die für das zugeordnete Thema belauscht werden sollen. Sie können diesen Parameter als geschachtelte Abfrage übergeben. Beispiel: Weitere Informationen finden Sie im TMF688 Ereignismanagement-API-Benutzerhandbuch. |
| contentQuery | Zeichenfolge | Filter, der auf den Inhalt des Ereignisse angewendet werden soll. Diese Abfrage ist ein tieferer Ereignisfilter, mit dem Informationen wie Ereignisschweregrad oder wahrscheinliche Ursache ermittelt werden. Sie können diesen Parameter als geschachtelte Abfrage übergeben. Beispiel: Weitere Informationen finden Sie im TMF688 Ereignismanagement-API-Benutzerhandbuch. |
| namespace | Zeichenfolge | Namespace, in dem sich das zugeordnete Thema befindet. Themen können nicht innerhalb einer Domäne dupliziert werden, können jedoch in mehreren Domänen enthalten sein. |
| previousSysId | Zeichenfolge | Optional. Sys_id des zu aktualisierenden Themas. Übergeben Sie diesen Wert nur, wenn Sie ein vorhandenes Thema aktualisieren. |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob ein anderer Datensatz in der Thementabelle die angegebene Feldkombination enthält. Mögliche Werte:
|
Das folgende Codebeispiel zeigt, wie diese Funktion überschrieben wird.
var TopicUtil= Class.create();
TopicUtil.prototype =
Object.extendsObject(TopicUtilOOB, {
// Define overriding functions here. Override this function to provide custom validations on
// the passed parameters and to verify whether an insert is possible or not.
verifyTopics: function(topicname, headerQuery, contentQuery, namespace, previousSysId) {
// Write modified code here to get any combination of records present in the current Topic table.
// In the current implementation, the function checks if there is a duplicate topic record that contains the
// passed parameters.
},
type: TopicUtil
});