Créer des fonctions globales

Les fonctions globales sont utilisées pour encapsuler la logique métier autour des services Web afin de pouvoir les utiliser facilement dans d'autres emplacements.

OCMCreateRepositoryCollectionFunction

Pour créer la fonction globale de création de collecte de référentiel OCM qui sera utilisée pour accéder au service Web OCMCreateRepositoryCollectionService :

  1. Sélectionnez Configuration commune, puis Fonctions globales dans le menu de navigation de gauche.
  2. Sur la page Fonctions globales, cliquez sur l'icône Ajouter une fonction globale.
  3. Dans la page Create Global Function, renseignez les champs suivants :

    1. Dans le champ Nom de fonction, indiquez le nom de la fonction en tant que OCMCreateRepositoryCollectionFunction.
    2. Sélectionnez Chaîne dans le menu déroulant Retours.
    3. Dans le champ Description, entrez le texte "Creates a new OCMCollectionName within the specified OCMRepositoryId and return the new created Collection Id".
    4. Dans la section Paramètres, cliquez sur l'icône Ajouter un paramètre et ajoutez les champs suivants :
      Nom Type
      OCMRepositoryId Chaîne
      OCMCollectionName Chaîne
    5. Dans le champ Edit Script, collez le script suivant :
      println("Create OCM Collection " + OCMCollectionName + " within the Asset Repository Id: " + OCMRepositoryId);
      def params = [:]
      params.name = OCMCollectionName
      def OCMCollection = [:]
      try {
        def OCMCreateRepositoryCollectionService = adf.webServices.OCMCreateRepositoryCollectionService
        OCMCreateRepositoryCollectionService.requestHTTPHeaders = ['X-Requested-With': 'XMLHttpRequest']
        OCMCollection = OCMCreateRepositoryCollectionService.POST(OCMRepositoryId, params)
        println("OCM Collection Created: " + OCMCollection)
        return OCMCollection.id
      } catch (Exception e) {
        println("OCM Create Respository(" + OCMRepositoryId + ") Collection(" + OCMCollectionName + ") Error: " + e)
      }
    6. Cliquez sur Enregistrer et fermer.

OCMGetDocumentsByFolderIdFunction

Pour créer la fonction globale Obtenir les documents par ID de dossier OCM dans une nouvelle page Créer une fonction globale qui sera utilisée pour accéder au service Web OCMGetDocumentsByFolderIdService, renseignez les champs suivants :

Remarque :

Cette fonction globale n'est requise que si l'objet métier Oracle Sales and Service a l'option de résolution et a été configuré avec l'intégration de document OCM. Pour plus d'informations sur l'intégration de documents, reportez-vous à En savoir plus sur l'extension des objets métier Oracle Sales and Service avec la collaboration sur les documents.


  1. Dans le champ Nom de fonction, indiquez le nom de la fonction en tant que OCMGetDocumentsByFolderIdFunction.
  2. Sélectionnez Liste dans le menu déroulant Retours.
  3. Dans le champ Description, entrez le texte "Renvoie une liste des ID de document OCM en fonction de la valeur OCMFolderId spécifiée (y compris les dossiers enfant).".
  4. Dans la section Paramètres, cliquez sur l'icône Ajouter un paramètre.

    Dans le champ Nom, indiquez le nom OCMFolderId et sélectionnez String dans le menu déroulant Type.

  5. Dans le champ Edit Script, collez le script suivant :
    def response = [:]
    def items = []
    try {
      response = adf.webServices.OCMGetDocumentsByFolderIdService.GET(OCMFolderId)
      for(item in response.items){
        items.add(item["id"])
      }
      println("OCM Get Documents By Folder Id " + OCMFolderId + " Result(" + items.size() + "): " + items)
      return items
    } catch (Exception e) {
      println("Get OCM Documents By Folder Id Error: " + e)
    }
    
  6. Cliquez sur Enregistrer et fermer.

OCMCopyDocumentsToRepositoryCollectionFunction

Pour créer la fonction globale Copier des documents dans une collection de référentiel OCM dans une nouvelle page Créer une fonction globale qui sera utilisée pour accéder au service Web OCMBulkOperationsService, renseignez les champs suivants :

Remarque :

Cette fonction globale n'est requise que si l'objet métier Oracle Sales and Service a l'option de résolution et a été configuré avec l'intégration de document OCM. Pour plus d'informations sur l'intégration de documents, reportez-vous à En savoir plus sur l'extension des objets métier Oracle Sales and Service avec la collaboration sur les documents.


  1. Dans le champ Nom de fonction, indiquez le nom de la fonction en tant que OCMCopyDocumentsToRepositoryCollectionFunction.
  2. Sélectionnez Booléen dans le menu déroulant Retours.
  3. Dans le champ Description, entrez le texte "Copie la liste spécifiée OCM de OCMDocumentIds dans le fichier OCMCollectionId indiqué dans le fichier OCMRepositoryId indiqué".
  4. Dans la section Paramètres, cliquez sur l'icône Ajouter un paramètre et ajoutez les champs suivants :
    Nom Type
    OCMRepositoryId Chaîne
    OCMCollectionId Chaîne
    OCMDocumentIds Liste
  5. Dans le champ Edit Script, collez le script suivant :
    // Create the structure required for the list of documents that will be used in the payload below
    def documents = []
    for(OCMDocumentId in OCMDocumentIds) {
      def document = 
      [
        externalId: OCMDocumentId,
        // NOTE: The type value must match the name of the Asset Type that you created during the installation
        type: "Service-Request-Asset",
        collections:
        [
          data: [OCMCollectionId]
        ]
      ]
      
      documents.add(document)
    }
    
    // Create the payload required to make the addToRepository bulk operation call
    def payload =
    [
      operations:
      [
        addToRepository:
        [
          connectorId: "Documents",
          repositoryId: OCMRepositoryId,
          externalItems: documents
        ]
      ]
    ]
    
    try {
      def OCMBulkOperationsService = adf.webServices.OCMBulkOperationsService  
      OCMBulkOperationsService.requestHTTPHeaders = ['X-Requested-With': 'XMLHttpRequest']
      OCMBulkOperationsService.POST(payload)
      println("OCM Documents Copied To Repository: " + OCMRepositoryId + "(" + OCMCollectionId + "): (" + OCMDocumentIds + ")")
      return true
    } catch (Exception e) {
      println("Copy OCM Documents To Repository Error: " + e)
      return false 
    }

    Remarque :

    La valeur Type du script ci-dessus doit correspondre au nom du type de ressource que vous avez créé précédemment.
  6. Cliquez sur Enregistrer et fermer.

