Помилка імпорту бізнес-процесів з кастомними activity
10 Квітня 2018
наступна статтяЦе досить поширена проблема після впровадження додаткового функціонала в хмарній і коробковій Бітрікс24 методами Rest API. Знайти в Google варіанти усунення цього бага не просто. Але працюючи з проектами різної складності, ми все ж знайшли універсальне рішення імпорту кастомного activity (набір базових методів, які необхідні будь-якої дії. Можуть або повинні бути перевизначені в класі-спадкоємці).
Ділимося з вами особистим досвідом. Отже, у нас є бекап шаблону. Імпортуємо його і отримуємо у відповідь «Помилка імпорту». Закрадається думка про те, що, можливо, в шаблонах є щось, що прив'язує його до порталу або певного додатка. Подивімося на цей шаблон.
Відкриваємо в будь-якому редакторі, бачимо наступне:
З таким точно неможливо працювати. Після цього потрібно зрозуміти, як працює експорт або імпорт. Дивимося на сторінку обробки шаблону в коробковій версії Бітрікс24:
Тут розміщений компонент bitrix: crm.config.bp. Ліземо в нього, знаходимо там виклик компонента bitrix: crm.config.bp.edit, далі bizproc.workflow.edit. Імпорт і експорт шаблонів проводиться методами CBPWorkflowTemplateLoader :: ImportTemplate і CBPWorkflowTemplateLoader :: ExportTemplate відповідно. Вивчивши їх, розуміємо, що це були за крякозябри і як тепер обробляти наші шаблони.
Для відкриття шаблону читаємо його вміст: застосовуємо gzuncompress() і потім unserialize(). Тепер маємо масив з повним описом всіх activity нашого БП:
До ключового слова rest визначаємо масиви описів наших кастомів:
Робимо все ті ж маніпуляції з експортованими шаблоном з актуальної версії CRM, чи то пак з місця, де не виходить імпортувати БП. Знаходимо опис rest activity, дивимося відмінності:
Крім [Type], в полі є ще [Name], але, як показує практика, [Type] цілком достатньо. Міняємо його на значення нового шаблону всюди, де зустрічаємо. Проводимо зворотну процедуру: застосовуємо на підсумковий масив serialize() і gzcompress(), отримуємо новенький шаблон, який вдало імпортується. Тепер, можна без зайвих зусиль і нервів переносити потрібні нам бізнес-процеси з однієї CRM в іншу. Відмінно, працюємо далі.
Не забудьте поділитися статтею зі своїм другом-розробником :)
Ми зв'яжемось з Вами протягом 10 хвилин