Crear funciones globales

Las funciones globales se utilizan para ajustar la lógica de negocio en los servicios web para que se puedan utilizar fácilmente en otras ubicaciones.

OCMCreateRepositoryCollectionFunction

Para crear la función global Create Repository Collection de OCM que se utilizará para acceder al servicio web OCMCreateRepositoryCollectionService:

  1. Seleccione Configuración común y, a continuación, Funciones globales en el menú de navegación izquierdo.
  2. En la página Funciones globales, haga clic en el icono Agregar una función global.
  3. En la página Crear función global, rellene los siguientes campos:

    1. En el campo Nombre de función, especifique el nombre de la función como OCMCreateRepositoryCollectionFunction.
    2. Seleccione Cadena en el menú desplegable Devoluciones.
    3. En el campo Descripción, introduzca el texto "Crea un nuevo OCMCollectionName en el OCMRepositoryId especificado y devuelve el ID de recopilación recién creado".
    4. En la sección Parámetros, haga clic en el icono Agregar parámetro y agregue los siguientes campos:
      Nombre Tipo
      OCMRepositoryId Cadena
      OCMCollectionName Cadena
    5. En el campo Editar script, pegue el siguiente script:
      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. Haga clic en Guardar y cerrar.

OCMGetDocumentsByFolderIdFunction

Para crear la función global Obtener documentos por ID de carpeta de OCM en una nueva página Crear función global que se utilizará para acceder al servicio web OCMGetDocumentsByFolderIdService, complete los siguientes campos:

Nota:

Esta función global solo es necesaria si el objeto de negocio de Oracle Sales y Service tiene la opción de resolución y se ha configurado con la integración de documentos de OCM. Consulte Obtenga información sobre cómo ampliar los objetos de negocio de Oracle Sales y Service con la colaboración en documentos para obtener más información sobre la integración de documentos.


  1. En el campo Nombre de función, especifique el nombre de la función como OCMGetDocumentsByFolderIdFunction.
  2. Seleccione Lista en el menú desplegable Devoluciones.
  3. En el campo Descripción, introduzca el texto "Devuelve una lista de ID de documento de OCM basados en el OCMFolderId especificado (también incluye carpetas secundarias).".
  4. En la sección Parámetros, haga clic en el icono Agregar parámetro.

    En el campo Nombre, especifique el nombre como OCMFolderId y seleccione Cadena en el menú desplegable Tipo.

  5. En el campo Editar script, pegue el siguiente script:
    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. Haga clic en Guardar y cerrar.

OCMCopyDocumentsToRepositoryCollectionFunction

Para crear la función global Copiar documentos en recopilación de repositorio de OCM en una nueva página Crear función global que se utilizará para acceder al servicio web OCMBulkOperationsService, complete los siguientes campos:

Nota:

Esta función global solo es necesaria si el objeto de negocio de Oracle Sales y Service tiene la opción de resolución y se ha configurado con la integración de documentos de OCM. Consulte Obtenga información sobre cómo ampliar los objetos de negocio de Oracle Sales y Service con la colaboración en documentos para obtener más información sobre la integración de documentos.


  1. En el campo Nombre de función, especifique el nombre de la función como OCMCopyDocumentsToRepositoryCollectionFunction.
  2. Seleccione Booleano en el menú desplegable Devoluciones.
  3. En el campo Descripción, introduzca el texto "Copia la lista especificada de OCM de OCMDocumentIds en el OCMCollectionId especificado en el OCMRepositoryId especificado".
  4. En la sección Parámetros, haga clic en el icono Agregar parámetro y agregue los siguientes campos:
    Nombre Tipo
    OCMRepositoryId Cadena
    OCMCollectionId Cadena
    OCMDocumentIds Lista
  5. En el campo Editar script, pegue el siguiente script:
    // 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 
    }

    Nota:

    El valor Type del script anterior debe coincidir con el nombre del tipo de activo que creó anteriormente.
  6. Haga clic en Guardar y cerrar.

OCMIsRepositoryCollectionSharedAsContributorFunction

Para crear la función global OCM Is Repository Collection Shared As Contributor en una nueva página Create Global Function que se utilizará para acceder al servicio web OCMRepositoryCollectionPermissionsService, complete los siguientes campos:



  1. En el campo Nombre de función, especifique el nombre de la función como OCMIsRepositoryCollectionSharedAsContributorFunction.
  2. Seleccione Booleano en el menú desplegable Devoluciones.
  3. En el campo Descripción, introduzca el texto "Devuelve true si el OCMUserName especificado se ha compartido con el OCMCollectionId especificado en el OCMRespositoryId especificado con al menos un rol de contribuyente".
  4. En la sección Parámetros, haga clic en el icono Agregar parámetro y agregue los siguientes campos:
    Nombre Tipo
    OCMRepositoryId Cadena
    OCMCollectionId Cadena
    OCMUserName Cadena
  5. En el campo Editar script, pegue el siguiente script:
    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. Haga clic en Guardar y cerrar.

OCMShareCollectionFunction

Para crear la función global OCM Share Collection en una nueva página Create Global Function que se utilizará para acceder al servicio web OCMPermissionOperationsService, complete los siguientes campos:



  1. En el campo Nombre de función, especifique el nombre de la función como OCMShareCollectionFunction.
  2. Seleccione Booleano en el menú desplegable Devoluciones.
  3. En el campo Descripción, introduzca el texto "Comparte el OCMCollectionId especificado en OCM con los valores OCMUserName y OCMRole especificados".
  4. En la sección Parámetros, haga clic en el icono Agregar parámetro y agregue los siguientes campos:
    Nombre Tipo
    OCMCollectionId Cadena
    OCMUserName Cadena
    OCMRole Cadena
  5. En el campo Editar script, pegue el siguiente script:
    // 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. Haga clic en Guardar y cerrar.