Canalizaciones de índice de palabras frecuentes de Ingest

Se muestran las correlaciones de datos completas de la especificación, la base de datos y el esquema para la categoría de tienda.

Implementación de una canalización de campo de índice de tienda

Los siguientes pasos ilustran cómo se implementa la canalización de indexación de la tienda en Apache NiFi. El flujo consta principalmente de ocho etapas, cada una de las cuales se ilustra con ejemplos de la interfaz de usuario de NiFi. Para obtener más información sobre la interfaz, consulte la Guía del usuario de Apache NiFi.

Hay disponibles amplios ejemplos para cada etapa. Se proporcionan en las secciones inferiores de este tema. Los ejemplos incluyen código SQL, información de la tabla de esquema y entradas y salidas de ejemplo.

Etapa 1: Crear un documento de tienda

Esta etapa describe cómo transformar los datos de tienda en el índice de tienda. Para ver un ejemplo de código, consulte Ejemplos de la etapa 1.

La transformación de los datos de la tienda comienza con la ejecución del siguiente SQL para recuperar los datos de la tienda de la base de datos de Commerce.
         SELECT F.STORE_ID, F.STORETYPE, F.LANGUAGE_ID AS DEF_LANGUAGE_ID, F.FFMCENTER_ID, F.CONTRACT_ID, G.DIRECTORY,
		E.SETCCURR, E.IDENTIFIER AS STORE_IDENTIFIER, E.MEMBER_ID, N.LANGUAGE_ID, D.DISPLAYNAME, D.DESCRIPTION,
		L.LOCALENAME, F.INVENTORYSYSTEM, F.CRTDBYCNTR_ID
	   FROM STOREENT E, STOREENTDS D, STORELANG N, LANGUAGE L,
	        (SELECT F.CONTRACT_ID, S.STORE_ID, S.LANGUAGE_ID, S.STORETYPE, S.FFMCENTER_ID, S.INVENTORYSYSTEM, S.CRTDBYCNTR_ID, S.DIRECTORY 
	           FROM STORE S
	                LEFT OUTER JOIN STOREDEF F ON (S.STORE_ID = F.STORE_ID)
	          WHERE S.STORE_ID IN (SELECT R.RELATEDSTORE_ID FROM STOREREL R WHERE R.STATE = 1 AND R.STRELTYP_ID = -4 AND R.STORE_ID = ${param.storeId})
	            AND S.STATUS = 1) F,
	​        (SELECT S.DIRECTORY 
	           FROM STORE S, STOREREL R
	          WHERE S.STORE_ID = R.RELATEDSTORE_ID AND R.STATE = 1 AND R.STRELTYP_ID = -4 AND R.RELATEDSTORE_ID <> R.STORE_ID
	            AND R.STORE_ID = ${param.storeId}) G
	  WHERE F.STORE_ID = E.STOREENT_ID AND E.MARKFORDELETE = 0 AND E.TYPE = 'S' AND N.STOREENT_ID = E.STOREENT_ID
		AND D.STOREENT_ID = E.STOREENT_ID AND D.LANGUAGE_ID = F.LANGUAGE_ID AND N.LANGUAGE_ID = L.LANGUAGE_ID
	  ORDER BY N.LANGUAGE_ID
A continuación, el conjunto de resultados se pasa al procesador CreateStoreDocumentFromDatabase para su transformación utilizando la tabla siguiente para ​correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de tienda.
​Campo de índice​ Nombre​​ ​Tipo de campo de índice​​​​ ​​Descripción:
​​Identificador del documento​​
​id/tienda id_string ID interno de la tienda propietaria (abierta y operativa); se correlaciona con STORE.STORE_ID
​id/member ​id_string El número de referencia interno que identifica al propietario de la tienda; se correlaciona con STOREENT.MEMBER_ID
​id/language ​id_string El número de referencia interno del idioma actual de este documento; se correlaciona con STORELANG.LANGUAGE_ID
​id/contract id_string El número de referencia interno del contrato de alojamiento entre el proveedor de servicios de host y el operador de tienda; se correlaciona con STORE.CRTDBYCNTR_ID
​id/​default/language id_string El idioma predeterminado para la información que se muestra a los clientes que compran en la tienda; se correlaciona con STORE​.LANGUAGE_ID.
id/​default/fulfillment id_string El centro de despacho de pedidos predeterminado para la tienda actual; se correlaciona con STORE.FFMCENTER_ID
id/​default/contract id_string El contrato predeterminado de la tienda actual; se correlaciona con STOREDEF.CONTRACT_ID
​id/​supported/language id_string La lista de idiomas admitidos de la tienda actual; se correlaciona con STORE​ENTDSC.LANGUAGE_ID
​identifier/language ​id_string El idioma actual de este documento
​identifier/specification id_string Establecer en "tienda"
​identifier/​store id_string Una cadena que identifica de forma exclusiva la tienda propietaria; se correlaciona con STOREENT​​.IDENTIFIER
identifier/​default/language id_string La serie de idioma de este idioma soportado; se correlaciona con STOREENTDSC​.LANGUAGE_ID
​identifier/default/currency id_string La moneda predeterminada para la tienda actual que utilizará un cliente que no haya especificado una moneda preferida; se correlaciona con STOREENT.SETCCURR
identifier/​supported/language id_string La lista de cadenas de idiomas soportadas; se correlaciona con STOREENTDSC​.LANGUAGE_ID y LANGUAGE.LANGUAGE​
​​Datos sensibles al idioma​​​
​​name/raw raw El nombre que depende del idioma de este grupo de catálogo; se correlaciona con STOREENTDSC​​.NAME
​​name/normalized normalized Igual que anterior
​​description/raw raw Una descripción breve de este grupo de catálogo; se correlaciona con STOREENTDSC.SHORTDESCRIPTION
Propiedades
tipo raw El tipo de la tienda actual
properties/name raw El nombre de propiedad de tienda predefinido
properties/value raw El valor de propiedad específico de la tienda
Datos de navegación
relationship/parent id_string La referencia a su tienda con elementos de catálogo si se utiliza; se correlaciona con STOREREL.RELATEDSTORE_ID
relationship/directory raw El nombre base del directorio en el que se encuentran los elementos web específicos de la tienda, como los archivos JSP y de propiedades; se correlaciona con STORE.DIRECTORY

