Rufen Sie Anhänge und Anhangsmetadaten ab

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 2 Minuten Lesedauer
  • Mit der NowAttachmentService -API können Sie CRUD-Vorgänge für Anhänge ausführen und Anhangmetadaten aus Ihrer -Instanz ServiceNow abrufen.

    Hinweis:
    Die NowAttachment -API funktioniert für Gastbenutzer im Basissystem ServiceNow.
    Mit dieser API können Sie:
    • Laden Sie Anhänge in Ihre Instanz ServiceNow hoch und ordnen Sie sie einem bestimmten Datensatz zu.
    • Laden Sie einen oder mehrere Anhänge herunter.
    • Löschen Sie Anhänge.
    • Validiert einen Anhang, indem der berechnete Hash des Anhangs mit dem erwarteten Hash verglichen wird.
    • Laden Sie die Anhangmetadaten herunter. Diese Metadaten werden von Ihrer Instanz ServiceNow generiert, wenn ein Anhang hochgeladen wird.

    Weitere Informationen zum Arbeiten mit Anhängen finden Sie unter Anhang-API.

    Im Folgenden wird gezeigt, wie Sie NowAttachmentService instanziieren:
    /**
     * Helper class used to handle different Now service instances. 
     * It has an application scope or is a Singleton.
     */
    @Singleton
    class SdkManager @Inject constructor() {
    
    
        private var nowAttachmentService: NowAttachmentService? = null
    
        /**
         * Create the NowAttachmentService 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.
         * NowAttachmentService should be created after initializing the NowSDK
         */
        suspend fun getNowAttachmentService(): NowAttachmentService? {
            if (nowAttachmentService != null) return nowAttachmentService
    
            return NowDataSDK.makeAttachmentService(URL("https://instance-name.service-now.com"))
                .getOrThrow()
                .also { this.nowAttachmentService = it }
        }
    }

    Im Folgenden wird gezeigt, wie Sie ein Aufrufobjekt abrufen, das Metadaten für bestimmte Anhänge abruft. Erstellt ein ausführbares Objekt, das die angegebene Anforderung ausführen und die Antwortzurückgeben kann<NowAttachmentMetadata> .

    suspend fun fetchMetadata(sysId: String) {
        val response = runCatching {
            sdkManager.getNowAttachmentService()?.attachmentMetadata(sysId)?.execute()
        }
    
        if (response.isSuccess) {
            val nowAttachmentMetadata = response.getOrNull()?.body
        } else {
            Log.e("NowSDK", "result not successful")
        }
    }

    Im Folgenden wird gezeigt, wie Sie ein Call -Objekt abrufen, das Metadaten für mehrere Anhänge abruft. Erstellt ein ausführbares Objekt, das die angegebene Anforderung ausführen und eine Antwort<-Listezurückgeben kann<NowAttachmentMetadata> > .

    suspend fun fetchMultipleMetadata() {
        val filterQuery = "content_type=text/plain"
        val limit = 5
    
        val response = runCatching {
            sdkManager.getNowAttachmentService()?.attachmentMetadata(Filter(filterQuery), limit)?.execute()
        }
    
        if (response.isSuccess) {
            val attachmentMetadataList = response.getOrNull()?.body
        } else {
            Log.e("NowSDK", "result not successful")
        }
    }

    Paginierung der Anhangmetadaten

    Sie können die NowAttachmentService -Methoden verwenden, um Anhangmetadaten für einen oder mehrere Anhänge herunterzuladen. Wenn Sie Metadaten aus mehreren Anhängen herunterladen, möchten Sie möglicherweise die Methode NowAttachmentService - AttachmentMetadataPaginator(filter: Filter? = null, limit: Int? = null) verwenden, die ein Paginator-Objekt zurückgibt, mit dem Sie auf einfache Weise über die potenziell große Menge der zurückgegebenen Daten iterieren können.

    Anschließend können Sie die zurückgegebenen Metadaten mit Paginator-Methoden durchlaufen und erhalten die Antwort im Rückruf von „observ()“.
     suspend fun createAttachmentMetadataPaginator() {
      val filterQuery: String = "content_type=text/plain"
      val filter = filterQuery.let(::Filter)
      val limit = 10
    
      val paginator = sdkmanager.getNowAttachmentService()?.attachmentMetadataPaginator(filter, limit)
        ?.observe(object : PaginatorCallBack<NowAttachmentMetadata> {
          override fun onSuccess(response: Response<List<NowAttachmentMetadata>>) {
            // Handle response
          }
    
          override fun onFailure(e: NowDataError) {
            // Handle error
          }
    
        })
        ?: throw Exception("Response is null")
    
      // Use paginator operators to navigate. Example
      while (paginator.hasNext() && !paginator.isBusy()) {
        paginator.next()
      }
    }
    Das zurückgegebene Paginator-Objekt stellt die folgenden Methoden bereit, mit denen Sie durch die zurückgegebenen Datensätze blättern können. Sie müssen zuerst die Funktion observ() aufrufen, um den Rückruf des Paginators festzulegen.
    • zuerst ()
    • hasNext()
    • hatVorherige
    • isBusy
    • letzte ()
    • nächste ()
    • Beobachten ()
    • vorherige ()
    • reset()
    Hinweis:
    Einige Paginatormethoden lösen möglicherweise eine Ausnahme aus, z. B. wenn keine Seiten mehr abzurufen sind.