Просмотров: 2104
Дата последнего изменения: 11.06.2020
Сложность урока:
1 уровень - интуитивно все понятно из интерфейса, но почитать стоит.
2
3
4
5
Недоступно в редакциях:
Старт, Стандарт, Малый бизнес
Рассмотрим типовые ошибки разработчиков и возможности, о которых часто забывают.
Запуск
Варианты запуска бизнес-процессов:
- Ручной - инициируется вручную пользователем из интерфейса;
- Автоматический - запускается сам при создании/изменении документа, также при работе роботов и триггеров CRM;
- Запуск через Rest - метод bizproc.workflow.start, либо посредством создания/изменения документа аналогично автоматическому запуску;
- Возобновление - работа БП после паузы, либо запуск после какого-то события.
Общий момент для
всех вариантов
Кроме роботов и триггеров на текущий момент. Сейчас они запускаются системой, но такой сценарий планируется изменить.
запуска БП: всегда есть пользователь, который запустил бизнес-процесс и он всегда доступен внутри этого БП.
Калькулятор выражений
В модуле Бизнес-процесс есть полезный инструмент - Калькулятор выражений. С помощью функций калькулятора можно расширить стандартные возможности Бизнес-процессов.
Подробно у функциях калькулятора можно почитать в уроке Функции калькулятора выражений.
Рекомендуем посмотреть примеры по частым вопросам:
PHP в бизнес-процессах
Отметим основные ошибки тех, кто активно занимается кастомизацией на коробочных версиях:
Хорошо | Плохо | Почему плохо |
$this->GetVariable('Foo'); | {=Variable:Foo} | Не рекомендуется использовать выражение БП при построении кода PHP, т.к. его невозможно правильно заэкранировать. Например, есть пользователь добавит в переменную текст с кавычкой, то на выходе получим ошибка парсинга PHP, что приведет к фатальной остановке выполнения хита и БП зависнет. Поэтому лучше использовать стандартный API. |
Не ориентироваться на контекст | Использовать $USER , $GLOBALS и т.д. | Использование глобальных переменных не рекомендуется. |
Учитывать права доступа | $USER->Authorize(); | Не рекомендуется повышать права доступа путем авторизации под другим пользователем. Например: вы решили для выполнения определенного действия авторизовать пользователя под ID администратора. Если БП остановится по какой-то причине, то у пользователя останутся права администратора. |
Фильтровать данные извне | "SELECT FROM b_user WHERE ID = {=Variable:UserID}" | Использования запроса к БД без фильтрации данных позволяет злоумышленнику осуществить атаку на сайт с помощью SQL инъекции. |
|
Также рекомендуется максимально использовать стандартные функции.
Вебинар о бизнес-процессах
Подробнее смотрите в вебинаре Роботы и бизнес-процессы. RPA с точки зрения разработчика. Техноволна 1
от 06 апреля 2020.