blackbit_digital_commerce/pimcore-data-director

导入XML、CSV、JSON、Excel文件到Pimcore对象、资产、文档 + 导出数据 + 创建REST API无需任何编程

3.7.0 2024-08-13 13:41 UTC

README

Pimcore插件,优化Pimcore所有PIM相关功能,特别是导入、导出、自动化、工作流程

这个插件做什么?

数据管理员可以

  • 导入XML、JSON、CSV、Excel和其他数据源到Pimcore数据对象、资产和文档
  • 从Pimcore导出数据到XML、JSON、CSV、Excel和其他格式
  • 创建REST API用于写入或读取Pimcore数据
  • 将数据推送到外部系统(商店、网站等)
  • 在Pimcore中创建自动化和工作流程
  • 使Pimcore中的日常任务更加高效

它是如何工作的?

在Pimcore后端GUI中,您可以定义要从导入源提取哪些数据,并将其分配给Pimcore对象的字段。所有Pimcore字段类型都支持导入。还支持导入资产和文档(包括编辑元数据、标签等)。

在导入过程中,可以修改和调整数据以适应您的数据模型。

Import workflow

还支持导出Pimcore数据 - 包括关系数据、图片/缩略图等。使用智能缓存系统,导出速度非常快,因为导出数据在对象保存时(在后台,所以保存不会花费更多时间)而不是在请求导出时更新。对于导出,数据管理员提供了许多现成的模板。

CSV导出(仅文件或CSV文件+资产作为zip文件)

  • JSON导出(仅文件或JSON文件+资产作为zip文件)
  • XML导出(仅文件或XML文件+资产作为zip文件)
  • Excel导出
  • 通过插件支持行业标准格式,如BMEcat、Datanorm

对于每个导入或导出,无需任何额外努力即可自动创建包括认证在内的REST API。

除了生成这样的导出文件外,还可以指定对导出文件的处理方式:一些现成的操作包括

  • 通过(S)FTP、AWS S3和其他云存储提供商上传导出文件
  • 发送电子邮件

可以从后端UI、通过cron作业或基于事件(一旦源数据类的对象被保存)启动导入和导出。后者可以用于设置自动化,如

  • 一旦Pimcore数据对象更改,就自动将数据发送到外部系统
  • 当Pimcore数据对象更改时执行的工作流程(触发翻译、业务流程等)

有关如何设置导入和导出的概述,请参阅我们的教程视频

示例用例

仅是一些Data Director已被用于的示例

  • 将数据导入/导出到ERP系统,如SAP、Navision / Business Central、Infor、Webware、JTL等。
  • 自动将电子商务数据导出到在线商店,如BigCommerce、Shopware、Shopify、xt:commerce等。
  • 导入/导出BMEcat(通常是或针对Mercateo、PSG、Wucato等平台)
  • 从/到WordPress、Hubspot、Typo3导入/导出内容
  • 从/向CRM系统(如Salesforce、Hubspot)导入/导出客户相关数据
  • 将电子商务相关信息导出到Hubspot以自动化电子邮件营销
  • 为产品市场分销商(如ProductsUp、Channable等)创建产品信息
  • 为SaaS搜索提供商(如FactFinder、Doofinder等)创建导出信息
  • 将产品数据导出到InDesign以用于产品目录、数据表等
  • 为Google购物/商户中心、Facebook等创建产品信息
  • 从Icecat、Bidex等导入产品数据
  • 同步资产文件文件夹/DAM系统与Pimcore资产
  • 实施数据质量检查,包括通知
  • 创建用于从/向Pimcore读取/写入信息的REST API
  • 使用DeepL / AWS Translate自动翻译
  • 连接到翻译服务提供商,如Trados
  • 使用人工智能(OpenAI.com API(ChatGPT)、GPT-3、GPT-4)自动生成文本