Etapa 2: Asociar ubicaciones de tienda

Esta etapa describe cómo transformar los datos relacionados con la ubicación de la tienda y cargarlos en el índice de la tienda. Para ver un ejemplo de código, consulte Ejemplos de la etapa 2.

La transformación y carga de los datos relacionados con la ubicación de la tienda comienza con la ejecución del siguiente SQL para recuperar​ los datos de ubicación de la base de datos de Commerce:
 SELECT D.NAME, D.DESCRIPTION, D.STLOC_ID, D.LANGUAGE_ID, S.IDENTIFIER, S.STOREENT_ID,
			  S.PHONE, S.ADDRESS1, S.ADDRESS2, S.ADDRESS3, S.ACTIVE, S.CITY, S.STATE, S.COUNTRY, S.ZIPCODE,
			  A.NAME ATTR_NAME, A.DISPLAYNAME ATTR_DISPLAYNAME, A.VALUE ATTR_VALUE, A.DISPLAYVALUE ATTR_DISPLAYVALUE,
			  B.NAME FFMC_NAME, B.FFMCENTER_ID
	   FROM STLOC S, STLOCDS D
			  LEFT OUTER JOIN (
				SELECT LISTAGG(NAME, '###') WITHIN GROUP (ORDER BY SEQUENCE) NAME,
					   LISTAGG(COALESCE(DISPLAYNAME, ' '), '###') DISPLAYNAME,
					   LISTAGG(VALUE, '###') VALUE,
					   LISTAGG(COALESCE(DISPLAYVALUE, ' '), '###') DISPLAYVALUE,
					   LANGUAGE_ID, STLOC_ID
				  FROM STLOCATTR
				 GROUP BY STLOC_ID, LANGUAGE_ID) A ON (A.LANGUAGE_ID IN (${ingest.languages}) AND A.STLOC_ID = D.STLOC_ID)
			  LEFT OUTER JOIN (
				SELECT LISTAGG(COALESCE(F.NAME, ' ')​, '###') NAME,
					   LISTAGG(R.FFMCENTER_ID, '###') FFMCENTER_ID,
					   STLOC_ID
				  FROM STLFFMREL R, FFMCENTER F
				 WHERE R.FFMCENTER_ID = F.FFMCENTER_ID
				 GROUP BY STLOC_ID) B ON (B.STLOC_ID = D.STLOC_ID)
	  WHERE S.STLOC_ID = D.STLOC_ID AND D.LANGUAGE_ID IN (${ingest.languages}) AND S.STOREENT_ID = ${param.storeId}	

A continuación, el conjunto de resultados se pasa al procesador FindStoreLocationsFromDatabase para su transformación utilizando la tabla siguiente para ​correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de tienda:​​​

Ubicación de tienda física
locations/<id>/id id_string El ID de ubicación de la tienda interna
locations/<id>/identifier id_string El identificador externo de la ubicación de la tienda
locations/<id>/name raw El nombre de esta ubicación de tienda
locations/<id>/description raw La descripción de esta ubicación de tienda
locations/<id>/phone raw El número de teléfono de esta ubicación de tienda
locations/<id>/address raw La lista de direcciones de esta ubicación de tienda
locations/<id>/attributes/name raw Una lista de nombres de atributo asociados con esta ubicación de tienda
locations/<id>/attributes/value raw El valor de atributo correspondiente de este atributo de tienda
locations/<id>/filfillment id_string​ Una lista de ID de centro de despacho de pedidos para esta ubicación de tienda

Etapa 3: Asociar nombres de tienda

Esta etapa describe cómo transformar los datos relacionados con el nombre de la tienda y cargarlos en el índice de la tienda. Para ver un ejemplo de código, consulte Ejemplos de la etapa 3.

La transformación y carga de los datos relacionados con el nombre de la tienda comienza con la ejecución del siguiente SQL para recuperar​ los datos de ubicación de la base de datos de Commerce:

