Data Factory > rules-engine-execute-rules
TL;DR;
This task allows to execute the mapping rules linked to a table.
Name:
TIP
The full documentation of the behavior of this task is detailed in the Learning Center.
Notes générales
- L'application des règles de mappings ne permet pas de créer des items, seulement de les mettre à jour
- L'application de règles de mapping sur une table qui n'en possède pas ne génère pas d'erreur. (un message de type "warning" est simplement affiché dans la vue de détail de l'exécution du job au sein de l'application settings)
- Les règles de mapping appliqué à des éléments qui possèdent par ailleurs une formulas sont ignorées. Ces règles ne sont pas exécutées et un message est ajouté au rapport d'erreur.
- Les attributs (et tables) cibles archivés sont ignorés. On n’applique donc pas la règle sur les attributs cibles archivés.
- Si un attribut source est archivé, on considère sa valeur comme vide. (Dans le cadre des conditions sur une règle de mapping)
- Dans le cas d’une « action », si un « Field » source est archivé, mais dispose d’une valeur, on traite tout de même cette valeur (même logique pour les tables sources archivées)
- L’application des règles a le même impact que d’éditer un attribut, elle implique une mise à jour du formatage conditionnel sur les items ciblés.
Exemple d'usage dans un job
- Appliquer les règles de mapping quotidiennement
1. Exécute Mapping Exécute les règles de mapping et génère un fichier item- Générer en plus un rapport
1. Exécute Mapping Exécute les règles de mapping et génère un fichier item
2. Transform XSLT Générer le fichier pour la tâche Generate Excel
3. Generate Excel Générer un rapport de ce qui a été importé2
3
- Appliquer les règles de mapping après avoir importé les données de l’ERP
1. FTP Get Récupérer le fichier qui provient de l’ERP sur le FTP
2. CSV to XML Transformer le fichier CSV au format XML
3. Transform XSLT Générer un fichier items.xml pour la tâche d’import items
4. Import Items Importer les produits qui viennent de l’ERP
5. Execute Mapping Exécute les règles de mapping sur la table Fnac
6. Execute Mapping Exécute les règles de mapping sur la table Boulanger2
3
4
5
6
Les Entrées / Sorties
Exemple de définition de cette tâche en JSON
{
"name": "rules-engine-execute-rules",
"taskReferenceName": "execute_mapping_rules",
"description": "The business description of the task",
"type": "SUB_WORKFLOW",
"optional": false,
"inputParameters": {
"mode": "ALL",
"tableKey": "products",
"accountKey": "f6955931-851e-4e4d-b1c7-6129b43b8d8a",
"partitions": [
"active"
]
}
}2
3
4
5
6
7
8
9
10
11
12
13
14
15
Détails sur l'exécution des règles de mapping
Rapprochemement des items
On appelle ici rapprochement entre deux items le fait d'établir une règle de correspondance entre deux items appartement chacun à un level au sein de deux tables différentes. Exemple: Identifier l'équivalent d'un item donné (appartenant à une level sur une table) sur une table et un level cible
Le rapprochement des items s'effectue à l'aide des Source-Tables définies depuis l'interface ou lors de l'import des règles de mapping.
Règles générales
- Il ne peut exister qu'une unique
Source-Table(lien entre deux identifiers) entre deux levels de deux tables différentes- Voir également ce document pour plus d'informations sur l'import des liens entre les tables
Source-Table
- Voir également ce document pour plus d'informations sur l'import des liens entre les tables
- Pour rappel, un level ne possède qu'un unique level parent sur une table donnée
- On peut identifier l'item d'une table cible correspondant à un item donné sur une table source en rapprochant les levels de ces tables. Pour cela on procède de la manière suivante:
- Partant d'un level donné sur la table cible, s'il existe un lien vers la table source, on suit ce lien
- S'il n'existe pas de lien vers la table source, on passe au level parent (si le level possède un parent)
- On considère qu'il existe un lien entre un level donné sur une la table cible et l'ensemble des levels traversés sur la table source en suivant le protocole mentionné précédemment
- Il est possible d'utiliser au sein d'une règle de mapping sur un level donné de la la table cible, tout field, classification ou identifier appartenant à un level lié au level courant par la méthode précédente.
Exemples
Rapprochement simple entre deux tables mononiveau