与其他Pimcore导入插件相比的优势

  • 在Pimcore后端用户界面中配置一切 - 无需创建PHP文件或类似内容,即使是复杂的导入也不需要
  • 更好的导入性能
    • 流式输入文件允许导入大型导入文件
    • 许多优化以加速将数据导入Pimcore元素 - 或在导入前检查数据是否实际更改(如果未更改,则跳过导入或保存以节省时间)
  • 自动完成功能,可以非常快速地设置导入,并建议如何进行复杂导入
  • 灵活的导入资源,您可以从以下资源导入数据
    • 单个文件
    • 文件夹
    • URL
    • PHP脚本,用于满足复杂需求,例如仅当导入文件夹中存在具有相同文件名(但不同文件扩展名)的PDF文件时才导入CSV文件
    • cURL请求,用于从需要OAuth或类似身份验证的资源导入数据(但当然,在这种情况下也可以使用PHP脚本进行身份验证,然后提供要导入的数据)
  • 支持的导入格式
    • CSV
    • XML
    • JSON
    • Excel
    • Pimcore元素(数据对象、资产、文档)
    • Pimcore报告(例如,从Google Analytics、外部数据库或其他Pimcore数据库表导入数据)
    • 文件系统(例如,导入资产)
  • 全面灵活性:对于数据转换的常见用例,该捆绑包提供了可立即使用的模板。但您也可以编辑这些模板,甚至编写自定义(PHP或JavaScript)函数来设置特定字段的转换管道、条件等。
  • 导入对象层次结构(设置导入元素的父元素)
  • 写入保护字段选项:仅当字段为空时才导入特定字段的数据
  • 动态导入到对象砖/分类存储字段(目标字段可以根据导入数据动态定义)
  • 生成响应文档,例如将成功状态发送回源系统
  • 根据事件自动启动导入,例如
    • 自动将资产分配给数据对象,在上传资产后
    • 自动开始导入上传的CSV、JSON、XML、Excel文件
  • 通过外部系统(通过REST API)推送触发导入,用于无文件交换的实时界面
  • 可追溯性:导入存档(对于导入文件)和可搜索的导入日志历史记录,以始终知道某个字段何时以及为什么获得特定值
  • 撤销导入:如果由于错误导致数据丢失,则仅撤销导入的字段到特定日期 - 比恢复数据库转储要好得多(因为非导入字段的数据保留)
  • 数据端口也存储为JSON文件 -> 通过VCS(Git)轻松跟踪更改,轻松在Pimcore实例之间部署。还支持下载和导入数据端口配置。
  • 优化继承功能
  • 权限系统:对于每个数据端口,您可以配置允许配置和/或执行数据端口的人员
  • 导入不同类型的元素
    • 数据对象
    • 资产
    • 文档
    • 数量值单位(包括转换系数)
  • 内置于翻译提供商(DeepL、AWS Translate)的连接器,只需一键即可设置自动翻译(包括对重复翻译字符串的缓存以节省成本)
  • 人工智能功能,例如根据产品名称和描述自动分配类别

与其它Pimcore导出插件相比的优势

  • 当保存的对象的数据需要导出时,自动执行或准备导出
    • 一旦数据发生变化,就准备导出,这样就不需要在请求导出时生成数据 -> 因为导出文档已经在请求时准备好了,所以导出非常快
      • 数据不会反复从Pimcore数据库中提取,而只有在元素发生变化时才会提取
    • 自动将导出上传到目标系统,以确保数据始终是最新的
    • 自动将数据发送到其他API,例如在线商店、市场分销商
  • 对导出文档的格式/文档结构有完全的灵活性,以便根据目标系统的期望精确调整导出文档结构
  • 访问与导出对象相关联的任何数据,例如在导出产品时,可以轻松访问分配的类别、分配类别的图片以及分配图片的元数据 - 可以无限级联
  • 在设置转换管道方面具有完全的灵活性,以更改值到所需的格式(例如日期格式转换、将数量值转换为特定单位等)
  • 预定义的导出模板,用于创建带有或没有引用资产文件的CSV、XML、JSON导出(例如CSV文件加上打包在zip存档中的资产(或缩略图))
  • 智能检查自上次导出以来是否有所变化。如果没有变化,则从缓存中提供结果文档
  • 通过URL访问导出,例如在外部系统中提取数据源
  • 根据任何字段过滤要导出的元素,既可以过滤通过数据端口配置,也可以使用一次性导出的临时过滤

与自实现的导入实现相比的优势

  • 最小化编程工作量:仅需要从数据源进行数据修改时才需要最少的编程
  • 性能
    • 仅在自上次导入以来没有发生变化时才导入数据
    • 如果在导入期间对象没有发生变化,则不需要保存它
    • 当对象发生变化时,导出数据会更新,因此在请求导出时已经准备好了
  • 灵活性
    • 导入和导出可以完全自定义,以适应数据源和您的Pimcore数据模型
    • 支持所有Pimcore元素,包括数据对象、对象块、字段集合、资产和文档
    • 支持导入标签和属性
  • 透明度
    • 使用导入存档和可搜索的导入日志历史记录,您可以始终追踪为什么某个字段具有特定的值以及哪个导入文件负责这一点
    • 始终看到当前的导入/导出状态(当前作业的进度、队列中的项目数量)
  • 舒适功能
    • 自动从导入资源中提取原始数据字段
    • 自动将原始数据字段映射到Pimcore类字段
    • 优化继承功能
    • 替换占位符(例如自动生成文本)
    • 自动翻译(使用DeepL API)
    • 导入错误监控/通知
    • 撤销导入