SELECT SL.STOREENT_ID, SL.LANGUAGE_ID, DA.DESCRIPTION A_DESCRIPTION, DE.DESCRIPTION E_DESCRIPTION,
		       DA.DISPLAYNAME A_DISPLAYNAME, Start of deleted contentDE.DISPLAYNAME End of deleted contentStart of added contentDE.DI​SPLAYNAME End of added contentE_DISPLAYNAME
		  FROM STORELANG SL
		       LEFT JOIN 
		       (SELECT S.STORE_ID, R.RELATEDSTORE_ID, D.LANGUAGE_ID, D.DISPLAYNAME, D.DESCRIPTION
				  FROM STORE S, STOREENT E, STOREREL R, STOREENTDS D, STORELANG L
				 WHERE S.STATUS = 1 AND S.STORE_ID = E.STOREENT_ID AND E.MARKFORDELETE = 0 AND E.TYPE = 'S'
				   AND S.STORETYPE NOT IN ('BMP', 'MPS', 'HCP', 'PBS', 'SCP', 'CHS', 'RPS', 'BRP', 'DPS', 'DPX')
				   AND R.STATE = 1 AND R.STRELTYP_ID = -4 AND R.STORE_ID = S.STORE_ID AND R.RELATEDSTORE_ID = D.STOREENT_ID
				   AND L.STOREENT_ID = S.STORE_ID AND L.LANGUAGE_ID = D.LANGUAGE_ID AND R.STORE_ID <> R.RELATEDSTORE_ID) DA
				    ON DA.STORE_ID = SL.STOREENT_ID AND SL.LANGUAGE_ID = DA.LANGUAGE_ID
		       LEFT JOIN 
		       (SELECT S.STORE_ID, R.RELATEDSTORE_ID, D.LANGUAGE_ID, D.DISPLAYNAME, D.DESCRIPTION
				  FROM STORE S, STOREENT E, STOREREL R, STOREENTDS D, STORELANG L
				 WHERE S.STATUS = 1 AND S.STORE_ID = E.STOREENT_ID AND E.MARKFORDELETE = 0 AND E.TYPE = 'S'
				   AND S.STORETYPE NOT IN ('BMP', 'MPS', 'HCP', 'PBS', 'SCP', 'CHS', 'RPS', 'BRP', 'DPS', 'DPX')
				   AND R.STATE = 1 AND R.STRELTYP_ID = -4 AND R.STORE_ID = S.STORE_ID AND R.RELATEDSTORE_ID = D.STOREENT_ID
				   AND L.STOREENT_ID = S.STORE_ID AND L.LANGUAGE_ID = D.LANGUAGE_ID AND R.STORE_ID = R.RELATEDSTORE_ID) DE
				    ON DE.STORE_ID = SL.STOREENT_ID AND SL.LANGUAGE_ID = DE.LANGUAGE_ID
		 WHERE SL.STOREENT_ID = ${param.storeId} AND SL.LANGUAGE_ID IN (${ingest.languages})		

A continuación, el conjunto de resultados se pasa al procesador FindStoreNamesFromDatabase para su transformación utilizando la tabla siguiente para ​correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de tienda:​​​

​​Datos sensibles al idioma​​​
​​name/raw raw El nombre que depende del idioma de este grupo de catálogo; se correlaciona con STOREENTDSC​​.NAME
​​name/normalized normalized Igual que anterior
​name/text text Igual que anterior
​​description/raw raw Una descripción breve de este grupo de catálogo; se correlaciona con STOREENTDSC.SHORTDESCRIPTION
description/normalized normalized Igual que anterior
​description/text text Igual que anterior

Etapa 4: Asociar configuraciones de nivel de tienda

Esta etapa describe cómo transformar los datos de configuración del nivel de tienda y cargarlos en el índice de la tienda. Para ver un ejemplo de código, consulte Ejemplos de la etapa 4.

La transformación de los datos de configuración y su carga comienza con la ejecución del siguiente SQL para recuperar​ los datos de ubicación de la base de datos de Commerce:
SELECT LISTAGG(NAME, '@@@') NAME,
           LISTAGG(STOREENT_ID, '@@@') STOREENT_ID,
           LISTAGG(VALUE, '@@@') VALUE
      FROM (SELECT F.NAME,
	           LISTAGG(F.STOREENT_ID, ', ') WITHIN GROUP (ORDER BY F.SEQUENCE) STOREENT_ID,
		   LISTAGG(COALESCE(F.VALUE, ' '), '###') VALUE
	      FROM (SELECT C.NAME, C.STOREENT_ID , C.VALUE, R.SEQUENCE
		      FROM STORECONF C, STOREREL R
		     WHERE R.RELATEDSTORE_ID = C.STOREENT_ID
		       AND R.STATE = 1 AND R.STRELTYP_ID = -11 AND R.STORE_ID = ${param.storeId}
		       AND C.NAME NOT LIKE ('wc.externalContent.%')
		     UNION
		    SELECT C.NAME, C.STOREENT_ID , C.VALUE, 9999999
		      FROM STORECONF C
		     WHERE C.STOREENT_ID = 0
		       AND C.NAME NOT LIKE ('wc.externalContent.%')) F
	     ​GROUP BY F.NAME)     

A continuación, el conjunto de resultados se pasa al procesador FindConfigurationsFromDatabase para su transformación utilizando la tabla siguiente para ​correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de tienda:​​​

Propiedades
configurations/name raw El nombre de atributo de tienda predefinido
configurations/value raw El valor de atributo específico de la tienda

Etapa 5: Asociación de características de nivel de tienda