- Dans l'exemple ci-dessus, on procède comme ci-dessous pour résoudre la correspondance entre le level
Level 1de la table cibleretailer-A-productset le levelLevel 1de la table sourceproducts- On part du level
Level 1de la table cibleretailer-A-products
- On part du level
- Il existe un lien
Source-Tableentre l'identifierProduct Codedu levelLevel 1de la table cibleretailer-A-productset l'identifiermodeldu levelLevel 1de la table sourceproducts. On suit donc le lien proposé.
- Il existe un lien
- Le level
Level 1de la table sourceproductsne possède pas de parent. On s'arrete donc à ce level.
- Le level
- On a établi un lien entre le level
Level 1de la table cibleretailer-A-productset le levelLevel 1de la table sourceproducts. On peut donc tenter d'appliquer la règle de mappingAentre le fieldTitlede la table cibleretailer-A-productset le fieldTitlede la table sourceproducts

Dans l'exemple ci-dessous, les items A et B de la table on une correspondance au sein de la table source products
Rapprochement entre une table cible mononiveau et une table source multiniveau

- Dans l'exemple ci-dessus, on procède comme ci-dessous pour résoudre la correspondance entre le level
Level 1de la table cibleretailer-A-productset les levels de la table sourceproducts- On part du level
Level 1de la table cibleretailer-A-products
- On part du level
- Il existe un lien
Source-Tableentre l'identifierEAN13du levelLevel 1de la table cibleretailer-A-productset l'identifierEAN13du levelLevel 3de la table sourceproducts. On suit donc le lien proposé.
- Il existe un lien
- Le level
Level 3de la table sourceproductspossède un parent, on remonte donc jusqu'au niveau parentLevel 2
- Le level
- Le level
Level 2de la table sourceproductspossède un parent, on remonte donc jusqu'au niveau parentLevel 1
- Le level
- Le level
Level 1de la table sourceproductsne possède pas de parent. On s'arrête donc à ce level.
- Le level
- On a établi un lien entre le level
Level 1de la table cibleretailer-A-productset les levelsLevel 1,Level 2etLevel 3de la table sourceproducts. On peut donc tenter d'appliquer les règles de mappingA,B,CetDci-dessus.- Dans cette configuration, l'ensemble des fields, identifier et classification de la table source
productspeuvent être utilisé dans des règles de mapping au sein de la table cibleretailer-A-products
- Dans cette configuration, l'ensemble des fields, identifier et classification de la table source

- L'exemple ci-dessus illustre l'application des règles décrites un peu plus haut sur 4 items de la table cible
retailer-A-products
Rapprochement entre une table cible mononiveau et une table source multiniveau - Illustration d'un cas limite

- Dans l'exemple ci-dessus, on procède comme ci-dessous pour résoudre la correspondance entre le level
Level 1de la table cibleretailer-A-productset les levels de la table sourceproducts- On part du level
Level 1de la table cibleretailer-A-products
- On part du level
- Il existe un lien
Source-Tableentre l'identifierProduct-Codedu levelLevel 1de la table cibleretailer-A-productset l'identifiermodeldu levelLevel 1de la table sourceproducts. On suit donc le lien proposé.
- Il existe un lien
- Le level
Level 1de la table sourceproductsne possède pas de parent. On s'arrête donc à ce level.
- Le level
- On a établi un lien entre le level
Level 1de la table cibleretailer-A-productset le levelLevel 1de la table sourceproducts. Cependant, nous ne sommes pas capable d'établir un lien avec les levelsLevel 2etLevel 3de la table sourceproducts.- On peut donc tenter d'appliquer la règle de mapping
A - On ne peut cependant pas appliquer les règles
B,CetDci-dessus. Dans ce cas, un log est ajouté dans le rapport d'exécution (UNABLE_TO_SELECT_AN_ITEM_IN_THE_SOURCE_TABLE) - Dans cette configuration, seuls les fields, identifier et classification présent sur le level
Level 1de la table sourceproductspeuvent être utilisés dans des règles de mapping au sein de la table cibleretailer-A-products
- On peut donc tenter d'appliquer la règle de mapping

