Interagieren Sie mit Tabellendaten in einer Instanz ServiceNow .
Mobile SDK ermöglicht Ihnen die Interaktion mit Daten in Tabellen, die sich in Ihrer Instanz von ServiceNow 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 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.
func execute(_ query: GraphQLQuery, completion: @escaping (Result<Data, NowDataError>) → Void)Durch async/wait:func execute(_ query: GraphQLQuery) async throws -> DataOder ein (derzeit veralteter ) Herausgeber (derzeit veraltet) ist: func publisher(for query: GraphQlQuery) → AnyPublisher<Data, NowDataError>
// Import the NowData framework
import NowData
// Initialize a NowGraphQLService
// The makeGraphQLService completion handler returns a result that wraps
// the NowGraphQLService upon success or error.
private func initializeGraphQLService(instanceUrl: URL) {
makeGraphQLService(instanceUrl: instanceUrl) { [weak self] result in
switch result {
case .success(let service):
self?.graphQLService = service
case .failure(let error):
debugPrint("Creating GraphQL service failed with error: \(error.localizedDescription)")
self?.graphQLService = nil
}
}
}private func fetchArticles() async throws -> [Article] {
guard let graphQLService = graphQLService else {
throw ArticleListError.invalidGraphQLService
}
do {
let data = try await graphQLService.execute(GraphQLQuery(query: recentlyPublishedQuery))
let articles = try dataToArticleList(data)
} catch let error as NowDataError {
throw ArticleListError.fetchError(error)
} catch {
throw error
}
}
private let recentlyPublishedQuery =
"""
{
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
}
}
}
}
}
"""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.
Die meisten NowTableService- Methoden bieten drei Implementierungen für die Rückgabe von Ergebnisdaten. Eine davon verwendet async/wait, eine andere ruft einen Abschlusshandler mit der Aufzählung Result auf, und eine andere gibt einen derzeit veralteten Kombinieren- Herausgeber zurück.
Beispielsweise fügen alle createRecord()- Methoden einen erstellten Datensatz in eine angegebene Tabelle ein, jedoch die
Die Methode ruft einen Abschluss-Handler mit einer Aufzählung Result auf (der .success- Fall enthält die Ergebnisse als zugehörigen Wert).
Die zugehörigen Listen namens
NowTableService – createRecord(mit Feldern: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions? = nil, Configuration: FieldReadConfiguration? = nil) asynchrone WürfeDie Methode führt eine asynchrone Wartefunktion aus. Während
Die Methode gibt einen Herausgeber vom Typ „Kombinieren“ zurück, ist jedoch derzeit veraltet.
Darüber hinaus bietet NowTableService zwei verschiedene Implementierungen von CRUD-Methoden – eine, die Rohdaten zurückgibt, und eine, die codierbare Modelle zurückgibt. Beispielsweise aktualisieren die Methoden update () und updateRecord() einen angegebenen Datensatz in einer angegebenen Tabelle, die update()- Methoden geben jedoch ein codierbares Modell zurück, und die updateRecord()- Methoden geben Rohdaten zurück. In einigen Fällen sind codierbare Methoden möglicherweise zu bevorzugen, da eine stark typisierte codierbare Struktur mehr Flexibilität bietet als eine Sammlung von Rohdatenfeldern.
// Import the NowData framework
import NowData
// Initialize a NowTableService
// The makeTableService completion handler returns a result that wraps
// the NowTableService upon success or error.
makeTableService(instanceUrl: instanceUrl) { [weak self] result in
guard let self = self else { return }
switch result {
case .success(let tableService):
debugPrint("Successfully created a table service \(tableService)")
self.tableService = tableService
case .failure(let error):
debugPrint("Creating table service failed with error: \(error.localizedDescription)")
}
}Zusätzliche Codebeispiele für die Verwendung der verfügbaren NowTableService- Methoden finden Sie in der API-Dokumentation NowTableService-Klasse – iOS .