Перетворення моделей даних без втрат у Pimcore

Stefano Viani

Менеджмент

29 Apr 2019 Pimcore Імпорт, експорт

Ідеально структурувати дані про товари та клієнтів для інтернет-магазину, маркетингових каналів і процесів продажу - непросте завдання. При створенні моделі даних необхідно враховувати численні фактори, щоб дані в кінцевому підсумку могли ефективно підтримуватися, зберігатися і оброблятися з високою продуктивністю.

Фреймворк для цифрової комерції Pimcore пропонує широкий спектр можливостей для ідеального налаштування моделі даних відповідно до процесів вашої компанії. При виборі типів даних для окремих полів у класах, об'єктних модулях і колекціях полів існують різні способи досягнення вашої мети. Однак, оскільки стратегія компанії, структура асортименту продукції тощо можуть швидко змінюватися, навіть ідеальну на даний момент модель даних необхідно регулярно адаптувати. Це єдиний спосіб гарантувати, що підтримка даних залишається змістовною, послідовною та ефективною.

Однак, коли змінюються типи даних, дані, раніше введені в об'єкти, зазвичай втрачаються. Тому часто доводиться обирати між трудомісткою підтримкою даних або прийняттям моделі даних, яка не відповідає новим вимогам.

З BB Ultima Import Bundle цей вибір між двома лихами більше не існує: тепер можна змінювати типи даних без втрати даних!

Як редагувати типи даних Pimcore без втрати даних

Коли дані імпортуються в Pimcore за допомогою BB Ultima Import Bundle, виконуються наступні три кроки:

  1. Імпорт необроблених даних з джерела даних
  2. Редагування необроблених даних
  3. Імпорт даних в об'єкти даних Pimcore

Самі об'єкти Pimcore також можуть слугувати джерелом даних для першого кроку. Щоб перетворити тип даних поля об'єкта, першим кроком є імпорт даних з об'єктів Pimcore. Потім ви можете налаштувати тип даних поля об'єкта (або блоку об'єктів, або колекції полів). Звичайно, в цьому випадку дані також на деякий час будуть втрачені. Однак тепер ви можете імпортувати змінені поля об'єктів на основі вихідних даних.

Практичний приклад: Перетворення числових полів у поля кількісних значень

Щоб проілюструвати це, ми покажемо, як можна перетворити числове поле на поле кількісного значення в об'єктному модулі. У нашому прикладі технічні дані спочатку зберігалися без одиниць виміру, оскільки всі дані були доступні в сантиметрах, коли була введена модель даних. Однак у майбутньому система повинна дозволяти налаштовувати одиниці виміру під час ведення даних про товар (наприклад, довжина в мм, см, м).

Отже, початковою ситуацією є клас товару з полем об'єктного модуля. Пов'язані з ним об'єктні модулі містять різні числові поля:

Pimcore Objektbausteine

Тепер створіть імпорт, який має імпортувати дані з об'єктів продуктів Pimcore:

Pimcore Datenimport einrichten

Для полів вихідних даних ви можете отримати доступ до всіх методів getter класу продукту. У цьому випадку вам знадобляться шлях до об'єкта і ключ об'єкта для подальшої ідентифікації об'єктів і, звичайно, об'єктні блоки, які містять поля даних, що підлягають зміні.

Після імпорту сирих даних дані виглядають так:

Rohdaten-Import für verlustfreie Transformation des Datenmodells in Pimcore

Тепер змініть визначення об'єктного модуля (з числового поля на поле кількісного значення):

Objektbaustein-Definition in Pimcore ändern

Потім ви призначаєте поля необроблених даних полям об'єкта, щоб увімкнути імпорт об'єкта: за допомогою перетягування шлях поля необроблених даних призначається полям об'єкта для шляху об'єкта, а ключ поля призначається ключу об'єкта:

Änderung Datenmodell in Pimcore: Rohdatenfeldern den Objektfeldern zuordnen

У цьому випадку обидва поля є ключовими. Система шукає об'єкти, для яких і шлях, і ключ збігаються зі значенням вихідних даних.

Щоб ввести вихідні дані в нові поля об'єктного модуля, їх потрібно підготувати таким чином, щоб пакет імпорту зрозумів їх і зміг правильно викликати відповідні методи задання.

Verlustfreie Transformation von Datenmodellen in Pimcore

Для цього у присвоєнні поля можна зберегти функцію зворотного виклику. Це дає змогу отримати доступ до вихідних даних та наявних даних об'єкта. У випадку об'єктних модулів з полями кількісних значень, така функція зворотного виклику для поля width в об'єктному модулі chair має такий вигляд:

// Розбір рядка JSON, що містить дані об'єкта brick - про перетворення значення методу brick getter в JSON піклується пакет імпорту params.value = JSON.parse(params.value); // Якщо об'єкт не має технічних даних, повертається null if(typeof params.value.primarytechnicaldata === "undefined") return null; // якщо об'єкт має модуль "chair" if(typeof params.value.primarytechnicaldata.chair !== "undefined") { // зчитати значення зі старого поля number та повернути його як масив для заповнення поля Quantity Value [value, unit] return [params.value.primarytechnicaldata.chair.width, 'cm']; }

У цьому прикладі функція зворотного виклику зберігається як JavaScript-код. Однак, також можна зберігати PHP-код. Через функції зворотного виклику можна отримати доступ до всіх типів даних Pimcore, включаючи зв'язки, зв'язки з метаданими, колекції полів тощо.

Таким чином, BB Ultima Import Bundle дозволяє адаптувати вашу модель даних до мінливих вимог і подальших розробок Pimcore без втрати даних.

Є запитання про BB Ultima Import Bundle для Pimcore?

Вам потрібна допомога зі зміною моделі даних або імпортом із зовнішніх джерел? Ми будемо раді відповісти на ваші запитання та підтримати вас у впровадженні.

About the Author

Як виконавчий директор Blackbit digital Commerce GmbH, Стефано Віані керує всіма напрямками діяльності агентства в офісах у Геттінгені, Гамбурзі, Берліні та Києві. Його пристрасть - розробка маркетингових стратегій та їх реалізація в конкретних заходах.

У вільний час Стефано любить їздити на мотоциклі або займатися в тренажерному залі.