- L'exemple ci-dessus illustre l'application des règles décrites un peu plus haut sur 4 items de la table cible
retailer-A-products - On remarque que les règles de mapping n'ont pu s'appliquer sur deux items, faute d'avoir pu trouver une correspondance dans la table source. Dans ce cas, un log est ajouté dans le rapport d'exécution (
UNABLE_TO_FIND_AN_ITEM_IN_THE_SOURCE_TABLE)
Rapprochement entre une table cible multiniveau et une table source mononiveau

Dans l'exemple ci-dessus, on procède comme ci-dessous pour résoudre la correspondance entre le level
Level 1de la table cibleretailer-A-productset les levels de la table sourceproducts- On part du level
Level 1de la table cibleretailer-A-products
- On part du level
- Le level
Level 1de la table cibleretailer-A-productsne possède ni parent ni lienSource-Tableavec la table sourceproducts. On s'arrête donc à ce level.
- Le level
Dans l'exemple ci-dessus, on procède comme ci-dessous pour résoudre la correspondance entre le level
Level 2de la table cibleretailer-A-productset les levels de la table sourceproducts- On part du level
Level 2de la table cibleretailer-A-products
- On part du level
- Le level
Level 2de la table cibleretailer-A-productsne possède pas de lienSource-Tableavec la table sourceproductsmais possède un parent, on remonte donc jusqu'au niveau parentLevel 1
- Le level
- Le level
Level 1de la table cibleretailer-A-productsne possède ni parent ni lienSource-Tableavec la table sourceproducts. On s'arrête donc à ce level.
- Le level
Dans l'exemple ci-dessus, on procède comme ci-dessous pour résoudre la correspondance entre le level
Level 3de la table cibleretailer-A-productset les levels de la table sourceproducts- On part du level
Level 3de la table cibleretailer-A-products
- On part du level
- Il existe un lien
Source-Tableentre l'identifierEAN13du levelLevel 3de la table cibleretailer-A-productset l'identifierEAN13du levelLevel 1de la table sourceproducts. On suit donc le lien proposé.
- Il existe un lien
- Le level
Level 1de la table sourceproductsne possède pas de parent. On s'arrête donc à ce level.
- Le level
On a établi un lien entre le level
Level 3de la table cibleretailer-A-productset le levelLevel 1de la table sourceproducts. Cependant, nous ne sommes pas capable d'établir un lien entre les levelsLevel 1etLevel 2de la table cibleretailer-A-productset les levels de la table sourceproducts.- On peut donc tenter d'appliquer les règles de mapping
CetD - On ne peut cependant pas appliquer les règles
AetBci-dessus. Dans ce cas, un log est ajouté dans le rapport d'exécution (UNABLE_TO_SELECT_AN_ITEM_IN_THE_SOURCE_TABLE) - Dans cette configuration, l'ensemble des fields, identifier et classification présent sur le level
Level 1de la table sourceproductspeuvent être utilisé dans des règles de mapping au sein du levelLevel 3de la table cibleretailer-A-products
- On peut donc tenter d'appliquer les règles de mapping
Rapprochement entre une table cible multiniveau et une table source multiniveau

Dans l'exemple ci-dessus, on procède comme ci-dessous pour résoudre la correspondance entre le level
Level 1de la table cibleretailer-A-productset les levels de la table sourceproducts- On part du level
Level 1de la table cibleretailer-A-products
- On part du level
- Il existe un lien
Source-Tableentre l'identifierProduct-Codedu levelLevel 1de la table cibleretailer-A-productset l'identifiermodeldu levelLevel 1de la table sourceproducts. On suit donc le lien proposé.
- Il existe un lien
- Le level
Level 1de la table sourceproductsne possède pas parent. On s'arrête donc à ce level.
- Le level
Dans l'exemple ci-dessus, on procède comme ci-dessous pour résoudre la correspondance entre le level
Level 2de la table cibleretailer-A-productset les levels de la table sourceproducts- On part du level
Level 2de la table cibleretailer-A-products
- On part du level
- Il existe un lien
Source-Tableentre l'identifierEAN13du levelLevel 2de la table cibleretailer-A-productset l'identifierEAN13du levelLevel 3de la table sourceproducts. On suit donc le lien proposé.
- Il existe un lien
- Le level
Level 3de la table sourceproductspossède un parent, on remonte donc jusqu'au niveau parentLevel 2
- Le level
- Le level
Level 2de la table sourceproductspossède un parent, on remonte donc jusqu'au niveau parentLevel 1
- Le level
- Le level
Level 1de la table sourceproductsne possède pas de parent. On s'arrête donc à ce level.
- Le level
On a établi un lien entre le level
Level 2de la table cibleretailer-A-productset les levelLevel 1,Level 2etLevel 3de la table sourceproducts.Nous avons également établi un lien entre le
Level 1de la table cibleretailer-A-productset le levelLevel 1de la table sourceproducts.- On peut donc tenter d'appliquer les règles de mapping
A,BC,D,EetF - Dans cette configuration, l'ensemble des fields, identifiers et classifications présents sur le level
Level 1de la table sourceproductspeuvent être utilisés dans des règles de mapping au sein du levelLevel 1de la table cibleretailer-A-products - Dans cette configuration, l'ensemble des fields, identifiers et classifications présents sur les levels
Level 1,Level 2etLevel 3de la table sourceproductspeuvent être utilisés dans des règles de mapping au sein du levelLevel 2de la table cibleretailer-A-products
- On peut donc tenter d'appliquer les règles de mapping