一劳永逸

数据总监是一套用于以下内容的捆绑包

  • 导入数据到Pimcore元素
  • 当数据对象被保存时检查和更改数据 -> 与覆盖Pimcore模型类的 save() 方法或创建事件处理器相比,有更高的透明度
  • 以任何您想要的格式导出数据,并将导出文档发送到任何地方
  • Pimcore内数据处理自动化
  • 支持针对常见任务的UX优化工作流程

初始努力只需进行一次,与您有多个包来满足数据总监能够完成的所有不同需求相比。

如何获取插件

您可以在Blackbit 商店购买此插件,或发送电子邮件到info@blackbit.de

演示

您可以通过申请演示登录凭证在我们的 Pimcore 演示系统中测试数据总监。

工作流程

步骤 1:将 CSV、XML、JSON 或 Excel 导入 Pimcore

该插件已在许多电子商务和主数据管理项目中证明了自己的能力,并按照我们客户的需求进行开发。

插件的目标是从上游系统导入信息到 Pimcore 的对象中,相应地用更多信息丰富它们,并通过 Pimcore 本身或通过下游系统(如在线商店)发布。

导入始终分为两个步骤:在第一步中,直观的用户界面确定哪些 CSV 文件的列或 XML/JSON 文档的哪些属性应导入到 Pimcore 中。

预览会直接显示原始数据字段是否设置正确。导入将数据读入一个“中间表”,这样用户可以在下一步进一步处理之前看到从上游系统导入的数据。

Import workflow

步骤 2:通过拖放映射属性

在第二步中,中间表中的信息分配给类的属性。这些映射通过 Pimcore 后端 UI 中的拖放个别定义。

设置一个或多个键属性,以便可以重复导入过程并更新现有对象。

属性映射也可以用来修改源数据。对于每个字段分配,可以指定一个回调函数,该函数基于当前对象的一个或多个导入或现有属性执行日期格式操作或其他计算。

Attribute mapping

其他亮点一览无余

  • 基于文件的导入(监控目录并在新文件上自动导入),例如
    • 自动将资产导入 Pimcore(例如从网络驱动器)
    • 自动通过文件名将资产映射到 Pimcore 对象
  • 从源目录导入多个文件(CSV、XML、JSON、Excel),并自动进行数据集去重
  • 从 URL 作为数据源导入
  • 从 Pimcore 对象导入数据
    • 无数据损失地从一种字段类型迁移到另一种字段类型
    • 动态大量数据处理(目前 Pimcore 网格中无法实现,例如,将价格提高 10%)
  • 从 Pimcore 报告导入数据
    • 例如,通过电子邮件发送报告(例如,在报告对象需要采取行动时通知责任用户)
    • 例如,将 Google Analytics 中的数据导入您的 Pimcore 数据对象以进一步使用这些数据
  • 导入文档(填充可编辑内容)
  • 生成响应文档
    • 生成包含所有成功导入项目的响应文档,并将其发送到源系统
    • 跟踪导入错误
    • 调用依赖于当前导入的另一个导入
    • 创建其他系统可以用作导入源的导出文档(JSON/CSV/XML 等)
    • 为单页应用/PWA 前端请求创建响应文档
  • 使用内置 REST API 执行导入和导出
  • 跳过导入源中的记录,例如如果数据缺失或质量不足
  • 轻松导入关系
  • 通过人工智能/机器学习自动将元素分配给关系
  • 导入对象层次结构/对象树
    • 可以指定父元素
    • 可选择优化继承(数据尽可能高地在对象层次结构中输入)
  • 通过翻译提供商(通过DeepL或AWS API)自动翻译文本
  • 支持所有Pimcore数据类型,包括具有元数据的、对象砖、字段集合等关系
  • 优化性能
    • 如果源数据没有改变,可以跳过数据记录的导入
    • 如果在导入对象时数据没有改变,则不需要保存
  • 生成条形码和QR码图像
  • 可以回滚导入
    • 如果存在属性分配错误,并且数千个对象已填充了错误数据,则可以撤销更改 - 在这种情况下,仅将导入中映射的字段重置,仅适用于导入中更改的对象 - 这比完整备份恢复具有更大的优势

常见问题(FAQ)

