Здравствуйте, коллеги. Нужно помощь в организации тестирования стратегий. В компании развернуто решение для collection. Имеется потребность тестировать стратегии на предмет эффективности согласно подходу А/Б тестирования, он же Champion-Challenger. Стратегий более 25 шт.  

    Основная проблема как сделать слепую (рандомную) выборку согласно условиям теста и при этом количество клиентов должно быть одинаковым.
    Например нужно взять 30% новых клиентов для конкретной стратегии и из них по 15 % это тестовая и контрольная группа. И на каждой группе применить разные стратегии, старую и новую, Champion-Challenger.  

     

    Для рандомизации пробовал использовать последние цифры дня рождения, "заканчивается на 1" и т.п., но такие условия дают выборку только по 10%. Как вариант ИНН клиента, но насколько знаю ИНН не совсем рандомен. Кроме того выборка дает разное количество клиентов для отработки. Например, 386 и 315 т.е. с досточно большой разницей, что "смажет" результат.

    Как вариант генерировать еще 1му полю 0 и 1 рандомно, что бы поделить на 2 группы.

     

    Вопросы:

    1. Есть ли в Сreatio функционал для автоматизированного А/Б тестирования? Есть информация, что есть функционал для решения Маркетинг, но здесь немного другая ситуация. Т.к. клиенты заходят залповой загрузкой из основной учетной системы, а не извне в рандомном порядке и нельзя предсказать количество клиентов для тестируемой стратегии.
    2. Если у кого нибудь опыт в подобном тестировании в среде creatio?
    3. Есть ли у кого опыт в рандомизации?
    4. Так же вопрос как оценить результаты теста. Т.е. как сформировать отчет по выборке. Понятно, что в Creatio должны быть id теста как минимум привязанный к клиенту. И возможно в соотношении 1н ко многим. 

     

    Из доступных параметров: дата рождения клиента, дата выхода на просрочку, ИНН, сотовый телефон.  

     

    Пример условий стратегии на скриншоте.

    По продукту вроде Financial Services.

     

    Прикрепленные файлы

    Нравится

    1 комментарий

    В версии 7.17.3 появился новый элемент [ Произвольное распределение ], который позволяет случайным образом направить участников по разным веткам кампании. Данный элемент удобно использовать для контрольных групп, сплит-тестов. 

    Показать все комментарии

    Как получить и обработать результирующие параметры при вызове БП из кода?

    В версии 7.17.1 обещали получение параметров из интерпретируемого процесса, но примеров как и что нету. Запуск я проводил с помощью класса FlowEngine и метода RunProcess.
    В sdk по классу flowengine ничего не добавилось.

    Нравится

    3 комментария
    Лучший ответ

    FlowEngine - устаревший класс и он не рекомендуется к использованию.

    Для работы с процессами лучше использовать экземпляр IProcessExecutor который можно получить из UserConnection. Пример запуска процесса с получением одного параметра:

    string processName = "UsrCustomProcess";
    string paramName = "UserProcessParameter";
    IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
    // Необходимо указание типа параметра
    int result = processExecutor.Execute<int>(processName, paramName);

    Пример запуска с получением нескольких параметров:

    string processName = "UsrCustomProcess";
    string[] paramNames = { "UserProcessParameter0", "UserProcessParameter1" };
    IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
    // Второй аргумент - список входящих параметров
    ProcessDescriptor processDescriptor = processExecutor.Execute(processName, new Dictionary<string, string>(), paramNames);
    // Получение параметров
    IReadOnlyDictionary<string, object> result = processDescriptor.ResultParameterValues;

     

    FlowEngine - устаревший класс и он не рекомендуется к использованию.

    Для работы с процессами лучше использовать экземпляр IProcessExecutor который можно получить из UserConnection. Пример запуска процесса с получением одного параметра:

    string processName = "UsrCustomProcess";
    string paramName = "UserProcessParameter";
    IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
    // Необходимо указание типа параметра
    int result = processExecutor.Execute<int>(processName, paramName);

    Пример запуска с получением нескольких параметров:

    string processName = "UsrCustomProcess";
    string[] paramNames = { "UserProcessParameter0", "UserProcessParameter1" };
    IProcessExecutor processExecutor = UserConnection.ProcessEngine.ProcessExecutor;
    // Второй аргумент - список входящих параметров
    ProcessDescriptor processDescriptor = processExecutor.Execute(processName, new Dictionary<string, string>(), paramNames);
    // Получение параметров
    IReadOnlyDictionary<string, object> result = processDescriptor.ResultParameterValues;

     

    n.isaev,

    А как передать в словарь <стринг, стринг> в качестве стринга коллекцию элементов как параметр? 

    Андрей, Вы можете сериализовать коллекцию в JSON и передать как параметр.

    Показать все комментарии