![image](https://habrastorage.org/webt/lr/fo/l7/lrfol7bxeaxo8aoyt6lgqizqv_8.jpeg)
На рынке доступно множество коммерческих решений для управления информацией о товарах (PIM). И есть 3 бесплатных решения с открытым исходным кодом: Akeneo, Pimcore и OpenPIM, которые вы можете использовать для внедрения системы PIM в своей компании. Я собираюсь сравнить эти 3 решения друг с другом.
1. Akeneo
![image](https://habrastorage.org/webt/o7/tk/vv/o7tkvvgbhaoo1ecomkgyshiokja.png)
У Akeneo есть бесплатная версия и коммерческая корпоративная версия. Вы можете увидеть сравнение этих версий на https://www.akeneo.com/compare-editions/.
В этом обзоре мы будем использовать только бесплатную версию, потому что мы сосредоточены только на бесплатных решениях PIM.
1.1. Модель данных
Akeneo использует объекты «Product» как сущности для хранения информации о продуктах. У продуктов есть значения атрибутов, которые связаны с соответствующим атрибутом. Поддерживаются различные типы атрибутов. Вы можете легко создать новый атрибут в пользовательском интерфейсе без написания кода. Подробности вы можете найти здесь.
Для PIM систем очень важно уметь поддерживать различный набор атрибутов в зависимости от типа продукта, например, MP3-плеер имеет другой набор атрибутов, чем футболка.
Akeneo использует для этого объекты «Families». Таким образом, каждое семейство определяет набор атрибутов, необходимых для этого типа продукта, и каждый продукт имеет ссылку на свое собственное семейство. Товар может принадлежать только к одному семейству.
Атрибуты в Akeneo могут иметь разные значения для разных языков и каналов. Поддержка атрибутов сделана вполне хорошо и позволяет решать различные бизнес задачи.
1.2. Иерархии
Иерархия, к которой может принадлежать продукт, в Akeneo называется категориями. Вы можете иметь сколько угодно иерархий. Но категории в Akeneo очень простые. Вы не можете назначить атрибут для категории, а также нельзя ограничить, может ли продукт быть связан только с одним или несколькими узлами категорий и т.д.
Всю эту функциональность можно реализовать путем разработки расширения системы, но недоступны из пользовательского интерфейса. И для этого вам нужно выполнить довольно сложную разработку на PHP, что потребует дополнительных затрат.
1.3. Пользовательские объекты
Часто в PIM требуется хранить не только информацию о товаре, но и некоторые другие объекты, например Бренд или Магазин (где этот товар находится) и т.д. Эти дополнительные объекты могут иметь свои собственные атрибуты.
У Akeneo нет поддержки пользовательских объектов в бесплатной версии. Эта функциональность поддерживается только в коммерческой версии. Опять же, вы можете создать собственное расширение и получить эту функциональность, но для этого потребуются дополнительные затраты.
1.4. Зависимости
Отношения используются в PIM, чтобы указать, что данные имеют некоторые зависимости. Например, что этот товар можно заменить другим, или товар можно продать вместе с другим и т. д.
Akeneo поддерживает только отношения между продуктами (поскольку пользовательские объекты не поддерживаются). Вы можете определить «Association Type» и использовать его для связи между продуктами.
Но опять же, эти ассоциации очень простые. Например, вы не можете определить атрибут для этой ассоциации, хотя это может быть очень полезно. Например, это часто используется в наборах (или аналогичных функциях) для обозначения порядка продуктов в нем.
1.5. Варианты
Варианты представляют собой один и тот же товар, но с некоторыми разными атрибутами (когда все остальные атрибуты одинаковы). Например, у вас может быть футболка разных цветов и размеров.
Akeneo поддерживает варианты, вы можете создать «Family Variant», который определяет, какие атрибуты отличаются https://help.akeneo.com/pim/serenity/articles/manage-your-families.html#manage-family-variants. Также у Akeneo хорошая поддержка вариантов в интерфейсе пользователя.
Ограничение состоит в том, что для различных продуктов можно контролировать только 3 уровня вариаций.
1.6. Активы
Активы — это изображения, видео или файлы, связанные с товарами. Это очень важная информация, которая обычно хранится в системах PIM.
Бесплатная версия Akeneo имеет очень ограниченную поддержку файлов. У вас может быть только поле, куда вы можете поместить изображение или файл. Если вам нужно больше изображений, вам нужно создать больше полей. Вы не можете прикреплять к ним атрибуты, и у вас не может быть для них никакой структуры.
1.7. Импорт/Экспорт
Akeneo имеет возможность импортировать и экспортировать данные из файлов CSV, Excel и XML. Но вы не можете сопоставить столбцы вашего файла с моделью данных Akeneo. В Akeneo есть набор предопределенных конфигураций импорта/экспорта, поэтому вы должны указать правильные имена столбцов для загрузки или экспорта данных. Также вы не можете трансформировать данные на лету, что часто бывает необходимо при интеграции с различными источниками.
Таким образом, возможности Akeneo по импорту и экспорту весьма ограничены.
1.8. Полнота продукта и качество данных
Akeneo имеет хорошую поддержку для определения полноты продукта (это часть качества данных товаров). Вы можете определить, какие атрибуты требуются для каждого типа продукта (семейства) и для каждого канала. Также UI имеет хорошую поддержку для отображения этой информации.
Akeneo поддерживает некоторые аспекты качества данных товаров, например, тип атрибута предотвращает некоторые ошибки пользователя, определение полнота продукта также хорошо. Но опять же, поддержка настраиваемой проверки качества очень ограничена. Вы должны программировать на низком уровне, если хотите определить свою собственную логику качества (а это бывает очень часто в реальном бизнесе).
В коммерческой версии есть поддержка механизма правил, что хорошо, но для бесплатной версии такой поддержки нет.
1.9. Пользовательская логика и расширение интерфейса пользователя
Реализация пользовательской логики может быть очень важной в системах PIM, потому что бизнес сильно отличается, и часто необходимо выполнять дополнительную логику при работе с товарами.
Akeneo поддерживает это только с помощью низкоуровневого PHP-кода. Вы можете определить свою собственную логику и формы, но это требует знаний фреймворка PHP и занимает много времени.
1.10. Заключение
Бесплатная версия Akeneo имеет довольно большие ограничения, которые могут помешать ее использованию в реальном бизнесе. Ограниченная работа с файлами или отсутствие пользовательских объектов и возможности легко определять настраиваемую логику может помешать многим компаниям использовать бесплатную версию. Поддержка иерархий и отношений также слишком просты, чтобы удовлетворить все потребности бизнеса.
В коммерческой версии Akeneo большинство этих проблем решено. Кроме того, у Akeneo есть хорошее сообщество и сеть партнеров для поддержки. Поэтому я бы рекомендовал использовать коммерческую версию Akeneo, если бизнес готов за нее платить (это недешево). А если вы ищете бесплатное решение PIM, я бы не рекомендовал использовать Akeneo.
2. Pimcore
![image](https://habrastorage.org/webt/yb/vj/9f/ybvj9foeo2voii-szrdrvf_ee1q.png)
Pimcore — это не только решение PIM, но и MDM. Он также имеет возможности DAM (Asset Management). Pimcore также позиционирует себя как платформу цифровой коммерции и клиентских данных, поэтому имеет множество функций. В нашем обзоре мы будем рассматривать только PIM.
У Pimcore также есть бесплатная и коммерческая версии — https://pimcore.com/en/platform/subscription. Но функциональность PIM и DAM, на которой мы фокусируемся, существует во всех редакциях.
2.1. Модель данных
Pimcore имеет все необходимые возможности для определения атрибутов, связанных с товарами. Для этого они используют классы объектов. Более того, вы определяете не только сами атрибуты, но и структуру пользовательского интерфейса, как они будут отображаться.
Pimcore даже поддерживает наследование атрибутов, поэтому, если у вас есть атрибут в родительском элементе, они могут быть унаследованы дочерними элементами. Он имеет множество различных типов атрибутов, в том числе специфичных для языка. Все это дает вам мощные возможности для определения вашей модели предметной области. Pimcore имеет больше возможностей чем Akeneo в определении модели данных.
Единственная потенциальная проблема, которую я вижу здесь, заключается в том, что система генерирует классы PHP для каждого класса объектов, который вы создаете, поэтому у нас есть реальный PHP-код, стоящий за всем этим пользовательским интерфейсом, и иногда вам необходимо пользоваться подобной информацией в пользовательском интерфейсе, например задавать «имя класса PHP » или «Родительский класс». Поэтому, если вы далеки от программирования, то вам может быть сложно определить модель данных.
2.2. Иерархии
Поскольку классы объектов используются системой везде, вы также можете использовать их и для построения иерархий. Это более гибкое решение, чем Akeneo. Вы можете определить свои структуры в виде классов объектов, как вы хотите, а затем использовать отношения, чтобы связать их с другими объектами.
2.3. Пользовательские объекты
Опять же, классы объектов могут использоваться для представления любых данных, а не только товаров или иерархии. Вы можете определить свои собственные классы объектов для любого типа данных, которые вы хотите хранить в PIM, таких как бренды, магазины и т.д. Вы можете прикрепить к ним необходимые атрибуты и определить пользовательский интерфейс, чтобы отображать их, как обычные продукты.
Так что и в этой области у Pimcore возможностей больше, чем у Akeneo.
2.4. Зависимости
Вы можете определить различные типы отношений между любыми объектами в системе https://pimcore.com/docs/pimcore/current/Development_Documentation/Objects/Object_Classes/Data_Types/Relation_Types.html.
Это позволяет вам создавать необходимые логические связи между вашими данными. Единственный недостаток, который я вижу, — это невозможность создания атрибутов для этих зависимостей.
2.5. Варианты
Pimcore имеет встроенную поддержку вариантов. И специализированный интерфейс для них. Я не нашел никаких проблем с этой функциональностью.
2.6. Активы
Pimcore позиционирует себя как полнофункциональное DAM-решение (помимо PIM и других решений). Так что в этой области он может даже больше, чем нужно для PIM.
2.7. Импорт/Экспорт
Возможности Pimcore по импорту/экспорту также ограничены. Эта поддержка лучше, чем у Akeneo, потому что вы можете сопоставить данные столбца CSV или XSL с классами объектов, но это сопоставление очень простое. Вы не можете использовать преобразование и делать какие-либо вычисления на лету.
Форматы XML или JSON напрямую не поддерживаются, это тоже минус.
2.8. Полнота продукта и качество данных
Встроенной поддержки полноты продукта нет, но ее легко реализовать с помощью вычисляемых полей. Более сложную логику можно реализовать, написав свой собственный PHP-код, но это потребует дополнительных усилий.
В целом, Pimcore имеет хорошую поддержку качества данных. У вас есть возможности и для определения типов полей, и для использования вычисляемых полей для дополнительной проверки и использования workflows для определения вашего процесса. У вас также есть возможности отчетности и дашбордов, которые помогут вам визуализировать эти данные.
2.9. Пользовательская логика и расширение интерфейса пользователя
Как я уже упоминал, вычисляемые поля — это самый простой способ добавить собственную логику. Все остальные случаи добавления пользовательской логики и пользовательского интерфейса выполняются посредством программирования на PHP.
2.10. Заключение
Pimcore — большое решение, и не только для PIM. У него больше функций, чем у бесплатной версии Akeneo, но вам придется приложить гораздо больше усилий для реализации проекта, потому что система довольно сложна в изучении и настройке.
Я бы не рекомендовал Pimcore для малого бизнеса из-за его сложности и использования большого количества PHP под капотом. Pimcore — ваш выбор, если вы — средняя или крупная компания, которая ищет комплексное решение для PIM, DAM, электронной коммерции, MDM и CDP. Кроме того, вы должны помнить, что вам нужны ресурсы с хорошим знанием PHP для реализации своего проекта, если вы хотите реализовать его самостоятельно.
3. OpenPIM, англоязычная версия
![image](https://habrastorage.org/webt/wv/a1/zr/wva1zrsakb5zm1bunem2ilnyspe.png)
OpenPIM — полностью бесплатное решение. У него нет коммерческой версии, но при необходимости вы можете получить коммерческую поддержку.
3.1. Модель данных
OpenPIM имеет широкие возможности для определения модели данных, схожие с Pimcore. Вы можете определить свой тип и привязать к нему необходимые атрибуты.
Система имеет множество различных типов атрибутов, которые вы можете использовать. Наследование данных напрямую не поддерживается, но может быть легко реализовано с помощью Действий — https://openpim.ru/docs/admin/guide/03_Actions.html.
3.2. Иерархии
OpenPIM использует тот же подход, что и Pimcore. Вы можете определить свои собственные типы и использовать их как иерархии (в дополнение к типам, которые используются для продуктов). Затем вы можете использовать отношения, чтобы связать структуру с продуктом или любыми другими данными.
Когда пользователь работает со структурами в Pimcore или Akeneo, он может создавать их по своему усмотрению без какого-либо контроля. Если вы хотите ограничить, какие уровни и как будут создаваться, вам придется использовать собственный PHP-код. У OpenPIM здесь больше возможностей, вы можете определить ограничения с помощью конфигурации без какого-либо программирования.
3.3. Пользовательские объекты
Как и в Pimcore, вы можете определять типы для любых данных. Затем вы можете назначать атрибуты своим типам и использовать отношения для логических связей. В результате вы можете хранить в системе любые объекты.
Хранение дополнительной информации — важный аспект всех PIM систем и OpenPIM имеет всю необходимую функциональность для этого.
3.4. Зависимости
Зависимости используются для логической связи ваших данных — детали в документации. Но здесь вы также можете назначить атрибуты и зависимостям, это больше, чем могут сделать Akeneo или Pimcore.
Вы также можете ограничить количество таких зависимостей, что позволяет моделировать отношения «один к одному», «один ко многим» и «многие ко многим».
3.5. Варианты
OpenPIM не имеет встроенной поддержки вариантов. Их можно легко смоделировать в модели данных, используя типы и отношения. Таким образом, вы можете легко сохранить эту информацию, но нет специального интерфейса пользователя для вариантов, поэтому вам придется использовать обычный интерфейс для работы с ними. Это менее удобно, чем у Akeneo или Pimcore.
3.6. Активы
Бесплатная версия Akeneo не имеет хорошей поддержки активов, Pimcore — это полнофункциональный DAM, поэтому он поддерживает даже больше, чем необходимо. OpenPIM стоит посередине. Он имеет поддержку активов из коробки, поэтому вы можете загружать и связывать файлы и изображения с любым объектом, вы можете создавать структуры для своих активов и добавлять для них необходимые атрибуты. Но вы не можете генерировать файлы производные от существующих (например изображения с другим разрешением или форматом) как в системах DAM. Обычно, для PIM систем этого достаточно, но Pimcore, конечно, имеет больше возможностей в этой области.
3.7. Импорт/Экспорт
OpenPIM имеет отличную поддержку импорта и экспорта, поскольку использует полнофункциональный бесплатный инструмент ETL — Talend. Подробности смотрите на https://openpim.ru/docs/admin/guide/02_ImportExport.html.
Таким образом, вы можете импортировать данные из любых источников: CSV, Excel, XML, текстовые файлы, базы данных, веб-службы и т.д. И вы также можете экспортировать данные во все эти источники.
3.8. Полнота продукта и качество данных
Так же, как и в Pimcore OpenPIM не имеет готовой функциональности полноты продукта, но это легко реализовать через Действия. Это потребует некоторых навыков программирования, но не настолько, насколько это необходимо для Pimcore, потому что здесь вы можете задать небольшую логику на javascript, которая будет выполняться при некоторых событиях, и это позволит вам определить логику полноты продукта.
Другие функции качества данных включают в себя типы атрибутов и дополнительные проверки, которые можно установить для атрибута. Действия также можно использовать для добавления собственной логики. И в системе есть дашборды для визуализации всего этого. Итак, OpenPIM имеет хорошие возможности для проверки и визуализации качества данных.
Это лучшая поддержка импорта/экспорта из всех трех решений.
3.9. Пользовательская логика и расширение интерфейса пользователя
Как я уже писал, основная возможность определять настраиваемую логику — это Действия. Это небольшой код javascript, который может выполняться при наступлении некоторых событий, таких как создание или сохранение данных и других. Вам по-прежнему нужны знания в области программирования, но это намного проще, чем писать собственный PHP-код. В результате вы можете создать свою собственную логику с меньшими затратами времени и усилий.
Недостатком является то, что вы не можете определить свой собственный пользовательский интерфейс, если вам это нужно. Вы можете создать только кнопку, которая будет выполнять некоторые предопределенные действия. Это может быть достаточно для некоторых случаев, но конечно не для всех.
3.10. Заключение
Я бы порекомендовал OpenPIM малым и средним компаниям, которые хотят внедрить PIM-решение самостоятельно, не платя дополнительных денег компаниям-партнерам за помощь в этом процессе.
Его легко изучить и использовать. У него есть некоторые ограничения, такие как невозможность определить настраиваемый пользовательский интерфейс, но в большинстве случаев он покрывает все потребности для реализации PIM системы.
OpenPIM не очень подходит для крупных компаний, потому что в нем отсутствуют некоторые функции, которые требуются таким предприятиям, такие как workflows, порталы поставщиков и т.д., Но он хорош для малого и среднего бизнеса.