OCMIsRepositoryCollectionSharedAsContributorFunction

Pour créer la fonction globale OCM Is Repository Collection Shared As Contributor dans une nouvelle page Créer une fonction globale qui sera utilisée pour accéder au service Web OCMRepositoryCollectionPermissionsService, renseignez les champs suivants :



  1. Dans le champ Nom de fonction, indiquez le nom de la fonction en tant que OCMIsRepositoryCollectionSharedAsContributorFunction.
  2. Sélectionnez Booléen dans le menu déroulant Retours.
  3. Dans le champ Description, entrez le texte "Renvoie la valeur True si l'élément OCMUserName indiqué a été partagé avec l'élément OCMCollectionId indiqué dans l'élément OCMRespositoryId indiqué avec au moins un rôle Contributeur".
  4. Dans la section Paramètres, cliquez sur l'icône Ajouter un paramètre et ajoutez les champs suivants :
    Nom Type
    OCMRepositoryId Chaîne
    OCMCollectionId Chaîne
    OCMUserName Chaîne
  5. Dans le champ Edit Script, collez le script suivant :
    def response = [:]
    try {
      response = adf.webServices.OCMRepositoryCollectionPermissionsService.GET(OCMRepositoryId, OCMCollectionId)
      def responseItems = [:]
      responseItems = response.items
      for (item in responseItems) {
        // Ignore case as these could be different between the two security systems even though it is the same user
        if ((item['id'] as String).toLowerCase() == OCMUserName.toLowerCase()) {
          // If found make sure the user also has at least the contributor role
          if (item['roleName'] == 'contributor' || item['roleName'] == 'manager') {
            println("OCM User(" + OCMUserName + ") was found with enough role permissions to the repository collection: " + OCMRepositoryId + "(" + OCMCollectionId + ")")
            return true
          } else {
            println("OCM User(" + OCMUserName + ") was found but without enough role permissions to the repository collection: " + OCMRepositoryId + "(" + OCMCollectionId + ")")
            return false
          }
        }
      }
      println("OCM User(" + OCMUserName + ") does not have permissions to the repository: " + OCMRepositoryId)
      return false
    } catch (Exception e) {
      println("OCM Is Repository Collection Shared As Contributor Error: " + e)
      return false
    }
  6. Cliquez sur Enregistrer et fermer.

OCMShareCollectionFunction

Pour créer la fonction globale OCM Share Collection dans une nouvelle page Créer une fonction globale qui sera utilisée pour accéder au service Web OCMPermissionOperationsService, renseignez les champs suivants :



  1. Dans le champ Nom de fonction, indiquez le nom de la fonction en tant que OCMShareCollectionFunction.
  2. Sélectionnez Booléen dans le menu déroulant Retours.
  3. Dans le champ Description, entrez le texte "Shares the specified OCMCollectionId in OCM with the OCMUserName and OCMRole specified".
  4. Dans la section Paramètres, cliquez sur l'icône Ajouter un paramètre et ajoutez les champs suivants :
    Nom Type
    OCMCollectionId Chaîne
    OCMUserName Chaîne
    OCMRole Chaîne
  5. Dans le champ Edit Script, collez le script suivant :
    // Create the payload required to make the permissions operation call
    def payload =
    [
      operations:
      [
        share:
        [
          resource:
          [
            id :OCMCollectionId,
            type :"collection",
          ],
          roles:
          [[
            name :OCMRole,
            users:
            [[
              name :OCMUserName,
              type :"user",
            ]],
          ]],
        ],
      ]
    ]
    
    def response = [:]
    try {
      def OCMPermissionOperationsService = adf.webServices.OCMPermissionOperationsService
      OCMPermissionOperationsService.requestHTTPHeaders = ['X-Requested-With': 'XMLHttpRequest', 'content-type': 'application/json']
      response = OCMPermissionOperationsService.POST(payload)
      
      // Check the response to make sure we do not have a failure
      def hasFailedRoles = response?.operations?.share?.failedRoles
      if (hasFailedRoles == null) {
        println("OCM Collection Shared: " + OCMCollectionId + "(" + OCMUserName + ":" + OCMRole + ")")
        return true
      } else {
        println("Share OCM Collection Failed: " + response)
        return false
      }
    } catch (Exception e) {
      println("Share OCM Collection Error: " + e)
      return false 
    }
    
  6. Cliquez sur Enregistrer et fermer.