Eventos de AEM Assets para la integración con PIM
Aprenda a integrar AEM Assets AEM con un sistema de terceros, como un sistema de administración de información de producto (PIM) o de administración de línea de producto (PLM), para actualizar los metadatos de recursos mediante eventos de E/S nativos de la. Al recibir un evento de AEM Assets AEM, los metadatos de los recursos se pueden actualizar en los sistemas de gestión de recursos, PIM o en ambos, según los requisitos comerciales. AEM Sin embargo, en este ejemplo se muestra la actualización de los metadatos de los recursos en el caso de los recursos de.
AEM Para ejecutar el código de actualización de metadatos del recurso fuera de la plataforma sin servidor Adobe I/O Runtime, se utiliza la plataforma sin servidor de.
El flujo de procesamiento de eventos es el siguiente:
- AEM El servicio de creación de recursos de déclencheur un evento Procesamiento de recursos completado cuando se completa la carga de un recurso y se han completado todas las actividades de procesamiento de recursos. Esperar a que se complete el procesamiento garantiza que se haya completado cualquier procesamiento predeterminado, como la extracción de metadatos.
- El evento se enviará al servicio Eventos de Adobe I/O.
- El servicio Eventos de Adobe I/O pasa el evento a Adobe I/O Runtime Action para su procesamiento.
- La acción de Adobe I/O Runtime llama a la API del sistema PIM para recuperar metadatos adicionales, como el SKU, la información del proveedor u otros detalles.
- Los metadatos adicionales recuperados del PIM se actualizan en AEM Assets mediante la API de autor de Assets.
Requisitos previos
Para completar este tutorial, necesita lo siguiente:
-
Entorno de AEM as a Cloud Service AEM con ventilación de eventos habilitada. Además, el proyecto de muestra WKND Sites debe implementarse en él.
-
Acceso a Adobe Developer Console.
-
CLI de Adobe Developer instalado en el equipo local.
Pasos de desarrollo
Los pasos de desarrollo de alto nivel son los siguientes:
- Creación de un proyecto en Adobe Developer Console (ADC)
- Inicializar el proyecto para el desarrollo local
- Configurar el proyecto en ADC
- AEM Configurar el servicio de autor de la para habilitar la comunicación del proyecto de ADC
- Desarrollar una acción de tiempo de ejecución que organice la recuperación y actualización de metadatos
- AEM Cargue un recurso al servicio de creación de recursos y verifique que se hayan actualizado los metadatos.
Para obtener más información sobre los pasos 1-2, consulte el ejemplo de Acción y eventos de Adobe I/O Runtime AEM y, para ver los pasos 3-6, consulte las secciones siguientes.
Configuración del proyecto en Adobe Developer Console (ADC)
Para recibir eventos de AEM Assets y ejecutar la acción de Adobe I/O Runtime creada en el paso anterior, configure el proyecto en ADC.
-
En ADC, vaya al proyecto. Seleccione el área de trabajo
Stage
, donde se implementó la acción de tiempo de ejecución. -
Haga clic en el botón Agregar servicio y seleccione la opción Evento. En el diálogo Agregar eventos, seleccione Experience Cloud > AEM Assets y haga clic en Siguiente. Siga los pasos de configuración adicionales, seleccione la instancia de AEM CS, el evento Procesamiento de recursos completado, el tipo de autenticación de servidor a servidor OAuth y otros detalles.
-
Finalmente, en el paso Cómo recibir eventos, expanda la opción Acción en tiempo de ejecución y seleccione la acción genérica creada en el paso anterior. Haga clic en Guardar eventos configurados.
-
Del mismo modo, haga clic en el botón Agregar servicio y seleccione la opción API. En el modal Add an API, seleccione Experience Cloud > API de AEM as a Cloud Service y haga clic en Siguiente.
-
A continuación, seleccione Servidor a servidor OAuth para el tipo de autenticación y haga clic en Siguiente.
-
AEM A continuación, seleccione el perfil de producto Administradores de la-XXX y haga clic en Guardar la API configurada. Para actualizar el recurso en cuestión, el perfil de producto seleccionado debe estar asociado al entorno de AEM Assets desde el que se produce el evento y tener acceso suficiente para actualizar los recursos allí.
AEM Configurar el servicio de autor de la para habilitar la comunicación del proyecto ADC
AEM AEM Para actualizar los metadatos de los recursos en la desde el proyecto ADC anterior, configure el servicio de autor de la configuración con el ID de cliente del proyecto ADC. El id de cliente se agrega como variable de entorno usando la interfaz de usuario de Cloud Manager de Adobe.
-
Inicie sesión en Adobe Cloud Manager, seleccione la pestaña Programa > Entorno > Puntos suspensivos > Ver detalles > Configuración.
-
A continuación, haga clic en el botón Agregar configuración e introduzca los detalles de la variable como
table 0-row-4 1-row-4 Nombre Value AEM servicio de Tipo ADOBE_PROVIDED_CLIENT_ID <COPY_FROM_ADC_PROJECT_CREDENTIALS> Autor Variable -
Haga clic en Agregar y Guardar la configuración.
Desarrollar acción de tiempo de ejecución
Para recuperar y actualizar los metadatos, comience actualizando el código de acción generic creado automáticamente en la carpeta src/dx-excshell-1/actions/generic
.
Consulte el archivo adjunto WKND-Assets-PIM-Integration.zip para obtener el código completo; a continuación, se resaltan los archivos clave.
-
El archivo
src/dx-excshell-1/actions/generic/mockPIMCommunicator.js
se burla de la llamada API de PIM para recuperar metadatos adicionales, como el SKU y el nombre del proveedor. Este archivo se utiliza con fines de demostración. Una vez que tenga el flujo de extremo a extremo en funcionamiento, reemplace esta función con una llamada a su sistema PIM real para recuperar metadatos del recurso.code language-javascript /** * Mock PIM API to get the product data such as SKU, Supplier, etc. * * In a real-world scenario, this function would call the PIM API to get the product data. * For this example, we are returning mock data. * * @param {string} assetId - The assetId to get the product data. */ module.exports = { async getPIMData(assetId) { if (!assetId) { throw new Error('Invalid assetId'); } // Mock response data for demo purposes const data = { SKUID: 'MockSKU 123', SupplierName: 'mock-supplier', // ... other product data }; return data; }, };
-
AEM El archivo de
src/dx-excshell-1/actions/generic/aemCommunicator.js
actualiza los metadatos de recursos en la mediante la API de autor de Assets.code language-javascript const fetch = require('node-fetch'); ... /** * Get IMS Access Token using Client Credentials Flow * * @param {*} clientId - IMS Client ID from ADC project's OAuth Server-to-Server Integration * @param {*} clientSecret - IMS Client Secret from ADC project's OAuth Server-to-Server Integration * @param {*} scopes - IMS Meta Scopes from ADC project's OAuth Server-to-Server Integration as comma separated strings * @returns {string} - Returns the IMS Access Token */ async function getIMSAccessToken(clientId, clientSecret, scopes) { const adobeIMSV3TokenEndpointURL = 'https://ims-na1.adobelogin.com/ims/token/v3'; const options = { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: `grant_type=client_credentials&client_id=${clientId}&client_secret=${clientSecret}&scope=${scopes}`, }; const response = await fetch(adobeIMSV3TokenEndpointURL, options); const responseJSON = await response.json(); return responseJSON.access_token; } async function updateAEMAssetMetadata(metadataDetails, aemAssetEvent, params) { ... // Transform the metadata details to JSON Patch format, // see https://developer.adobe.com/experience-cloud/experience-manager-apis/api/experimental/assets/author/#operation/patchAssetMetadata const transformedMetadata = Object.keys(metadataDetails).map((key) => ({ op: 'add', path: `wknd-${key.toLowerCase()}`, value: metadataDetails[key], })); ... // Get ADC project's OAuth Server-to-Server Integration credentials const clientId = params.ADC_CECREDENTIALS_CLIENTID; const clientSecret = params.ADC_CECREDENTIALS_CLIENTSECRET; const scopes = params.ADC_CECREDENTIALS_METASCOPES; // Get IMS Access Token using Client Credentials Flow const access_token = await getIMSAccessToken(clientId, clientSecret, scopes); // Call AEM Author service to update the metadata using Assets Author API // See https://developer.adobe.com/experience-cloud/experience-manager-apis/api/experimental/assets/author/ const res = await fetch(`${aemAuthorHost}/adobe/assets/${assetId}/metadata`, { method: 'PATCH', headers: { 'Content-Type': 'application/json-patch+json', 'If-Match': '*', 'X-Adobe-Accept-Experimental': '1', 'X-Api-Key': 'aem-assets-management-api', // temporary value Authorization: `Bearer ${access_token}`, }, body: JSON.stringify(transformedMetadata), }); ... } module.exports = { updateAEMAssetMetadata };
El archivo
.env
almacena los detalles de credenciales de servidor a servidor OAuth del proyecto ADC y se pasan como parámetros a la acción mediante el archivoext.config.yaml
. Consulte Archivos de configuración de App Builder para administrar secretos y parámetros de acción. -
La carpeta
src/dx-excshell-1/actions/model
contieneaemAssetEvent.js
yerrors.js
archivos, que la acción utiliza para analizar el evento recibido y controlar los errores respectivamente. -
El archivo
src/dx-excshell-1/actions/generic/index.js
utiliza los módulos mencionados anteriormente para organizar la recuperación y actualización de metadatos.code language-javascript ... let responseMsg; // handle the challenge probe request, they are sent by I/O to verify the action is valid if (params.challenge) { logger.info('Challenge probe request detected'); responseMsg = JSON.stringify({ challenge: params.challenge }); } else { logger.info('AEM Asset Event request received'); // create AEM Asset Event object from request parameters const aemAssetEvent = new AEMAssetEvent(params); // Call mock PIM API to get the product data such as SKU, Supplier, etc. const mockPIMData = await mockPIMAPI.getPIMData( aemAssetEvent.getAssetName(), ); logger.info('Mock PIM API response', mockPIMData); // Update PIM received data in AEM as Asset metadata const aemUpdateStatus = await updateAEMAssetMetadata( mockPIMData, aemAssetEvent, params, ); logger.info('AEM Asset metadata update status', aemUpdateStatus); if (aemUpdateStatus) { // create response message responseMsg = JSON.stringify({ message: 'AEM Asset Event processed successfully, updated the asset metadata with PIM data.', assetdata: { assetName: aemAssetEvent.getAssetName(), assetPath: aemAssetEvent.getAssetPath(), assetId: aemAssetEvent.getAssetId(), aemHost: aemAssetEvent.getAEMHost(), pimdata: mockPIMData, }, }); } // response object const response = { statusCode: 200, body: responseMsg, }; // Return the response to the caller return response; ... }
Implemente la acción actualizada en Adobe I/O Runtime con el siguiente comando:
$ aio app deploy
Verificación de metadatos y carga de recursos
Para comprobar la integración de AEM Assets y PIM, siga estos pasos:
-
Para ver los metadatos falsos proporcionados por el PIM, como el SKU y el nombre del proveedor, cree un esquema de metadatos en AEM Assets. Consulte Esquema de metadatos que muestre las propiedades de metadatos del SKU y el nombre del proveedor.
-
AEM Cargue un recurso en el servicio de creación de y compruebe la actualización de los metadatos.
Concepto y elementos clave
AEM La sincronización de metadatos de recursos entre los sistemas de administración de recursos y otros sistemas, como PIM, suele ser necesaria en la empresa. AEM Se puede lograr el uso de ventilación por parte de los EASYVENTING.
- AEM AEM El código de recuperación de metadatos del recurso se ejecuta fuera de la, lo que evita la carga en el servicio de creación de recursos, por lo que la arquitectura orientada a eventos se adapta de forma independiente.
- La recién introducida API de autor de Assets AEM se utiliza para actualizar los metadatos de los recursos en la creación de recursos de la.
- La autenticación de la API usa OAuth servidor a servidor (también conocido como flujo de credenciales de cliente). Consulte Guía de implementación de credenciales de servidor a servidor OAuth.
- En lugar de Acciones de Adobe I/O Runtime, se pueden utilizar otros webhooks o Amazon EventBridge para recibir el evento de AEM Assets y procesar la actualización de metadatos.
- AEM Los eventos de recursos a través de la ventilación de la permiten a las empresas automatizar y optimizar los procesos críticos, fomentando la eficacia y la coherencia en todo el ecosistema de contenido.