Workflow n8n

Automatisation MySQL avec n8n : gestion des données produit

Ce workflow n8n a pour objectif d'automatiser la gestion des données produit à partir de différentes sources de données. Dans un contexte où les entreprises doivent gérer efficacement leurs informations produits pour optimiser leur chaîne d'approvisionnement, ce workflow permet de centraliser et de traiter ces données de manière fluide. Par exemple, une entreprise de e-commerce peut l'utiliser pour synchroniser ses informations de produit entre sa base de données MySQL et d'autres systèmes, garantissant ainsi une mise à jour en temps réel des informations affichées sur son site web.

  • Étape 1 : le workflow commence par un déclencheur Webhook qui reçoit des données d'entrée.
  • Étape 2 : les données sont ensuite récupérées via une requête MySQL pour extraire les informations pertinentes sur les produits.
  • Étape 3 : une requête HTTP est effectuée pour obtenir la configuration d'impression nécessaire.
  • Étape 4 : les données sont également récupérées d'une base de données Postgres pour enrichir les informations produit.
  • Étape 5 : un traitement des données est effectué à l'aide d'une fonction personnalisée pour formater les résultats. Enfin,
  • Étape 6 : les données sont fusionnées pour créer un ensemble cohérent d'informations produit. Cette automatisation n8n permet de réduire le temps consacré à la gestion manuelle des données, d'améliorer la précision des informations et d'augmenter l'efficacité opérationnelle des équipes. En intégrant ce workflow, les entreprises peuvent se concentrer sur des tâches à plus forte valeur ajoutée tout en minimisant les erreurs humaines.
Tags clés :automatisationMySQLworkflown8ngestion des données
Catégorie: Webhook · Tags: automatisation, MySQL, workflow, n8n, gestion des données0