Esta etapa describe cómo transformar los datos de características a nivel de tienda y cargarlos en el índice de tienda. Para ver un ejemplo de código, consulte Ejemplos de la etapa 5.

El proceso comienza con la ejecución del siguiente SQL para recuperar los datos de ubicación​ de la base de datos de Commerce:
SELECT LISTAGG(NAME, '@@@') NAME,
             LISTAGG(STOREENT_ID, '@@@') STOREENT_ID,
	     LISTAGG(VALUE, '@@@') VALUE
	FROM (SELECT F.NAME,
	             LISTAGG(F.STOREENT_ID, ', ') WITHIN GROUP (ORDER BY F.SEQUENCE) STOREENT_ID,
	             LISTAGG(COALESCE(F.CONTENT, ' '), '###') VALUE
		FROM (SELECT E.NAME, D.CONTENT, E.STOREENT_ID , R.SEQUENCE
		        FROM EMSPOT E, DMEMSPOTDEF D, STOREREL R
		       WHERE R.RELATEDSTORE_ID = E.STOREENT_ID
			 AND R.STATE = 1 AND R.STRELTYP_ID = -11 AND R.STORE_ID = ${param.storeId}
			 AND E.USAGETYPE = 'STOREFEATURE'
			 AND E.EMSPOT_ID = D.EMSPOT_ID
			 AND D.CONTENTTYPE = 'FeatureEnabled'
		       UNION
		      SELECT E.NAME, D.CONTENT, E.STOREENT_ID , 9999999
			FROM EMSPOT E, DMEMSPOTDEF D
		       WHERE E.STOREENT_ID = 0
			 AND E.USAGETYPE = 'STOREFEATURE'
			 AND E.EMSPOT_ID = D.EMSPOT_ID
			 AND D.CONTENTTYPE = 'FeatureEnabled') F
	       GROUP BY F.NAME)​     ​
A continuación, el conjunto de resultados se pasa al procesador FindFeaturesFromDatabase para su transformación utilizando la tabla siguiente para ​correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de tienda:​​​
Propiedades
features/name ​​raw El nombre de característica específica de la tienda
features/value ​​raw Estado habilitado de esta característica específica de la tienda

Etapa 6: Determinar idiomas admitidos

Esta etapa describe cómo determinar los idiomas admitidos por la tienda y cargarlos en el índice de la tienda. Para ver un ejemplo de código, consulte Ejemplos de la etapa 6.

Determinar los catálogos admitidos y predeterminados de la tienda y cargarlos empieza por ejecutar el SQL siguiente para recuperar datos de ubicación​ de la base de datos de Commerce:
SELECT N.STOREENT_ID, LISTAGG(N.LANGUAGE_ID, ', ') WITHIN GROUP (ORDER BY N.LANGUAGE_ID) LANGUAGE_ID,
		       LISTAGG(TRIM(L.LOCALENAME), '###') LOCALENAME
		  FROM STORELANG N, LANGUAGE L
		 WHERE N.STOREENT_ID = ${param.storeId} AND N.LANGUAGE_ID = L.LANGUAGE_ID
		 GROUP BY N.STOREENT_ID​		​

A continuación, el conjunto de resultados se pasa al procesador FindSupportedLanguagesFromDatabase para su transformación utilizando la tabla siguiente para ​correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de tienda:​​​

identifier/​supported/language id_​string Lista de cadenas de idiomas admitidos​.
​id/​supported/language string ​La lista de ID de idiomas admitidos..

Etapa 7: Determinar catálogos admitidos

Esta etapa describe cómo determinar la tienda admitida y los catálogos predeterminados y cargarlos en el índice de la tienda. Para ver un ejemplo de código, consulte Ejemplos de la etapa 7.

Determinar los catálogos admitidos y predeterminados de la tienda y cargarlos empieza por ejecutar el SQL siguiente para recuperar datos de ubicación​ de la base de datos de Commerce:
 SELECT LISTAGG(S.STOREENT_ID, ', ') STOREENT_ID,
            LISTAGG(YAESCE(CHAR(D.CATALOG_ID), ' '), '###') DEFAULT_CATALOG_ID,
            LISTAGG(S.CATALOG_ID, ', ') CATALOG_ID,
            IDENTIFICADOR DE LISTAGG(S.IDENTIFIER, '###'),
            LISTAGG(S.MASTERCATALOG, '###') MASTERCATALOG
      FROM  ​(SELECT S.STOREENT_ID, C.CATALOG_ID, C.IDENTIFIER, S.MASTERCATALOG 
               FROM STORECAT S, CATALOG C
	      WHERE S.STOREENT_ID IN
	            (SELECT RELATEDSTORE_ID FROM STOREREL
	              WHERE STATE = 1 AND STRELTYP_ID = -4 AND STORE_ID = ${param.storeId})
	                AND S.CATALOG_ID = C.CATALOG_ID) S
            LEFT JOIN STOREDEFCAT D ON (D.STOREENT_ID = ${param.storeId} AND S.CATALOG_ID = D.CATALOG_ID)	 

A continuación, el conjunto de resultados se pasa al procesador FindSupportedCatalogsFromDatabase para su transformación utilizando la tabla siguiente para ​correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de tienda:​​​

