Адаптация элемента кампании для работы по триггерам
Glossary Item Box
Общие сведения
Начиная с версии 7.12.4 в bpm'online добавлен новый элемент кампании — [Добавить по триггеру]. При этом изменена логика работы элементов с аудиторией кампании: в момент срабатывания триггера будет запускаться синхронный фрагмент кампании.
Таким образом, новые и существующие пользовательские элементы кампании необходимо адаптировать для работы с этим элементом.
Чтобы пользовательский элемент попал в синхронный фрагмент и корректно срабатывал как при плановом выполнении, так и по триггеру, необходимо внести в серверную часть ряд изменений:
- Указать элементу дополнительный тип — CampaignSchemaElementType.Sessioned.
- Исполняемый элемент для пользовательского элемента кампании (наследник класса CampaignProcessFlowElement) должен работать используя базовое свойство CampaignAudience. Все операции по определению аудитории, установке признака [Шаг выполнен] должны осуществляться через объект в свойстве CampaignAudience c типом ICampaignAudience.
Описание примера
Адаптировать элемент маркетинговой кампании для отправки СМС сообщений пользователям, создание которого описано в статье "Добавление пользовательского элемента кампании".
Алгоритм выполнения примера
1. Внести изменения в класс, взаимодействующий с серверной частью приложения
ВАЖНО! Перед выполнением примера выполните шаги 1-6 из статьи "Добавление пользовательского элемента кампании". |
Измените схему исходного кода TestSmsElement (класс, наследник CampaignSchemaElement). В конструкторе класса укажите дополнительный ElementType — CampaignSchemaElementType.Sessioned.
public TestSmsElement() { // TestSmsElement является и асинхронным и сессионным элементом, который сможет отрабатывать по триггеру. ElementType = CampaignSchemaElementType.AsyncTask | CampaignSchemaElementType.Sessioned; }
2. Внести изменения в исполняемый элемент для нового элемента кампании
Внесите изменения в схему исходного кода TestSmsCampaignProcessElement (класс, наследник класса CampaignProcessFlowElement). В реализацию метода SafeExecute() добавьте операцию считывания аудитории через объект в свойстве CampaignAudience c типом ICampaignAudience.
// Реализация метода выполнения элемента. protected override int SafeExecute(ProcessExecutingContext context) { // TODO: Реализовать работу отправки СМС-сообщений. // // // Получить аудиторию, которая доступна для обработки этим элементом в данный момент. var audienceSelect = CampaignAudience.GetItemAudienceSelect(CampaignItemId); // // Указать текущий шаг для аудитории выполненным. return CampaignAudience.SetItemCompleted(SchemaElementUId); }