Interaja com dados de tabela em um ServiceNow instância
. Mobile SDK permite que você interaja com dados em tabelas que residem no ServiceNow instância. Você pode interagir com esses dados por meio do ServiceNow REST Tabela API usando NowTableService() API que chama diretamente a interface REST ou por meio do NowGraphQLService() API que executa uma consulta GraphQL especificada em relação ao REST GraphQL API.
Se você quiser retornar dados de várias tabelas em uma única chamada, será necessário usar NowGraphQLService() API. Se você precisar interagir com outros ServiceNow REST APIs, consulte Interaja com a REST API pública em um ServiceNow instância.
NowGraphQLService para interagir com ServiceNow tabelas
. NowGraphQLService A classe fornece métodos que permitem criar e executar consultas GraphQL em uma tabela especificada em seu ServiceNow instância se o usuário conectado tiver a autorização apropriada. Você pode definir todas as operações CRUD em sua consulta GraphQL.
func execute(_ query: GraphQLQuery, completion: @escaping (Result<Data, NowDataError>) → Void)Por async/await:func execute(_ query: GraphQLQuery) async throws -> DataOu, um Combine fornecedor (que está descontinuado no momento): 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
}
}
}
}
}
"""Usando o NowTableService para interagir com ServiceNow tabelas
. NowTableService A classe fornece métodos para executar operações CRUD nos registros em tabelas que residem no ServiceNow instância. Por meio dessa interface, você pode acessar diretamente qualquer um dos registros em qualquer ServiceNow tabela para a qual o usuário conectado está autorizado. NowTableService oferece suporte à referência com pontos para campos de referência. Por exemplo, se uma tabela contiver uma referência à tabela Usuário, o valor com referência a pontos user.name retorna o nome do usuário.
Ao retornar os dados solicitados, todas as ACLs (Access Control Lists, listas de controle de acesso) aplicáveis são aplicadas aos dados, o que pode resultar em menos resultados do que o esperado ou erros de autorização se o usuário autenticado não tiver direitos de acesso à tabela especificada.
Mais NowTableService os métodos fornecem três implementações para retornar dados de resultados. Um que usa async/await, um que chama um manipulador de conclusão com um Resulte um que retorna um Combine fornecedor, que está descontinuado no momento.
Por exemplo, Todos CreateRecord() os métodos inserem um registro construído em uma tabela especificada, no entanto, o.
o método chama um manipulador de conclusão com um Resultenumeração (o. .sucesso o caso contém os resultados como seu valor associado).
O
NowTableService - createRecord(com campos: [Fieldname: FieldValue], em tablename: Cadeia de caracteres, writeOptions: FieldWriteOptions? Configuração: FieldReadConfiguration? lançamentos assíncronoso método executa uma função assíncrona/await. .
O método retorna um fornecedor combinado, mas está descontinuado no momento.
Além disso, NowTableService Fornece duas implementações diferentes de métodos CRUD, uma que retorna dados brutos e outra que retorna modelos codificáveis. Por exemplo, ambos atualizar() e. UpdateRecord() os métodos atualizam um registro especificado em uma tabela especificada, mas atualizar() Os métodos retornam um modelo codificável e UpdateRecord() os métodos retornam dados brutos. Em alguns casos, métodos codificáveis podem ser preferíveis, já que uma estrutura codificável fortemente digitada fornece mais flexibilidade do que uma coleção de campos de dados brutos.
// 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)")
}
}Para obter exemplos de código adicionais usando o disponível NowTableService métodos, consulte Classe NowTableService - iOS Documentação da API.