- L'exemple ci-dessus illustre l'application des règles décrites un peu plus haut sur 4 items de la table cible
retailer-A-products - On remarque que les règles de mapping n'ont pu s'appliquer sur certains items, faute d'avoir pu trouver une correspondance dans la table source. Dans ce cas, un log est ajouté dans le rapport d'exécution (
UNABLE_TO_FIND_AN_ITEM_IN_THE_SOURCE_TABLE)
Comportements communs à l'ensemble des règles de mapping
- Si une table cible est archivée, alors les règles de mapping associées à cette table ne sont pas appliquées
- Le fait qu'une table source soit archivée n'a pas d'impact sur l'application des règles de mapping.
- Si le lien dans matrix est archivé pour un field donné, alors on n'applique pas les règles de mapping ayant pour cible ce field
- Dans le cas où un field archivé (le lien présent dans matrix) est pris comme source d'une règle de mapping, on doit considérer sa valeur comme étant vide ("")
Concernant les identifiers
- Si un identifier est archivé, alors on n'applique pas les règles de mapping ayant pour cible cet identifier
- Dans le cas où un identifier archivé est pris comme source d'une règle de mapping, on doit considérer sa valeur comme étant vide ("")
Concernant les classifications
- L'application des règles sur les classifications s'effectue avant les règles ayant pour cible des fields (notamment pour permettre l'application de règles sur des fields spécifiques)
- Si une classification est archivée, alors on n'applique pas les règles de mapping ayant pour cible cette classification
- Le fait qu'une classification prise comme source soit archivée n'a pas d'impact sur l'application des règles de mapping
Concernant l'ensemble des fields
- Le fait qu'un field pris comme source soit archivé n'a pas d'impact sur l'application des règles de mapping
- Dans le cas où un field (A) prend sa source dans un autre field (B), si la valeur de B est vide pour un item donné, et que les conditions associées à la rule sont bien remplies (plus de détail ici), alors on supprime la valeur de A. Dans ce cas, on ne produit aucun log d'erreur ou de warning dans le rapport d'exécution.
Concernant les fields de type SINGLE-LINE-TEXT, LONG-TEXT et HTML-TEXT
Les comportements décrits plus haut s'appliquent.
Concernant les fields de type IMAGE
Les comportements décrits plus haut s'appliquent.
Concernant les fields de type ATTACHMENT
Les comportements décrits plus haut s'appliquent.
Concernant les des fields de type NUMBER
Les comportements décrits plus haut s'appliquent.
- Les opérations (via l'action
TEMPLATE) ne supportent pas les nombres au-delà de 3 décimales. - Les très grands nombres ne sont pas supportés (>1.7976931348623157e+308 ou < -1.7976931348623157e+308)
- Le symbole
NaNn'est pas supporté - Les opérations ne peuvent pas contenir de retour à la ligne
- La notation scientifique est autorisée.
- Depending on default suffix definition on the field
- If a default suffix is set
- If the provided suffix in the mapping rule is valid: that suffix is applied
- If the provided suffix in the mapping rule is invalid: the default suffix is applied
- If no default suffix is set
- If the provided suffix in the mapping rule is valid: that suffix is applied
- If the provided suffix in the mapping rule is invalid: no suffix is applied
- If a default suffix is set
Concernant les fields de type SINGLE-SELECT
Les comportements décrits plus haut s'appliquent.
Concernant les fields de type MULTIPLE-SELECT, MULTIPLE-SELECT-QUANTIFIED et MULTIPLE-SELECT-QUANTIFIED-WITH-COMMENTS
Les comportements décrits plus haut s'appliquent.
Concernant les fields de type DATE et DATE-TIME
Quand l'action est COPY
Suivant le champ cible et source les dates seront tronquées ou complétées comme décrit ci-dessous.
| Source | Cible | Comportement |
|---|---|---|
DATE | DATE | La valeur source est copiée telle quelle dans le champ cible Ex: 2022-04-25 -> 2022-04-25 |
DATE-TIME | DATE-TIME | La valeur source est copiée telle quelle dans le champ cible Ex: 2022-04-25 14:34:00.000Z -> 2022-04-25 14:34:00.000Z |
DATE | DATE-TIME | La valeur source est copiée dans le champ cible avec le TIME défini à 00:00:00.000 Ex: 2022-04-25 -> 2022-04-25 00:00:00.000Z |
DATE-TIME | DATE | Seule la date source est copiée dans le champ cible (le TIME défini à 00:00:00.000) Ex: 2022-04-25 14:34:00.000Z -> 2022-04-25 |
Quand l'action est SET_TEXT
Un contrôle est fait à l'exécution de la règle sur le format de la valeur à appliquer comme cela est fait pour l'import d'items. Si le format proposé n'est pas un format de date valide voir ce document), la date n'est pas importée et un log est ajouté au rapport d'exécution.
Le rapport d'exécution
Détails sur le document
<Report task="rules-engine-execute-rules" date="2013-04-01T17:13:41.000Z" action-id="6011339103483173319a1614">
<Input name="mode"></Input>
</Metadata>
<Log type="error">
<Metadata name="xpath"></Metadata>
<Metadata name="code">ITEM_ALREADY_EXISTS</Metadata>
<Message>
Error while applying given template.
</Message>
</Log>
</Report>2
3
4
5
6
7
8
9
10
11
| XPath | Description | Occurrence |
|---|---|---|
| /Report@task | La clé de la tâche, ici table-import-items | 1 |
| /Report/Input | Permet de mentionner les inputs de la tache | 1..* |
| /Report/Log | Une ligne du rapport | 0..* |
| /Report/ Log @type | Peut-être error, warning ou info | 1 |
| /Report/ Log / Metadata-Collection | Permet de grouper un ensemble de Metadata | 0..* |
| /Report/ Log / Metadata-Collection@name | Le nom du groupe de metadata | 1 |
| /Report/ Log / Metadata | Représente une métadonnée, elle-même définie par un nom et une valeur | 0..* |
| /Report/ Log / Metadata@name | Le nom de la metadata | 1 |
| /Report/ Log /Message | Le message associé à cette ligne dans le rapport | 1 |
Cas remontés dans le rapport d'exécution
| Code | Type | Message | Cas | Commentaire |
|---|---|---|---|---|
| SET_TEXT_TEMPLATE_EXECUTION_ERROR | error | Error while applying given template | In the case of a SET_TEXT action, when the execution of a template in error | In this case, do not apply the rule in question |
| DATE_INVALID_VALUE | warning | Provided date is not in ISO 8601 format and cannot be applied. A valid format is 2022-01-31 | An invalid value on a field date could not be imported using mapping | |
| DATE_TIME_INVALID_VALUE | warning | Provided date and time are not in ISO 8601 format and cannot be applied. A valid format is 2022-01-31T14:59:59.000Z | An invalid value on a date-time field could not be imported using mapping | |
| UNABLE_TO_SELECT_AN_ITEM_IN_THE_SOURCE_TABLE | warning | It was not possible to select an item in the source table. This case occurs when a link (Source-Table) between the source and target tables is missing. | In this case, do not apply the rule in question | |
| ACTION_EXECUTION_ERROR | error | No source item found | When no matching source item is found | Metadata : identifiers, actionType, fieldKeyName |