Workflow n8n MySQL, gestion des données : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n MySQL, gestion des données : détail des nœuds

  • emitirEtiqueta

    Ce noeud reçoit des requêtes HTTP via un webhook.

  • dadosProduto

    Ce noeud exécute une requête SQL pour récupérer des données d'un produit à partir d'une base de données MySQL.

  • PegarConfiguracaoImpressao

    Ce noeud effectue une requête HTTP pour obtenir la configuration d'impression à partir d'une URL spécifiée.

  • dadosRolo

    Ce noeud exécute une requête SQL pour récupérer des données sur un rouleau à partir d'une base de données PostgreSQL.

  • trataRetorno

    Ce noeud traite les données retournées par les noeuds précédents à l'aide d'une fonction personnalisée.

  • roloProduto

    Ce noeud fusionne les données de deux propriétés spécifiées en un seul ensemble de données.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "nodes": [
    {
      "name": "emitirEtiqueta",
      "type": "n8n-nodes-base.webhook",
      "position": [
        440,
        1290
      ],
      "webhookId": "4431a14c-62c6-4602-8e20-e661f1d3d706",
      "parameters": {
        "path": "emitirEtiqueta",
        "options": {},
        "httpMethod": "POST",
        "responseData": "allEntries",
        "responseMode": "lastNode"
      },
      "typeVersion": 1
    },
    {
      "name": "dadosProduto",
      "type": "n8n-nodes-base.mySql",
      "position": [
        1270,
        1440
      ],
      "parameters": {
        "query": "=-- CONSULTA DO PRODUTO GRADE\nWITH pg as (\n\tSELECT\n\t\tid,\n\t\tid_produto,\n\t\tid_gradex,\n\t\tid_gradey,\n\t\tcodigo \n\tFROM\n\t\tproduto_grade \n\tWHERE\n\t\tid = '{{$node[\"emitirEtiqueta\"].json[\"body\"][\"id_produto_grade\"]}}'\n),\n\n-- CONSULTA DO PRODUTO\np as (\n\tSELECT * FROM produto \n\tWHERE id IN ( SELECT id_produto  FROM pg)\n\tAND situacao = 'ATIVO'\n),\n\n-- CONSULTA TECIDO\nt as (\n\tSELECT\n\t\ttoken,\n\t\t JSON_UNQUOTE(json_extract( objeto, '$.largura')) AS largura\n\tFROM\n\t\t`{{$node[\"PegarConfiguracaoImpressao\"].json[\"params\"][\"bancoRelatorio\"]}}`.`i_objeto` \n\tWHERE\n\t\tmodulo = 'produto_grade_tecido'\n\t\tand token in (select id from pg)\n\t\tand situacao = 'ATIVO'\n),\n\n\n-- CONSULTA COMPOSICAO\ncp as (\n\t\n\tSELECT\n\t  token,\n    group_concat(concat(cps.participacao,'% ',cps.descricao)) as composicao\n\tFROM\n\t\t`{{$node[\"PegarConfiguracaoImpressao\"].json[\"params\"][\"bancoRelatorio\"]}}`.`i_objeto`,\n\t\tJSON_TABLE (\n\t\t\t\t\t\t\t\t\tobjeto,\n\t\t\t\t\t\t\t\t\t\t\t'$[*]' COLUMNS (  \n\t\t\t\t\t\t\t\t\t\t\t\t\tparticipacao INT path '$.participacao',\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescricao TEXT path '$.descricao'\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) AS cps \n\t\tWHERE modulo = 'produto_grade_tecido_composicao'\n\t\tAND token in (select id from pg)\n\t\tAND situacao = 'ATIVO'\n\t\tAND cps.participacao > 0\n\t\tGROUP BY token\n\t\tORDER BY participacao desc\n\t\t\n)\n\n\n-- CONSULTA RELATORIO\nSELECT\n{{$node[\"emitirEtiqueta\"].json[\"body\"][\"id_movimentacao_detalhe\"]}} as id_movimentacao_detalhe ,\n     pg.id, \n\tpg.codigo,\n\tp.descricao,\n\tm.nome as marca,\n\tgx.nome as gradex,\n\tgy.nome as gradey,\n\tcurdate() as data_entrada,\n  t.largura,\n\tcp.composicao\nFROM\n\tpg inner join p on (p.id = pg.id_produto)\n\tinner join marca m on(m.id = p.id_marca)\n\tleft join grade gx on (gx.id = pg.id_gradex)\n\tleft join grade gy on (gy.id = pg.id_gradey)\n\tleft join t on (t.token = pg.id)\n\tleft join cp on (cp.token = pg.id)",
        "operation": "executeQuery"
      },
      "credentials": {
        "mySql": {
          "id": "2",
          "name": "illi"
        }
      },
      "typeVersion": 1
    },
    {
      "name": "PegarConfiguracaoImpressao",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        730,
        1290
      ],
      "parameters": {
        "url": "http://localhost:1337/parse/config",
        "options": {},
        "jsonParameters": true,
        "headerParametersJson": "{\"X-Parse-Application-Id\": \"iwms\"}"
      },
      "typeVersion": 1
    },
    {
      "name": "dadosRolo",
      "type": "n8n-nodes-base.postgres",
      "position": [
        1260,
        1220
      ],
      "parameters": {
        "query": "=select * from \"tecido_rolo\"\nwhere \"objectId\" in ('{{$json[\"idRolos\"].join(\"','\")}}')",
        "operation": "executeQuery",
        "additionalFields": {}
      },
      "credentials": {
        "postgres": {
          "id": "1",
          "name": "Postgres account"
        }
      },
      "typeVersion": 1
    },
    {
      "name": "trataRetorno",
      "type": "n8n-nodes-base.function",
      "position": [
        1010,
        1220
      ],
      "parameters": {
        "functionCode": "// Code here will run only once, no matter how many input items there are.\n// More info and help: https://docs.n8n.io/nodes/n8n-nodes-base.function\n\n\n// var produto = items[0].json;\n\n\nvar rolos = $node[\"emitirEtiqueta\"].json[\"body\"][\"rolos\"];\n\n\nvar idRolos = rolos.map(\n    function(rolo){\n        return rolo.objectId\n    });\n    \nvar retorno = [];\n\nretorno.push({json:{\n   // produto:produto,\n    idRolos:idRolos \n}})\n\nreturn retorno;"
      },
      "typeVersion": 1
    },
    {
      "name": "roloProduto",
      "type": "n8n-nodes-base.merge",
      "position": [
        1640,
        1330
      ],
      "parameters": {
        "mode": "mergeByKey",
        "propertyName1": "id_movimentacao_detalhe",
        "propertyName2": "id_movimentacao_detalhe"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "dadosRolo": {
      "main": [
        [
          {
            "node": "roloProduto",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dadosProduto": {
      "main": [
        [
          {
            "node": "roloProduto",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "trataRetorno": {
      "main": [
        [
          {
            "node": "dadosRolo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "emitirEtiqueta": {
      "main": [
        [
          {
            "node": "PegarConfiguracaoImpressao",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "PegarConfiguracaoImpressao": {
      "main": [
        [
          {
            "node": "dadosProduto",
            "type": "main",
            "index": 0
          },
          {
            "node": "trataRetorno",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n MySQL, gestion des données : pour qui est ce workflow ?

Ce workflow s'adresse aux entreprises de taille moyenne à grande, notamment celles du secteur du e-commerce et de la distribution. Les équipes techniques et les responsables de la gestion des données trouveront cet outil particulièrement utile pour automatiser la synchronisation des informations produit entre plusieurs systèmes.

Workflow n8n MySQL, gestion des données : problème résolu

Ce workflow résout le problème de la gestion manuelle des données produit, qui peut être source d'erreurs et de pertes de temps. En automatisant le processus de récupération et de traitement des informations, les entreprises peuvent éviter les incohérences dans leurs bases de données, améliorer la qualité des données et réduire le risque d'erreurs humaines. Les utilisateurs bénéficient ainsi d'une mise à jour rapide et précise des informations produits, ce qui améliore l'expérience client et optimise les opérations commerciales.

Workflow n8n MySQL, gestion des données : étapes du workflow

Étape 1 : le workflow est déclenché par un Webhook qui reçoit des données d'entrée.

  • Étape 1 : les informations produit sont récupérées via une requête MySQL.
  • Étape 2 : une requête HTTP est effectuée pour obtenir la configuration d'impression.
  • Étape 3 : des données supplémentaires sont extraites d'une base de données Postgres.
  • Étape 4 : les données sont traitées par une fonction personnalisée pour formater les résultats.
  • Étape 5 : enfin, les données sont fusionnées pour créer un ensemble cohérent d'informations produit.

Workflow n8n MySQL, gestion des données : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL du Webhook pour l'adapter à votre système. Assurez-vous également de mettre à jour les requêtes MySQL et Postgres en fonction de votre structure de base de données. Si vous avez besoin d'ajouter d'autres sources de données, vous pouvez intégrer des noeuds supplémentaires pour les récupérer. Pensez à sécuriser votre flux en configurant les paramètres d'authentification pour les requêtes HTTP. Enfin, vous pouvez monitorer le flux en ajoutant des noeuds de log pour suivre les erreurs éventuelles.