TopicUtilOOB – Umfang
Die TopicUtilOOB Die Skripteinbindung enthält Funktionen, mit denen Sie Datensätze in der Tabelle „Thema“ [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 Themen Abrufen Schaltfläche ist im Formular „Themen“ ausgewählt. Wenn Sie die Standardfunktionalität dieser Skripteinbindung ändern möchten, müssen Sie die Funktionen in dieser Skripteinbindung in überschreiben TopicUtil Skripteinbindung.
Beide Skripteinbindungen werden in ausgeführt sn_api_notif_mgmt Namespace.
Weitere Informationen zu Themen finden Sie unter External event management via Telecommunications API notifications.
TopicUtilOOB – createTopic(Object topicObj)
Erstellt einen Datensatz in der Tabelle „Thema“ [sn_api_notif_mgmt_topic] mit DAO INSERT.
Normalerweise rufen Sie diese Funktion innerhalb von auf ValidateAndInsertTopic Funktion, die auch verschiedene Validierungen für den Inhalt ausführt.
| Name | Typ | Beschreibung |
|---|---|---|
| TopicObj | Objekt | Objekt, das die Felder enthält, die im Themendatensatz gespeichert werden sollen. Für die Basisimplementierung hat das Objekt das folgende Format. Wenn Sie die Tabelle „Themen“ ändern oder erweitern, sollte dieses Objekt diese Struktur widerspiegeln. Stellen Sie sicher, dass Sie alle Pflichtfelder einschließen. |
| 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 von einem externen System abzurufen.
Normalerweise wird diese Funktion von aufgerufen TriggerSubflow() Funktion. Dieser Subflow ist dafür verantwortlich, ein externes System zu kontaktieren und alle Themendatensätze zu erhalten, die in die Tabelle „Themen“ [sn_api_notif_mgmt_topic] eingefügt werden müssen.
Der Name des Subflows ist in definiert KONSTANTS.GET_TOPICS_SUBFLOW . Für die Demoimplementierung ist dieser Subflow sn_ind_tmf642.event_Alarm_Notifications_api Und generiert eine „Scheinantwort“ (ruft kein externes System auf), um die End-to-End-Verarbeitung anzuzeigen.
Sie können diese Funktionalität ändern, um den Namen Ihres eigenen Subflows einzubeziehen, indem Sie den Namen des Subflows überschreiben, der in ausgeführt werden soll sn_api_notif_mgmt.Konstanten Skripteinbindung.
| 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 aus einem externen System verantwortlich ist.
Diese Funktion wird aufgerufen, wenn der Anwender auswählt Themen Abrufen Schaltfläche im Formular „Themen“.
Der Name des ausgelösten Subflows ist in definiert KONSTANTS.GET_TOPICS_SUBFLOW . Für die Demoimplementierung ist dieser Subflow sn_ind_tmf642.event_Alarm_Notifications_api Und generiert eine „Scheinantwort“ (ruft kein externes System auf), um die End-to-End-Verarbeitung anzuzeigen.
Sie müssen diese Funktion ändern, um den Namen Ihres eigenen Subflows einzubeziehen, indem Sie den Namen des Subflows überschreiben, der in ausgeführt werden soll sn_api_notif_mgmt.Konstanten Skripteinbindung.
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 den auf ValidateAndInsertThemen Funktion zum Überprüfen der zurückgegebenen Themennutzlast und zum Einfügen/Aktualisieren der Datensätze in die Thementabelle.
| 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 – validateAndInsertTopics(Array topicsResponse)
Validiert die übergebene Nutzlast des Themendatensatzes und fügt Datensätze in die Tabelle „Thema“ [sn_api_notif_mgmt_topic} ein, die diese Daten enthält.
Die übergebene Themen-Nutzlast wird vom „API-Endpunkt ABRUFEN“ 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 überschreiben TopicUtil Skripteinbindung.
| Name | Typ | Beschreibung |
|---|---|---|
| TopicsResponse | Array von Objekten | Nutzlast des Themendatensatzes, die vom externen System über den GET-API-Endpunkt innerhalb des Subflows zurückgegeben wird. Diese Nutzlast muss der Struktur der Tabelle „Themen“ [sn_api_notif_mgmt_topic] entsprechen. Jedes Objekt im Array ist ein separates Thema. Beispiel: In der Demo-Implementierung ist dies: |
| 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(String topicname, String headerQuery, String contentQuery, String Namespace, String PreviousSysId)
Bestimmt, ob ein anderer Themendatensatz in der Tabelle „Thema“ [sn_api_notif_mgmt_topic] die angegebene Kombination von Feldern als zusammengesetzten Schlüssel enthält, was auf ein doppeltes Thema hinweist.
| Name | Typ | Beschreibung |
|---|---|---|
| TopicName | 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 zugehörige Thema abgehört werden sollen. Sie können diesen Parameter als geschachtelte Abfrage übergeben. Beispiel: Weitere Informationen finden Sie unter TMF688 Ereignismanagement-API – Anwenderhandbuch . |
| ContentQuery | Zeichenfolge | Filter, der auf den Inhalt des Ereignisses angewendet werden soll. Diese Abfrage ist ein tieferer Ereignisfilter, der verwendet wird, um Informationen wie den Ereignisschweregrad oder die wahrscheinliche Ursache zu finden. Sie können diesen Parameter als geschachtelte Abfrage übergeben. Beispiel: Weitere Informationen finden Sie unter TMF688 Ereignismanagement-API – Anwenderhandbuch . |
| namespace | Zeichenfolge | Namespace, in dem sich das zugehörige Thema befindet. Themen können nicht innerhalb einer Domäne dupliziert werden, können jedoch in mehreren Domänen enthalten sein. |
| Vorherige SysId | 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 Kombination von Feldern 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
});