​​identifier/supported/catalog id_​string La lista de catálogos de ventas admitidos
​​identifier/default/catalog id_string El identificador externo del catálogo de ventas predeterminado; se correlaciona con CATALOG.IDENTIFIER
identificador/​maestro/catálogo id_​string ​​El catálogo​ maestro de su tienda con elementos actual; se determina a partir de STORECAT.MASTERCATALOG
id/​supported/catalog id_​string ​La lista de catálogos de ventas admitidos.
id/​default/catalog id_string El catálogo de ventas predeterminado de la tienda actual; se correlaciona con STOREDEFCAT.CATALOG_ID
id/​master/catalog id_string El catálogo maestro de su tienda con elementos actual; se determina a partir de STORECAT.MASTERCATALOG

Etapa 8: Determinar monedas soportadas

Esta etapa describe cómo determinar las divisas admitidas por la tienda y cargarlos en el índice de la tienda. Para ver un ejemplo de código, consulte Ejemplos de la etapa 8.

La determinación de las lenguajes admitidos por la Tienda y su carga comienza con la ejecución del siguiente SQL para recuperar los datos de ubicación de la base de datos de Commerce:
		 SELECT C.STOREENT_ID, LISTAGG(C.CURRSTR, '###') CURRENCY
	       FROM CURLIST C
	 	  WHERE C.STOREENT_ID = ${param.storeId}
	 	  GROUP BY C.STOREENT_ID

A continuación, el conjunto de resultados se pasa al procesador FindSupportedCurrenciesFromDatabase para su transformación utilizando la tabla siguiente para ​correlacionar el campo de base de datos devuelto desde el SQL anterior con un campo de índice en el índice de tienda:​​​

​identifier/supported/currency id_string La lista de monedas soportadas para la tienda actual

Ejemplos de la etapa 1

El código siguiente es un ejemplo de los datos de entrada para el procesador CreateStoreDocumentFromDatabase:


                    {
                    "STORE_ID": 1,
                    "STORETYPE": "MHS",
                    "DEF_LANGUAGE_ID": -1,
                    "FFMCENTER_ID": 10501,
                    "CONTRACT_ID": 10005,
                    "DIRECTORY": "ExtendedSitesCatalogAssetStore",
                    "RELATEDSTORE_ID": 10501,
                    "SETCCURR": "USD",
                    "STORE_IDENTIFIER": "AuroraESite",
                    "MEMBER_ID": -5000,
                    "LANGUAGE_ID": -1,
                    "DISPLAYNAME": "AuroraESite",
                    "DESCRIPTION": "Commerce Model Store entity",
                    "LOCALENAME": "en_US           ",
                    "INVENTORYSYSTEM": -2,
                    "CRTDBYCNTR_ID": 10004
                    }
                

El procesador CreateStoreDocumentFromDatabase transforma los datos de entrada en los siguientes datos de salida:


                    { "update": { "_id": "1--1", "_index": "auth.store", "retry_on_conflict": 5, "_source": false } }
                    {
                    "doc": {
                    "identifier": {
                    "default": {
                    "currency": "USD"
                    },
                    "specification": "store",
                    "language": "en_US",
                    "store": "AuroraESite",
                    "supported": {
                    "language": "en_US"
                    }
                    },
                    "name": {
                    "normalized": "AuroraESite",
                    "raw": "AuroraESite"
                    },
                    "description": {
                    "raw": "Commerce Model Store entity"
                    },
                    "id": {
                    "default": {
                    "contract": "10005",
                    "language": "-1",
                    "fulfillment": "10501"
                    },
                    "contract": "10004",
                    "member": "-5000",
                    "language": "-1",
                    "store": "1",
                    "supported": {
                    "language": -1
                    }
                    },
                    "type": "MHS",
                    "relationship": {
                    "parent": "10501",
                    "directory": "ExtendedSitesCatalogAssetStore"
                    },
                    "properties": [
                    {
                    "name": "inventory",
                    "value": "-2"
                    }
                    ],
                    "__meta": {
                    "created": "2020-07-31T17:36:57.059Z",
                    "modified": "2020-07-31T17:36:57.079Z",
                    "version": {
                    "min": 0,
                    "max": 0
                    }
                    }
                    },
                    "doc_as_upsert": true
                    }

Ejemplos de la etapa 2

El código siguiente es un ejemplo de los datos de entrada para el procesador FindStoreLocationsFromDatabase:


                    {
                    "NAME": "Warden Plaza",
                    "DESCRIPTION": "Warden Plaza",
                    "STLOC_ID": 10039,
                    "LANGUAGE_ID": -1,
                    "IDENTIFIER": "Warden Plaza",
                    "STOREENT_ID": 1,
                    "PHONE": "905.326.8647                    ",
                    "ADDRESS1": "8250 Warden Ave",
                    "ADDRESS2": null,
                    "ADDRESS3": null,
                    "ACTIVE": 1,
                    "CITY": "Markham",
                    "STATE": "Ontario",
                    "COUNTRY": "Canada",
                    "ZIPCODE": "L6G 1C7                                 ",
                    "ATTR_NAME": "BeautyCenter###CappuccinoBar###SushiRestaurant###Type###StoreHours",
                    "ATTR_DISPLAYNAME": "Beauty center###Cappuccino bar###Sushi restaurant###Type###Store hours",
                    "ATTR_VALUE": "true###true###true###Regular Store###Mon-Fri: 10am - 9pm<br />Sat: 9am - 7pm<br />Sun: 11am - 6pm<br />",
                    "ATTR_DISPLAYVALUE": "true###true###true###Regular Store###Mon-Fri: 10am - 9pm<br />Sat: 9am - 7pm<br />Sun: 11am - 6pm<br />",
                    "FFMC_NAME": "Warden Plaza",
                    "FFMCENTER_ID": "11539"
                    }

