Interagieren Sie mit Tabellendaten in einer Instanz ServiceNow .

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 4 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 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.

    NowGraphQLService unterstützt das Abrufen von Ergebnissen für eine Abfrage durch Rückgabe eines Abschluss-Handlers:
    func execute(_ query: GraphQLQuery, completion: @escaping (Result<Data, NowDataError>) → Void)
    Durch async/wait:
    func execute(_ query: GraphQLQuery) async throws -> Data
    Oder ein (derzeit veralteter ) Herausgeber (derzeit veraltet) ist:
    func publisher(for query: GraphQlQuery) → AnyPublisher<Data, NowDataError>
    
    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.
    // 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
        }
      }
    }
    In diesem Beispiel wird gezeigt, wie eine asynchrone Funktion erstellt wird, die die zuletzt veröffentlichten KB-Artikel abruft und veröffentlicht.
    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

    NowTableService - createRecord(mit Feldern: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions, Konfiguration: FieldReadConfiguration, Abschluss: @escaping (Ergebnis<Data, NowDataError> )

    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ürfe

    Die Methode führt eine asynchrone Wartefunktion aus. Während

    NowTableService – createRecord(mit Feldern: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions? = nil, Konfiguration: FieldReadConfiguration? = nil)

    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.

    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.
    // 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 .