Récupérer les pièces jointes et les métadonnées de pièce jointe

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 2 minutes de lecture
  • L’API NowAttachmentService vous permet d’effectuer des opérations CRUD sur les pièces jointes et de récupérer les métadonnées de pièce jointe à partir de votre ServiceNow instance.

    Remarque :
    L’API NowAttachment fonctionne pour les utilisateurs invités dans le système de base ServiceNow .
    À l’aide de cette API, vous pouvez :
    • Chargez les pièces jointes dans votre ServiceNow instance et associez-les à un enregistrement spécifique.
    • Téléchargez une ou plusieurs pièces jointes.
    • Supprimez les pièces jointes.
    • Validez une pièce jointe en comparant le hachage calculé de la pièce jointe au hachage attendu.
    • Télécharger les métadonnées de pièce jointe. Ces métadonnées sont générées par votre ServiceNow instance lorsqu’une pièce jointe est chargée.

    Pour plus d’informations sur l’utilisation des pièces jointes, consultez API des pièces jointes.

    Les éléments suivants montrent comment instancier NowAttachmentService :
    /**
     * 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 }
        }
    }

    L’article suivant montre comment obtenir un objet Call qui récupère les métadonnées d’une pièce jointe particulière. Cela crée un objet exécutable capable d’exécuter la requête spécifiée et de renvoyer Response<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")
        }
    }

    Les paragraphes suivants montrent comment obtenir un objet d’appel qui récupère les métadonnées de plusieurs pièces jointes. Cela crée un objet exécutable capable d’exécuter la requête spécifiée et de renvoyer la réponse < List<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")
        }
    }

    Pagination des métadonnées des pièces jointes

    Vous pouvez utiliser les méthodes NowAttachmentService pour télécharger les métadonnées de pièce jointe d’une ou de plusieurs pièces jointes. Lors du téléchargement de métadonnées à partir de plusieurs pièces jointes, vous pouvez utiliser la NowAttachmentService : attachmentMetadataPaginator(filter : Filter ? = null, limit : Int ? = null) méthode, qui renvoie un objet Paginator qui vous permet d’itérer facilement sur la quantité potentiellement importante de données renvoyées.

    Vous pouvez ensuite parcourir les métadonnées renvoyées à l’aide des méthodes Paginator et recevoir la réponse dans le rappel observe().
     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()
      }
    }
    L’objet Paginator renvoyé fournit les méthodes suivantes qui vous permettent de parcourir les enregistrements renvoyés. Vous devez d’abord appeler la fonction observe() pour définir le rappel du Paginator.
    • premier()
    • hasNext()
    • hasPrécédent
    • Isbusy
    • last()
    • next()
    • observe()
    • précédent()
    • reset()
    Remarque :
    Certaines méthodes Paginator peuvent générer une exception, par exemple lorsqu’il n’y a plus de pages à extraire.