El procesador FindStoreLocationsFromDatabase transfiere los datos de entrada con el store id pasado a la clase de la clase NiFi FlowFile como atributo en los siguientes datos de salida:


                    { "update": { "_id": "1--1", "_index": "auth.store", "retry_on_conflict": 5, "_source": false } }
                    {
                    "doc": {
                    "locations": {
                    "10039": {
                    "identifier": "Warden Plaza",
                    "address": [
                    "8250 Warden Ave",
                    "Markham",
                    "Ontario",
                    "Canada",
                    "L6G 1C7"
                    ],
                    "phone": "905.326.8647",
                    "name": "Warden Plaza",
                    "description": "Warden Plaza",
                    "attributes": [
                    {
                    "name": "Beauty center",
                    "value": "true"
                    },
                    {
                    "name": "Cappuccino bar",
                    "value": "true"
                    },
                    {
                    "name": "Sushi restaurant",
                    "value": "true"
                    },
                    {
                    "name": "Type",
                    "value": "Regular Store"
                    },
                    {
                    "name": "Store hours",
                    "value": "Mon-Fri: 10am - 9pm<br />Sat: 9am - 7pm<br />Sun: 11am - 6pm<br />"
                    }
                    ],
                    "id": "10039",
                    "fulfillment": [
                    {
                    "name": "Warden Plaza",
                    "id": "11539"
                    }
                    ]
                    }
                    },
                    "__meta": {
                    "modified": "2020-07-31T17:55:37.124Z"
                    }
                    }
                    }

Ejemplos de la etapa 3

El código siguiente es un ejemplo de los datos de entrada de SQL para el FindStoreNamesFromDatabase procesador:


                    {
                    "STOREENT_ID": 1,
                    "LANGUAGE_ID": -1,
                    "A_DESCRIPTION": "Extended Sites Catalog Asset Store",
                    "E_DESCRIPTION": "Commerce Model Store entity",
                    "A_DISPLAYNAME": "Extended Sites Catalog Asset Store",
                    "E_DISPLAYNAME": "AuroraESite"
                    }

El procesador transforma los datos de entrada con store id pasados de la clase NiFi FlowFile como atributo en los siguientes datos de salida:


                    { "update": { "_id": "1--1", "_index": "auth.store", "retry_on_conflict": 5, "_source": false } }
                    {
                    "doc": {
                    "name": {
                    "normalized": "AuroraESite",
                    "raw": "AuroraESite",
                    "text": "AuroraESite"
                    },
                    "description": {
                    "normalized": "Commerce Model Store entity",
                    "raw": "Commerce Model Store entity",
                    "text": "Commerce Model Store entity"
                    },
                    "__meta": {
                    "modified": "2020-07-31T18:44:35.288Z"
                    }
                    }
                    }

Ejemplos de la etapa 4

El código siguiente es un ejemplo de los datos de entrada para el procesador FindConfigurationsFromDatabase:


                                {
                                "NAME": "CK_imagePath@@@is_ext_order_system@@@wc.cmc.storefunctions.hide@@@wc.price.variant@@@wc.search.entitlement@@@wc.search.priceMode@@@wc.search.priceMode.compatiblePriceIndex@@@wc.seo.defaultURLLangId",
                                "STOREENT_ID": "11001@@@0@@@11001@@@1@@@11001, 0@@@11001, 0@@@1@@@11001",
                                "VALUE": "/wcsstore/AuroraStorefrontAssetStore/@@@N@@@RequisitionList,allowOrgRegistration,accountParticipantRole,MobilePhone@@@enabled@@@0###0@@@1###1@@@1.0@@@-1"
                                }​

El procesador FindConfigurationsFromDatabase transforma los datos de entrada en los siguientes datos de salida:


                                        { "update": { "_id": "1--1", "_index": "auth.store", "retry_on_conflict": 5, "_source": false } }
                                        {
                                        "doc": {
                                        "configurations": [
                                        {
                                        "name": "wc.search.priceMode.compatiblePriceIndex",
                                        "value": "1.0"
                                        }
                                        ],
                                        "__meta": {
                                        "modified": "2020-07-31T18:56:04.119Z"
                                        }
                                        }
                                        }

Ejemplos de la etapa 5

