Interagieren Sie mit Tabellendaten in einer ServiceNow -Instanz
Mit Mobile SDK können Sie mit Daten in Tabellen interagieren, die sich in Ihrer Instanz von ServiceNow befinden. Sie können mit diesen Daten über die ServiceNow REST Table -API mit der NowTableService()- API interagieren, die direkt die REST-Schnittstelle aufruft, oder über die NowGraphQLService()- API, die eine angegebene GraphQL-Abfrage für die REST GraphQL- API ausführt.
Wenn Sie Daten aus mehreren Tabellen innerhalb eines einzigen Aufrufs zurückgeben möchten, müssen Sie die NowGraphQLService()- API verwenden. Wenn Sie mit anderen ServiceNow REST APIs als der Tabellen -API interagieren müssen, lesen Sie Interagieren Sie mit der öffentlichen REST-API in einer ServiceNow -Instanz.
Verwenden von NowGraphQLService zur Interaktion mit ServiceNow -Tabellen
Die NowGraphQLService -Klasse stellt Methoden bereit, mit denen Sie GraphQL-Abfragen für eine angegebene Tabelle in Ihrer ServiceNow -Instanz erstellen und ausführen können, wenn der angemeldete Benutzer über die entsprechende Berechtigung verfügt. Sie können alle CRUD-Operationen in Ihrer GraphQL-Abfrage definieren.
/**
* Helper class used to handle different Now service instances.
*/
@Singleton
class SdkManager @Inject constructor() {
private var nowGraphQLService: NowGraphQLService? = null
/**
* Create the NowGraphQLService once in the lifetime of the application inside the Application class or another manager class
* that will be injected into other classes via dagger/hilt.
* NowGraphQLService should be created after initializing the NowSDK
*/
suspend fun getNowGraphQLService(): NowGraphQLService? {
if (nowGraphQLService != null) return nowGraphQLService
return NowDataSDK.makeGraphQLService(URL("https://instance-name.service-now.com")).getOrThrow()
.also { this.nowGraphQLService = it }
}
}suspend fun loadList() = withContext(Dispatchers.IO) {
val kbArticlesQuery = """
{
GlideRecord_Query {
kb_knowledge(queryConditions: "active=true^ORDERBYpublishedDESC"
pagination:{ limit: 10, offset: 0 }) {
_results {
sys_id { value },
number { displayValue },
short_description { displayValue },
author { displayValue }
published { displayValue }
}
}
}
}
"""
val graphQLService = sdkManager.getNowGraphQLService()
//graphQLService?.graphQLRequest(kbArticlesQuery)?.execute() can also be used
graphQLService?.graphQLRequest(kbArticlesQuery)?.enqueue(
{ response ->
response.body?.let {
val resultString = String(it)
}
}, { nowDataError ->
//handle error
})
}Verwenden von NowTableService zur Interaktion mit ServiceNow -Tabellen
Die NowTableService -Klasse stellt Methoden zum Ausführen von CRUD-Vorgängen für die Datensätze in Tabellen bereit, die sich in Ihrer Instanz ServiceNow befinden. Über diese Schnittstelle können Sie direkt auf alle Datensätze in einer beliebigen Tabelle ServiceNow zugreifen, für die der angemeldete Benutzer berechtigt ist. NowTableService unterstützt Dot-Walking für Referenzfelder. Wenn eine Tabelle beispielsweise einen Verweis auf die Benutzertabelle enthält, gibt der Dot-Walking-Wert user.name den Namen des Benutzers zurück.
Bei der Rückgabe der angeforderten Daten werden alle zutreffenden Zugriffskontrolllisten (ACLs) auf die Daten angewendet, was zu weniger Ergebnissen als erwartet oder zu Autorisierungsfehlern führen kann, wenn der authentifizierte Benutzer keine Zugriffsrechte für die angegebene Tabelle hat.
/**
* Helper class used to handle different Now service instances. It has an application scope or is Singleton
*/
@Singleton
class SdkManager @Inject constructor() {
private var nowTableService: NowTableService? = null
/**
* Create the NowTableService once in the lifetime of the application inside the Application class or another manager class
* that will be injected into other classes via dagger/hilt.
* NowTableService should be created after initializing the NowSDK
*/
suspend fun getNowTableService(): NowTableService? {
if (nowTableService != null) return nowTableService
return NowDataSDK.makeTableService(URL("https://instance-name.service-now.com")).getOrThrow()
.also { this.nowTableService = it }
}
}
suspend fun loadCases() = withContext(Dispatchers.IO) {
val tableService = sdkManager.getNowTableService()
//configure what data to pass back
val fetchConfiguration = FetchConfiguration(Filter("active=true"), 10)
val response = runCatching {
tableService?.records(
"sn_customerservice_case",
fetchConfiguration
)?.execute()
}
if (response.isSuccess) {
val resultString = response.getOrNull()?.body?.let { String(it) }
} else {
//handle unsuccessful result
}
}Weitere Codebeispiele mit den verfügbaren NowTableService- Methoden finden Sie in der NowTableService- API-Dokumentation.