导入

  • 是否可以创建文件夹或对象层次结构(在数据对象树中将一个对象导入到另一个对象下方)?

  • 如何更新现有对象?

    • 您可以将数据对象类中的任何字段指定为键字段。在导入开始时,它会尝试找到具有导入值的关键字段中的现有对象。如果找到了,则更新该对象。例如,这可以是产品对象的SKU。也可以使用组合键字段,例如,当您的产品具有产品编号和颜色时 - 只有产品编号和颜色的组合是唯一的,因此您可以将这两个都设置为键字段。

      还可以将导入模式设置为仅更新现有对象(而不是创建新的)。当您从不同来源收集一个数据对象类中的数据时,这很有帮助。例如,当产品数据从ERP系统导入,但价格来自定价系统时。在这种情况下,定价导入可能会得到一个尚不存在的产品SKU。在这种情况下,您可能不希望仅创建一个包含价格的新对象,而其他字段为空。

      甚至可以从单个导入数据集中更新多个对象。因此,使用的键字段不必是唯一的。如果您想更新所有具有某些对象分配给多对多关系字段的对象,这可能很有用。有关更多详细信息,我们录制了一个关于从单个导入数据集中更新多个对象的教程视频

  • 是否可以动态分配目标类?

    • 每个数据端口正好有一个目标类。但当然,您可以创建具有不同目标类的多个数据端口。所有这些都可以使用相同的导入文件。由于您可以跳过导入项,因此每个数据端口都可以处理它应处理的导入项。所以总结一下:是的,您可以动态分配目标类。

      除了跳过之外,还可以仅使用一些字段。例如,您可以使用包含制造商列的产品CSV文件,在单个数据端口中创建制造商数据对象,并在另一个数据端口中将制造商对象分配给产品。甚至可以将多个数据端口连接到管道 - 在这种情况下,首先创建制造商对象,然后将其分配给产品。

  • 如何填充本地化字段?

    • 可以为每种语言单独映射本地化字段。这样,您可以将导入文件中的不同列/字段分配给本地化字段的不同的语言。

      此外,还有一个内置功能可以自动使用DeepL或AWS Translate API翻译值。有关详细信息,请参阅关于自动翻译的教程视频

  • 如何将其他对象分配给关系字段?

    • 您可以通过相关对象类中的任何字段查询相关对象。例如,您可以通过查询具有ABCname字段的制造商对象,将制造商对象分配给产品。实际的逻辑是在Pimcore后端的回调函数中实现的(无需在任何地方创建PHP文件或类)。您不需要为此任务编写复杂的PHP代码,但我们提供了大多数常见任务的模板。例如,要分配上述制造商对象,您只需从模板列表中选择函数通过名称分配制造商对象。我们还录制了一个关于分配相关对象的教程视频
  • 是否可以转换导入数据?

    • 是的。对于每个字段,您都可以在回调函数中实现自定义逻辑(在Pimcore后端内部,您无需在任何地方创建PHP文件)。在这个回调函数中,您会收到导入数据和当前对象数据,并可以使用任何语言构造,如条件、循环等。您可以使用PHP或JavaScript实现这些回调函数。
  • 如何分配资产?

    • 资产可以通过URL、文件系统路径分配,或者您可以查询现有资产。您可以在数据对象导入期间创建资产(例如,当您有一个包含图像URL的产品源时)。有关详细信息,请参阅关于分配图像的教程视频

      或者您可以单独导入资产,例如,当您将网络驱动器连接到Pimcore服务器,并希望自动将此文件夹中的资产导入到Pimcore中时。有关详细信息,请参阅从文件系统导入资产的教程视频

  • 是否可以一次性导入多个文件?支持哪些导入资源?

    • 是的。您可以逐个导入文件,从文件夹(包括搜索模式,例如/导入/*.xml)导入文件,从远程存储((S)FTP)导入文件,从Pimcore资产导入文件,从URL导入数据,从cURL请求导入数据,从PHP脚本导入数据。后两者特别有用,当您需要从需要身份验证的API导入数据时。
  • 如何启动导入?

    • 导入可以从以下方式启动:
      • 手动从Pimcore后端
      • 手动在目标文件夹中的对象上或源文件夹中的资产上(当源文件夹位于Pimcore资产中时)右键单击
      • 手动或自动通过命令行,这也可以用于周期性导入,当通过cronjob或Process Manager Bundle调用时
      • 手动或自动通过REST API进行,这可以用来将源系统中的数据推送到Pimcore,无需在系统之间交换文件。
      • 当导入源发生变化时自动执行。例如,当某个文件夹中上传了新文件时,可以自动启动导入(一个用例是自动通过提取资产文件名中的SKU来将资产分配给产品)。
      • 与依赖导入/数据端口管道自动执行

    有关更多详情,我们录制了一个关于如何启动导入的不同方法的教程视频

文档

要了解所有选项及其配置方法,请阅读完整文档观看教程视频

培训

我们还提供Data Director的学院课程