Interagieren Sie mit Tabellendaten in einer Instanz ServiceNow .

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 3 Minuten Lesedauer
  • Mobile SDK ermöglicht Ihnen die Interaktion mit Daten in Tabellen, die sich in Ihrer Instanz ServiceNow von befinden. Sie können mit diesen Daten über die REST- Tabellen -API ServiceNow interagieren, indem Sie die NowTableService()- API verwenden, die die REST-Schnittstelle direkt 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.

    NowGraphQLService für die Interaktion mit Tabellen ServiceNow verwenden

    Die Klasse NowGraphQLService stellt Methoden bereit, mit denen Sie GraphQL-Abfragen in einer angegebenen Tabelle in Ihrer Instanz ServiceNow erstellen und ausführen können, wenn der angemeldete Benutzer über die entsprechende Berechtigung verfügt. Sie können alle CRUD-Vorgänge in Ihrer GraphQL-Abfrage definieren.

    Das folgende Beispiel zeigt, wie Sie das NowData-Framework importieren und dann ein NowGraphQLService-Objekt initialisieren, das Sie dann für die Interaktion mit Tabellen in Ihrer Instanz ServiceNow verwenden können.
    /**
     * 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 }
        }
    }
    In diesem Beispiel wird gezeigt, wie veröffentlichte KB-Artikel mithilfe einer GraphQL-Abfrage abgerufen werden.
    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
            })
    }

    NowTableService für die Interaktion mit Tabellen ServiceNow verwenden

    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 die Datensätze in der Tabelle ServiceNow zugreifen, für die der angemeldete Benutzer berechtigt ist. NowTableService unterstützt Dot-Walking für Referenzfelder. Wenn beispielsweise eine Tabelle 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 Zugriffssteuerungslisten (ACLs) auf die Daten angewendet. Dies kann zu weniger Ergebnissen als erwartet oder zu Autorisierungsfehlern führen, wenn der authentifizierte Benutzer keine Zugriffsrechte für die angegebene Tabelle hat.

    Das folgende Beispiel zeigt, wie Sie das NowData -Framework importieren und dann ein NowTableService-Objekt initialisieren, das Sie dann für die Interaktion mit ServiceNow -Instanztabellen verwenden können.
    /**
     * 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
        }
    }

    Zusätzliche Codebeispiele für die Verwendung der verfügbaren NowTableService -Methoden finden Sie in der Dokumentation zur NowTableService -API.