Pipeline d'index Magasin Ingest
Les mappages de données complets à partir de la spécification, de la base de données et du schéma sont affichés pour la catégorie Magasin.
Mise en œuvre d'un pipeline de zone d'index Magasin
Le diagramme suivant illustre comment le pipeline d'indexation Magasin est implémenté dans Apache NiFi. Le flux se compose principalement de huit étapes, chacune d'elles est illustrée à l'aide d'exemples de l'interface utilisateur NiFi. Pour plus d'informations sur l'interface, consultez le Guide de l'utilisateur Apache NiFi.
Des exemples étendus sont disponibles pour chaque étape. Ils sont fournis dans les sections inférieures de cette rubrique. Les exemples incluent le code SQL, les informations de tableau de schéma et les exemples d'entrées et de sorties.
Etape 1 : Création d'un document Magasin
Cette étape décrit comment transformer les données Magasin en index Magasin. Pour un exemple de code, voir Exemples de l'étape 1.
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_IDEnsuite, le jeu de résultats est transmis au processeur CreateStoreDocumentFromDatabase pour transformation, à l'aide du tableau suivant pour mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Magasin :| Nom de zone d'index | Type de zone d'index | Description |
|---|---|---|
| Identificateur du document. | ||
| id/store | id_string | ID interne du magasin propriétaire (ouvert et opérationnel) ; mappé à STORE.STORE_ID |
| id/member | id_string | Le numéro de référence interne qui identifie le propriétaire du magasin ; mappé à STOREENT.MEMBER_ID |
| id/language | id_string | Le numéro de référence interne de la langue actuelle de ce document ; mappé à STORELANG.LANGUAGE_ID |
| id/contract | id_string | Le numéro de référence interne du contrat d'hébergement entre le prestataire de services d'hébergement et l'exploitant du magasin ; mappé à STORE.CRTDBYCNTR_ID |
| id/default/language | id_string | La langue par défaut des informations affichées à destination des clients qui font leurs achats dans le magasin ; mappé à STORE.LANGUAGE_ID |
| id/default/fulfillment | id_string | Le centre de distribution par défaut du magasin en cours ; mappé à STORE.FFMCENTER_ID |
| id/default/contract | id_string | Le contrat par défaut du magasin actuel ; mappé à STOREDEF.CONTRACT_ID |
| id/supported/language | id_string | La liste des langues prises en charge du magasin actuel ; mappé à STOREENTDSC.LANGUAGE_ID |
| identifier/language | id_string | La langue actuelle de ce document |
| identifier/specification | id_string | Défini sur "magasin" |
| identificateur/magasin | id_string | Une chaîne qui identifie de façon unique le magasin propriétaire ; mappé à STOREENT.IDENTIFIER |
| identifier/default/language | id_string | La chaîne linguistique de cette langue prise en charge ; mappé à STOREENT.IDENTIFIER |
| identifier/default/currency | id_string | Devise par défaut pour le magasin actuel qui sera utilisé par un client qui n'a pas spécifié de devise préférée ; mappé à STOREENT.SETCCURR |
| identifier/supported/language | id_string | La liste des chaînes de langue prises en charge ; mappé à .LANGUAGE_ID et LANGUAGE.LANGUAGE |
| Données sensibles à la langue | ||
| name/raw | raw | Le nom dépendant de la langue de ce groupe de catalogues ; mappé à TOREENTDSC.NAME |
| name/normalized | normalized | Identique à ci-dessus |
| description/raw | raw | Une courte description de ce groupe de catalogue ; mappé à STOREENTDSC.SHORTDESCRIPTION |
| Propriétés | ||
| type | raw | Le type de magasin actuel |
| properties/name | raw | Le nom de la propriété du magasin prédéfinie |
| properties/value | raw | La valeur de la propriété spécifique au magasin |
| Données de navigation | ||
| relationship/parent | id_string | La référence à son magasin de ressources de catalogue s'il est utilisé ; mappé à STOREREL.RELATEDSTORE_ID |
| relationship/directory | raw | Le nom de base du répertoire dans lequel se trouvent les actifs Web propres au magasin, comme les fichiers JSP et les fichiers de propriétés ; mappé à STORE.DIRECTORY |
Étape 2 : Association des emplacements Magasin
Cette étape décrit comment les données liées à l'emplacement Magasin peuvent être transformées et chargées dans l'index Magasin. Pour un exemple de code, voir Exemples de l'étape 2.
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} Ensuite, le jeu de résultats est transmis au processeur FindStoreLocationsFromDatabase pour transformation, à l'aide du tableau suivant pour mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Magasin :
| Emplacement physique du magasin | ||
|---|---|---|
| locations/<id>/id | id_string | ID d'emplacement du magasin interne |
| locations/<id>/identifier | id_string | L'identificateur externe de cet emplacement de magasin |
| locations/<id>/name | raw | Le nom de cet emplacement de magasin |
| locations/<id>/description | raw | La description de cet emplacement de magasin |
| locations/<id>/phone | raw | Le numéro de téléphone de cet emplacement de magasin |
| locations/<id>/address | raw | La liste des adresses de cet emplacement de magasin |
| locations/<id>/attributes/name | raw | Une liste des noms d'attributs associés à cet emplacement de magasin |
| locations/<id>/attributes/value | raw | La valeur d'attribut correspondante de cet attribut de magasin |
| locations/<id>/filfillment | id_string | Une liste d'ID du centre de distribution pour cet emplacement de magasin |
Etape 3 : Association des noms Magasin
Cette étape décrit comment les données liées au nom Magasin peuvent être transformées et chargées dans l'index Magasin. Pour un exemple de code, voir Exemples de l'étape 3.
La transformation et le chargement des données liées au nom Magasin commencent par l'exécution de l'instruction SQL suivante pour récupérer les données de l'emplacement depuis la base de données 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.DISPLAYNAME 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})
Ensuite, le jeu de résultats est transmis au processeur FindStoreNamesFromDatabase pour transformation, à l'aide de la table suivante pour mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Magasin :
| Données sensibles à la langue | ||
|---|---|---|
| name/raw | raw | Le nom dépendant de la langue de ce groupe de catalogues ; mappé à TOREENTDSC.NAME |
| name/normalized | normalized | Identique à ci-dessus |
| name/text | text | Identique à ci-dessus |
| description/raw | raw | Une courte description de ce groupe de catalogue ; mappé à STOREENTDSC.SHORTDESCRIPTION |
| description/normalized | normalized | Identique à ci-dessus |
| description/text | text | Identique à ci-dessus |
Etape 4 : Association des configurations de niveau Magasin
Cette étape décrit comment les données de configuration de niveau Magasin peuvent être transformées et chargées dans l'index Magasin. Pour un exemple de code, voir Exemples de l'étape 4.
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) Ensuite, le jeu de résultats est transmis au processeur FindConfigurationsFromDatabase pour transformation, à l'aide du tableau suivant pour mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Magasin :
| Propriétés | ||
|---|---|---|
| configurations/name | raw | Le nom de l'attribut de magasin prédéfini |
| configurations/value | raw | La valeur d'attribut spécifique au magasin |
Etape 5 : Association des fonctions de niveau Magasin
Cette étape décrit comment transformer les données de fonction de niveau Magasin et les charger dans l'index Magasin. Pour un exemple de code, voir Exemples de l'étape 5.
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) Ensuite, le jeu de résultats est transmis au processeur FindFeaturesFromDatabase pour transformation, à l'aide du tableau suivant pour mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Magasin :| Propriétés | ||
| features/name | raw | Nom de la fonction spécifique au magasin |
| features/value | raw | Statut activé de cette fonction spécifique au magasin |
Etape 6 : Détermination des langues prises en charge
Cette étape décrit comment déterminer les langues prises en charge par Magasin et les charger dans l'index Magasin. Pour un exemple de code, voir Exemples de l'étape 6.
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 Ensuite, le jeu de résultats est transmis au processeur FindSupportedLanguagesFromDatabase pour transformation, à l'aide du tableau suivant pour mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Magasin :
| identifier/supported/language | id_string | La liste des chaînes de langues prises en charge. |
| id/supported/language | string | La liste des ID de langues pris en charge. |
Etape 7 : Détermination des catalogues pris en charge
Cette étape décrit comment déterminer les catalogues par défaut et pris en charge par Magasin et les charger dans l'index Magasin. Pour un exemple de code, voir Exemples de l'étape 7.
SELECT LISTAGG(S.STOREENT_ID, ', ') STOREENT_ID,
LISTAGG(COALESCE(CHAR(D.CATALOG_ID), ' '), '###') DEFAULT_CATALOG_ID,
LISTAGG(S.CATALOG_ID, ', ') CATALOG_ID,
LISTAGG(S.IDENTIFIER, '###') 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) Ensuite, le jeu de résultats est transmis au processeur FindSupportedCatalogsFromDatabase pour transformation, à l'aide du tableau suivant pour mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Magasin :
| identifier/supported/catalog | id_string | La liste des catalogues de vente pris en charge |
| identifier/default/catalog | id_string | L'identificateur externe du catalogue de vente par défaut ; mappé à CATALOG.IDENTIFIER |
| identifier/master/catalog | id_string | Le catalogue principal du magasin de ressources actuel ; déterminé à partir de STORECAT.MASTERCATALOG |
| id/supported/catalog | id_string | La liste des catalogues de vente pris en charge. |
| id/default/catalog | id_string | Le catalogue de vente par défaut du magasin actuel ; mappé à STOREDEFCAT.CATALOG_ID |
| id/master/catalog | id_string | Le catalogue principal de son magasin de ressources actuel ; déterminé à partir de STORECAT.MASTERCATALOG |
Etape 8 : Détermination des devises prises en charge
Cette étape décrit comment déterminer les devises prises en charge par Magasin et les charger dans l'index Magasin. Pour un exemple de code, voir Exemples de l'étape 8.
SELECT C.STOREENT_ID, LISTAGG(C.CURRSTR, '###') CURRENCY
FROM CURLIST C
WHERE C.STOREENT_ID = ${param.storeId}
GROUP BY C.STOREENT_IDEnsuite, le jeu de résultats est transmis au script FindSupportedCurrenciesFromDatabase pour transformation, à l'aide du tableau suivant pour mapper la zone de base de données renvoyée depuis l'instruction SQL ci-dessus vers une zone d'index dans l'index Magasin :
| identifier/supported/currency | id_string | La liste des devises prises en charge pour le magasin actuel |
Exemples de l'étape 1
Le code suivant est un exemple des données d'entrée pour le processeur 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
}
Le processeur CreateStoreDocumentFromDatabase transforme les données d'entrée en données de sortie suivantes :
{ "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
}
Exemples de l'étape 2
Le code suivant est un exemple des données d'entrée pour le processeur 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"
}
Le processeur FindStoreLocationsFromDatabase transfère les données d'entrée avec le store id transmis dans la classe depuis la classe NiFi FlowFile en tant qu'attribut dans les données de sortie suivantes :
{ "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"
}
}
}
Exemples de l'étape 3
Le code suivant est un exemple des données d'entrée de l'instruction SQL pour le processeur FindStoreNamesFromDatabase :
{
"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"
}
Le processeur transforme les données d'entrée avec store id transmis depuis la classe NiFi FlowFile en tant qu'attribut dans les données de sortie suivantes :
{ "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"
}
}
}
Exemples de l'étape 4
Le code suivant est un exemple des données d'entrée pour le processeur 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"
}Le processeur FindConfigurationsFromDatabase transforme les données d'entrée en données de sortie suivantes :
{ "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"
}
}
}
Exemples de l'étape 5
{
"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"
}
}
}Exemples de l'étape 6
Le code suivant est un exemple des données d'entrée pour le processeur FindSupportedLanguagesFromDatabase.
{
"STOREENT_ID": 1,
"LANGUAGE_ID": "-1",
"LOCALENAME": "en_US"
}Le processeur FindSupportedLanguagesFromDatabase transforme les données d'entrée en données de sortie suivantes :
{ "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"
}
}
}
Exemples de l'étape 7
Le code suivant est un exemple des données d'entrée pour le processeur 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"
}Le processeur FindSupportedCatalogsFromDatabase transforme les données d'entrée avec store id et language id transmis depuis la classe NiFi FlowFile en tant qu'attributs dans les données de sortie suivantes :
{ "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"
}
}
}
Exemples de l'étape 8
Le code suivant est un exemple des données d'entrée pour le processeur FindSupportedCurrenciesFromDatabase :
{
"STOREENT_ID": 1,
"CURRENCY": "USD###EUR"
}
Le processeur FindSupportedCurrenciesFromDatabase transforme les données d'entrée avec store id et languages id transmis depuis la classe NiFi FlowFile en tant qu'attributs dans les données de sortie suivantes :
{ "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"
}
}
}