Использование методов расширения в элементе БП формула
Здравствуйте!
Возможно ли реализовать использование методов расширения в элементе БП формула.
Столкнулся с таким случаем нужно определить вхождение текущего времени в диапазон.
Написал метод расширения:
namespace Terrasoft.Configuration { public static class AbDateTimeExtensions { public static bool IsInRange(this DateTime dateToCheck, DateTime startDate, DateTime endDate) { return dateToCheck.TimeOfDay >= startDate.TimeOfDay && dateToCheck.TimeOfDay < endDate.TimeOfDay; } } }
Но при использовании его в формуле выводит ошибку - http://prntscr.com/mwbc1w
Понравилась ли вам эта идея?
В старом дизайнере процессов можно было в формуле просто вызвать функцию, написанную на C# в том же БП. Сейчас так нельзя. В Вашем случае для такого вычисления вместо блока-формулы можно использовать блок-скрипт, где считать значения из параметров и вызвать функцию, а результат записать в ещё один параметр.
Очень жаль, что нельзя так. Вместо использования одной строчки текста в параметре элемента приходится заводить параметр процесса, добавлять задание сценарий, ждать его публикации и вообще выполнять много лишних действий.
Пащенко Александр Сергеевич,
Хорошая идея. Давайте её залайкаем и, возможно, когда-нибудь эта возможность в bpm'online появится
Пащенко Александр Сергеевич, без компиляции бы в любом случае не обошлось. В старом движке процессов компилировать нужно было всегда, а в новом — только если есть элементы на C#.
Зверев Александр,
Так тут же речь не о компиляции, а о методах расширения в базовых элементах процесса, которые единоразово дорабатываются и потом используются везде, где надо, а не каждый раз выполняется дублирование кода в элементе скрипт!
Если какую-то логику нужно часто применять в процессе, можно оформить её в UserTask.
Алла Савельева,
А смысл? Проще делать хэлперы (схема исходного кода) и их использовать в скриптасках. Для чегото более навороченного можно сделать свои действия процесса.