Добрый день, продолжаю эксперименты с community версией. Производится попытка воспроизвести следующий сценарий: в контекстной переменной SelectedUser есть некий выбранный пользователь есть контекстная переменная SelectedUserInitials типа строка, куда хочется записать ФИО выбранного пользователя в нужном специфичном формате в сценариях процесса написано несколько вариантов функций, которые возвращают ФИО в нужном формате string GetSelectedUserInitials(Context context) string GetUserInitials(EleWise.ELMA.Security.Models.User user) в свойствах контекстной переменной SelectedUserInitials указан тип вычисления значения "Сценарий на C#) При этом, при любом из следующих вариантов текста сценария в свойствах контекстной переменной SelectedUserInitials GetSelectedUserInitials(context); GetUserInitials(SelectedUser); Возвращается ошибка о том, что имя функции отсутствует в данном контексте. (для первого варианта также возвращается ошибка об отсутствии context в текущем контексте. Каков принятый в ELMA способ использования собственных функций в сценариях контекстных переменных? Необходимо получить инициалы для нескольких пользователей и написание в каждой контекстной переменной всего кода получения инициалов усложнит поддержку. Workaround в виде выделения отдельного сценария для получения инициалов где-нибудь по пути понятен, но хотелось бы не костылить, а использовать задуманный авторами механизм, если таковой есть. P.S. если верно интерпретирую эту тему, то сценарий контекстной переменной должен быть полноценным в использовании.
Функции из сценариев проекта и настройки поля контекста принадлежат разным классам (P_Название_класса_процесса и P_Название_класса_процесса_Scripts) и разным пространствам имен (EleWise.ELMA.Model.Entities.ProcessContext и EleWise.ELMA.Model.Scripts). В файле настройки контекста ссылки на Model.Scripts нет, поэтому надо прописывать имя функции полностью EleWise.ELMA.Model.Scripts.P_Название_класса_процесса_Scripts.НазваниеФункции. Поскольку класс скриптов не статический, функция должна быть объявлена как статическая, ну или надо откуда то в неё передать экземпляр объекта "Модуль сценариев". А вот насчет желания не костылить, наверное надо начать с более раннего - а зачем в контексте хранить специальное отображение имени пользователя? Для генерации документов по шаблону/отправки сообщений (первое что приходит на ум) можно пользоваться функциями шаблонизатора помоему там было и насчет вытаскивания инициалов
Во-первых, большое спасибо за подробный ответ! Подозревал, что так и придется делать, но надеялся на более прямолинейные варианты. Отображение нужно по следующим соображениям: 1. Как простой пример более сложного случая контекстной переменной, значение которой должно как-то хитро получаться из уже существующих, что было бы удобнее выделить в отдельную функцию, а не вмещать в две видимые строчки в карточке контекста. 2. Вы совершенно правы, используется для генерации документа по шаблону. Навскидку не удалось найти подробной справки, поэтому пришлось решать вот так вот. Спасибо за совет, нашел-таки соответствующую функцию шаблонизатора и переориентировал процесс на нее.
Даже интересно стало какой нибудь конкретный пример такого посмотреть, причем кроме прочего для эффективности этой функции она должна использоваться в двух или более местах, иначе одинаково с точки зрения стоимости где её держать в поле вычисляемом или в коде сценариев. По вычисляемым полям за несколько лет работы с ELMA у меня накопился ряд претензий к ним почему стараюсь их не использовать, ну разве что для формирования наименования у объектов где оно носит формальный характер. 1. Вычисляемое поле или нет визуально непонятно пока не залезешь в его кишки, что вместе с скажем так небыстротой дизайнера доставляет минимум удовольствия. 2. В отличие от версионности процессов настройки свойств не версионируются как я понял, во всяком случае если было невычисляемое поле, ты его сделал вычисляемым - обнулятся/изменятся все значения этого поля в процессах ранних версий. 3. Что-то было не очень устраивающее меня с временем вычисления, не вспомню уже конкретный кейс, но был случай когда вычисляемое поле обновлялось позже чем этого ожидал работающий с формой чел. Сбивало с толку. Поэтому в большинстве случаев предпочтительнее сценарии на изменение значения. Жаль конечно что в community их нет.
Постараюсь не забыть сообщить, как только столкнусь. Пытался думать на будущее ) Основную идею понял, будем ориентироваться на выделенные сценарии, спасибо.