Datos de entrada de ejemplo para FindFeaturesFromDatabase como se muestra a continuación:
{
  "NAME": "AccountActivation@@@AdvancedSearch@@@Age@@@AgeOptions@@@AllowReOrder@@@Analytics@@@ApplePay@@@BOPIS@@@BrowsingHistory@@@CDNCaching@@@CategoryProductBlogs@@@CategorySubscriptions@@@ConsentOptions@@@CouponWallet@@@CustomLogo@@@DateOfBirth@@@EmailOption@@@EnableQuotes@@@ExpandedCategoryNavigation@@@ExpeditedOrders@@@FacebookIntegration@@@FutureOrders@@@Gender@@@InventoryAvailability@@@KeywordSuggestions@@@MarketingConsent@@@MobilePhone@@@MultipleActiveOrders@@@MultipleShipments@@@PaymentPromotion@@@Permanent@@@PhotoGallery@@@ProductRankings@@@ProductRatingsReview@@@ProductSuggestions@@@ProductionServer@@@PunchoutPayment@@@QuickOrder@@@RatingReviewIntegration@@@RecurringOrders@@@RemoteWidget@@@SOAWishlist@@@SearchBasedNavigation@@@Session@@@SharedShippingBillingPage@@@ShipAsComplete@@@ShippingChargeType@@@ShippingInstructions@@@ShowHideOrderItems@@@SideBySideIntegration@@@StoreLocator@@@Subscription@@@Tealeaf@@@TrackingStatus@@@UseCommerceComposer@@@UseSynonyms@@@WCHIntegration@@@accountParticipantRole@@@allowOrgRegistration@@@contractSelection@@@on-behalf-of@@@on-behalf-of-csr@@@preferredCurrency@@@preferredLanguage@@@promotionCode@@@quickCheckout@@@search@@@sterlingConfigurator",
  "STOREENT_ID": "11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001, 11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001@@@11001, 11001@@@11001@@@11001@@@11001@@@11001",
  "VALUE": "false@@@true@@@false@@@true@@@true@@@false@@@false@@@true@@@false@@@false@@@false@@@false@@@false@@@true@@@false@@@true@@@true@@@false@@@false@@@false@@@false@@@true@@@true@@@true@@@true@@@false@@@false###true@@@false@@@true@@@false@@@false@@@false@@@false@@@false@@@false@@@false@@@false@@@false@@@false@@@true@@@true@@@true@@@true@@@false@@@true@@@true@@@false@@@true@@@false@@@false@@@true@@@true@@@false@@@true@@@true@@@true@@@false@@@false@@@false@@@false@@@false@@@true@@@true@@@false###true@@@true@@@true@@@true@@@false"
}
​
The FindFeaturesFromDatabase processor transforms the input data into the following output data:

{ "update": { "_id": "1--1", "_index": "auth.store", "retry_on_conflict": 5, "_source": false } }
{
  "doc": {
    "features": [
      {
        "name": "AccountActivation",
        "value": "false"
      },
      {
        "name": "AdvancedSearch",
        "value": "true"
      },
      {
        "name": "Age",
        "value": "false"
      },
      {
        "name": "AgeOptions",
        "value": "true"
      },
      {
        "name": "AllowReOrder",
        "value": "true"
      },
      {
        "name": "Analytics",
        "value": "false"
      },
      {
        "name": "ApplePay",
        "value": "false"
      },
      {
        "name": "BOPIS",
        "value": "true"
      },
      {
        "name": "BrowsingHistory",
        "value": "false"
      },
      {
        "name": "CDNCaching",
        "value": "false"
      },
      {
        "name": "CategoryProductBlogs",
        "value": "false"
      },
      {
        "name": "CategorySubscriptions",
        "value": "false"
      },
      {
        "name": "ConsentOptions",
        "value": "false"
      },
      {
        "name": "CouponWallet",
        "value": "true"
      },
      {
        "name": "CustomLogo",
        "value": "false"
      },
      {
        "name": "DateOfBirth",
        "value": "true"
      },
      {
        "name": "EmailOption",
        "value": "true"
      },
      {
        "name": "EnableQuotes",
        "value": "false"
      },
      {
        "name": "ExpandedCategoryNavigation",
        "value": "false"
      },
      {
        "name": "ExpeditedOrders",
        "value": "false"
      },
      {
        "name": "FacebookIntegration",
        "value": "false"
      },
      {
        "name": "FutureOrders",
        "value": "true"
      },
      {
        "name": "Gender",
        "value": "true"
      },
      {
        "name": "InventoryAvailability",
        "value": "true"
      },
      {
        "name": "KeywordSuggestions",
        "value": "true"
      },
      {
        "name": "MarketingConsent",
        "value": "false"
      },
      {
        "name": "MobilePhone",
        "value": "false"
      },
      {
        "name": "MultipleActiveOrders",
        "value": "false"
      },
      {
        "name": "MultipleShipments",
        "value": "true"
      },
      {
        "name": "PaymentPromotion",
        "value": "false"
      },
      {
        "name": "Permanent",
        "value": "false"
      },
      {
        "name": "PhotoGallery",
        "value": "false"
      },
      {
        "name": "ProductRankings",
        "value": "false"
      },
      {
        "name": "ProductRatingsReview",
        "value": "false"
      },
      {
        "name": "ProductSuggestions",
        "value": "false"
      },
      {
        "name": "ProductionServer",
        "value": "false"
      },
      {
        "name": "PunchoutPayment",
        "value": "false"
      },
      {
        "name": "QuickOrder",
        "value": "false"
      },
      {
        "name": "RatingReviewIntegration",
        "value": "false"
      },
      {
        "name": "RecurringOrders",
        "value": "true"
      },
      {
        "name": "RemoteWidget",
        "value": "true"
      },
      {
        "name": "SOAWishlist",
        "value": "true"
      },
      {
        "name": "SearchBasedNavigation",
        "value": "true"
      },
      {
        "name": "Session",
        "value": "false"
      },
      {
        "name": "SharedShippingBillingPage",
        "value": "true"
      },
      {
        "name": "ShipAsComplete",
        "value": "true"
      },
      {
        "name": "ShippingChargeType",
        "value": "false"
      },
      {
        "name": "ShippingInstructions",
        "value": "true"
      },
      {
        "name": "ShowHideOrderItems",
        "value": "false"
      },
      {
        "name": "SideBySideIntegration",
        "value": "false"
      },
      {
        "name": "StoreLocator",
        "value": "true"
      },
      {
        "name": "Subscription",
        "value": "true"
      },
      {
        "name": "Tealeaf",
        "value": "false"
      },
      {
        "name": "TrackingStatus",
        "value": "true"
      },
      {
        "name": "UseCommerceComposer",
        "value": "true"
      },
      {
        "name": "UseSynonyms",
        "value": "true"
      },
      {
        "name": "WCHIntegration",
        "value": "false"
      },
      {
        "name": "accountParticipantRole",
        "value": "false"
      },
      {
        "name": "allowOrgRegistration",
        "value": "false"
      },
      {
        "name": "contractSelection",
        "value": "false"
      },
      {
        "name": "on-behalf-of",
        "value": "false"
      },
      {
        "name": "on-behalf-of-csr",
        "value": "true"
      },
      {
        "name": "preferredCurrency",
        "value": "true"
      },
      {
        "name": "preferredLanguage",
        "value": "false"
      },
      {
        "name": "promotionCode",
        "value": "true"
      },
      {
        "name": "quickCheckout",
        "value": "true"
      },
      {
        "name": "search",
        "value": "true"
      },
      {
        "name": "sterlingConfigurator",
        "value": "false"
      }
    ],
    "__meta": {
      "modified": "2020-09-11T06:13:00.050Z"
    }
  }
}​​

