Rufen Sie Anhänge und Anhangsmetadaten ab

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 2 Minuten Lesedauer
  • Mit der NowAttachmentService- API können Sie CRUD-Vorgänge für Anhänge ausführen und Anhangmetadaten aus Ihrer ServiceNow -Instanz 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.
    • Validieren Sie einen Anhang, indem Sie den berechneten Hash des Anhangs mit dem erwarteten Hash vergleichen.
    • Laden Sie die Anhangsmetadaten herunter. Diese Metadaten werden von Ihrer ServiceNow -Instanz generiert, wenn ein Anhang hochgeladen wird.

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

    Im Folgenden wird gezeigt, wie NowAttachmentService instanziiert wird:
    /**
     * 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 Call -Objekt erhalten, das Metadaten für einen bestimmten Anhang abruft. Es wird ein ausführbares Objekt erstellt, das die angegebene Anforderung ausführen und 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 erhalten, das Metadaten für mehrere Anhänge abruft. Erstellt ein ausführbares Objekt, das die angegebene Anforderung ausführen und Response< Listzurü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 die potenziell große Datenmenge, die zurückgegeben wird, einfach durchlaufen können.

    Sie können dann die zurückgegebenen Metadaten mit Paginator -Methoden durchlaufen und die Antwort im Observer-Rückruf erhalten.
     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 Funktionbeobachtung () aufrufen, um den Rückruf des Paginators festzulegen.
    • erste ()
    • hasNext()
    • hasPrevious
    • ist Beschäftigt
    • letzte(r)
    • next()
    • beobachten ()
    • previous()
    • reset()
    Hinweis:
    Einige Paginator- Methoden lösen möglicherweise eine Ausnahme aus, z. B. wenn keine weiteren Seiten abzurufen sind.