Сейчас пришло время очередных обновлений модуля Бизнес-процессов.
[spoiler]
В предыдущем обновлении в направлении улучшения удобства пользования визуальным редактором шаблонов бизнес-процессов были выпущены возможность сворачивать комплексные действия для более компактного просмотра шаблона бизнес-процесса, а так же вкладка "Мои действия" на панели действий для сохранения сниппетов.
Сворачивание комплексных действий особенно удобно при создании сложных разветвленных шаблонов бизнес-процессов. Оно позволяет скрывать куски шаблона, которые не нужны в данный момент, и видеть шаблон в более компактной и понятной форме. Сравните визуальную понятность структуры шаблона бизнес-процесса на двух рисунках ниже.
Вкладка "Мои действия" на панели действий позволяет сохранить любое действие текущего шаблона бизнес-процесса в виде сниппета. В том числе и комплексное действие, содержащее в себе дочерние действия (например, действие "Условие";). В дальнейшем копию этого действия легко вставить в любое место шаблона бизнес-процесса.
Кроме того в предыдущем обновлении был изменен алгоритм работы с типами свойств, параметров и переменных. Это изменение было необходимо для универсализации работы с типами, параметрами и переменными в бизнес-процессах. Оно дало возможность использовать произвольные типы, в том числе и не известные на момент создания класса документа.
В частности, в стандартном документе инфоблоков CIBlockDocument появилась возможность использовать пользовательские типы свойств инфоблоков, у которых определен метод GetPublicEditHTML (метод рисует интерфейс ввода значения данного типа). В том числе появилась возможность использовать типы свойств, которые не идут стандартно в поставке модуля инфоблоков, а написаны самими пользователями. Например, вы можете создать свой собственный тип "Телефонный номер", в интерфейсе ввода которого будет выпадающий список типов номера и поле для ввода номера, а возможно и два поля для отдельного ввода номера и кода города.
Такая же поддержка доступна в любых других документах, в том числе и пользовательских.
Так же с предыдущего обновления был начат процесс интеграции бизнес-процессов с новой системой прав, которая позволяет более гибко настраивать права на доступ к документам. Итогом интеграции должна стать полная поддержка новой системы прав всеми документами, а так же унификация интерфейса настройки прав в рамках выполнения бизнес-процесса.
Обновлением было добавлено специальное действие-условие "Истина". Действия-условия используются для формирования условий в действиях Условие и Цикл. Действие-условие "Истина" всегда возвращает истину, как это видно из его названия. Оно дает возможность формировать бесконечные циклы и ветки условий, которые всегда выполняются, если до них доходит управление. Например, приведенный ниже бизнес-процесс каждую минуту устанавливает новый статус документа (устанавливает в текущее время).
Кроме того на модуле Списков был реализован стандартный шаблон бизнес-процесса счетов, как пример текущих и новых возможностей модуля бизнес-процессов. В текущей редакции создание списка счетов и соответствующего шаблона бизнес-процесса осуществляется через мастер настройки сайта. На основании этого шаблона бизнес-процесса вы можете построить обработку счетов вашей организации. Бизнес-процесс оплаты счетов позволяет согласовать счет у руководства, проверить возможность его оплаты, проконтролировать оплату счета и сбор документов, необходимых для его закрытия. |
Очередное обновление модуля бизнес-процессов еще сильнее расширяет поддержку произвольных типов свойств, параметров и переменных, обеспечивая документу возможность работать со сложными типами. Пример сложного типа - привязка к элементам инфоблока. В этом типе до выбора конкретного элемента сначала нужно задать инфоблок, элементы которого выбираются. Поддержка привязки к элементам инфоблока появилась в стандартном документе инфоблоков CIBlockDocument, а так же в документе CBPVirtualDocument компонента "Бизнес-процесс" (bitrix:bizproc.wizards).
Для универсальности на сложный тип переделан тип список. В нем тоже перед выбором конкретного значения необходимо задать множество возможных вариантов значений.
Документ может определять и другие сложные типы.
Так же были доработаны стандартные компоненты модуля бизнес-процессов для поддержки нового алгоритма работы с типами и сложными типами.
Сейчас стандартный документ инфоблоков CIBlockDocument поддерживает следующие типы полей, параметров и переменных: строка, многострочный текст, число, список, дата, привязка к пользователю, файл, привязка к элементам инфоблока, HTML/текст. Для документа CBPVirtualDocument список аналогичный. Этот список будет расширяться по мере появления новых стандартных типов и может расширятся вашими собственными типами.
В модуле Задач появилось действие для постановки задачи в бизнес-процессе. Особенностью этого действия является возможность включать режим ожидания завершения задачи. В обычном режиме действие создает задачу и сразу передает управление на следующее действие бизнес-процесса. В режиме ожидания завершения задачи бизнес-процесс останавливается на действии создания задачи и выполнение продолжается только после того, как задача будет завершена. При этом в бизнес-процессе становится доступна информация о том, когда была завершена задача и кто ее завершил. Идентификатор созданной задачи доступен в любом режиме.
Модификатор _printable теперь принимается для параметров и переменных любых типов. Напомню, что этот модификатор служит для автоматического преобразования значения переменной или параметра в понятную пользователю строку. И теперь для стандартных типов документов CIBlockDocument и CBPVirtualDocument он поддерживат пользовательские типы. Для этого в пользовательском типе достаточно определить метод GetPublicViewHTML.
Кстати, с очередным обновлением обращение к несуществующим параметрам и переменным больше не является ошибкой выполнения бизнес-процесса, приводящей к остановке выполнения. Теперь не определенная переменная просто имеет пустое значение. Это конечно сделало среду разработки менее типизированной, но существенно облегчило ее использование менее подготовленными пользователями.
Для результатов выполнения действий (доступны на вкладке "Дополнительные результаты" диалога вставки значений) модификатор _printable не доступен, потому что они не типизированные. При необходимости преобразования результата выполнения действия в понятную пользователю строку можно применить следующий трюк: сохранить результат выполнения действия в переменную, а уже к переменной применить модификатор _printable.
Исторически так сложилось, что в классе стандартного документа инфоблоков CIBlockDocument значениями типа список были идентификаторы записей. Обновление позволит в качестве значений использовать реальные значения, сохраняемые в поле XML_ID варианта значения списка. Но для обеспечения совместимости при обновлении взводится флаг совместимости, который включает старый режим работы. На новой установке работает новый режим. Если вам необходим новый режим работы на старой установке, вы можете снять флаг совместимости с помощью кода
COption:: RemoveOption('iblock', '~iblock_document_version');
Кроме того очередное обновление исправляет несколько десятков ошибок модуля бизнес-процессов, зарегистрированных в системе учета и работы с ошибками. Согласно стратегическим планам следующее обновление модуля будет целиком посвящено исправлению ошибок. Цель – довести количество важных ошибок до нуля.
Если вы сталкиваетесь с какой-то ошибкой, связанной с работой модуля бизнес-процессов (да и продукта в целом) – составляйте, пожалуйста, обращения в техподдержку. В этом случае ошибки будут исправлены максимально быстро.
Обновление модуля бизнес-процессов сейчас находится на тестировании и будет выпущено в ближайшее время.
Обращаю ваше внимание на то, что обновление выходит в режиме бета-версии. Были произведены изменения внутренних механизмов документов. Поэтому, если вы активно используете модуль бизнес-процессов, я рекомендую вам перед установкой обновления сделать резервную копию либо произвести предварительную установку на тестовую машину.
Приносим извинения за доставленные неудобства.
У меня вопрос.Можно ли управлять с учетом временных факторов?
Например, если отправлена задача на согласование и в течение какого-то времени N она не принята, то отправлять уведомление руководителю группы.
Или например, мы используем сервис отправки уведомлений по SMS.
Например, не отправлять уведомления ночью, а собирать их и отправлять утром.
И т.п.