Ejemplos de la etapa 6

El código siguiente es un ejemplo de los datos de entrada para el procesador FindSupportedLanguagesFromDatabase.


                                {
                                "STOREENT_ID": 1,
                                "LANGUAGE_ID": "-1",
                                "LOCALENAME": "en_US"
                                }

El procesador FindSupportedLanguagesFromDatabase transforma los datos de entrada en los siguientes datos de salida:


                                        { "update": { "_id": "1--1", "_index": "auth.store", "retry_on_conflict": 5, "_source": false } }
                                        {
                                        "doc": {
                                        "identifier": {
                                        "supported": {
                                        "language": [
                                        "en_US"
                                        ]
                                        }
                                        },
                                        "id": {
                                        "supported": {
                                        "language": [
                                        "-1"
                                        ]
                                        }
                                        },
                                        "__meta": {
                                        "modified": "2020-08-03T13:19:38.979Z"
                                        }
                                        }
                                        }

Ejemplos de la etapa 7

El código siguiente es un ejemplo de los datos de entrada para el procesador FindSupportedCatalogsFromDatabase.


            {
            "STOREENT_ID" : "10501, 10501, 10501",
            "DEFAULT_CATALOG_ID" : "######10502               ",
            "CATALOG_ID" : "10001, 10501, 10502",
            "IDENTIFIER" : "Extended Sites Catalog Asset Store###Extended Sites Catalog Asset Store B2B Direct###Extended Sites Catalog Asset Store Consumer Direct",
            "MASTERCATALOG" : "1###0###0"
            }

El procesador FindSupportedCatalogsFromDatabase transforma los datos de entrada con los store id y language id pasados de la clase NiFi FlowFile como atributo en los siguientes datos de salida:


                { "update": { "_id": "1--1", "_index": "auth.store", "retry_on_conflict": 5, "_source": false } }
                {
                "doc": {
                "identifier": {
                "default": {
                "catalog": "Extended Sites Catalog Asset Store Consumer Direct"
                },
                "master": {
                "catalog": "Extended Sites Catalog Asset Store"
                },
                "supported": {
                "catalog": [
                "Extended Sites Catalog Asset Store",
                "Extended Sites Catalog Asset Store Consumer Direct"
                ]
                }
                },
                "id": {
                "default": {
                "catalog": "10502"
                },
                "master": {
                "catalog": "10001"
                },
                "supported": {
                "catalog": [
                "10001",
                "10502"
                ]
                }
                },
                "__meta": {
                "modified": "2020-08-08T03:37:21.743Z"
                }
                }
                }​

Ejemplos de la etapa 8

El código siguiente es un ejemplo de los datos de entrada para el procesador FindSupportedCurrenciesFromDatabase.


{
  "STOREENT_ID": 1,
  "CURRENCY": "USD###EUR"
}

El procesador transforma los datos de entrada con el y se pasan a desde la FindSupportedCurrenciesFromDatabase clase NiFi FlowFile como atributos store id en los siguientes datos de languages id salida:


{ "update": { "_id": "1--1", "_index": "auth.store", "retry_on_conflict": 5, "_source": false } }
{
  "doc": {
    "identifier": {
      "supported": {
        "currency": [
          "USD",
          "EUR"
        ]
      }
    },
    "__meta": {
      "modified": "2020-08-03T16:05:32.234Z"
    }
  }
}