forum.bitel.ru http://forum.bitel.ru/ |
|
не понимаю как вообще это работает. http://forum.bitel.ru/viewtopic.php?f=49&t=11284 |
Страница 1 из 1 |
Автор: | Galkov [ 25 янв 2016, 13:02 ] |
Заголовок сообщения: | Re: Разные мелочи (CRM) |
совсем не мелочью было бы объяснение логических дейсвий под символами =~ и !~ особенно это актуально, ввиду того что логически в синтаксе выражений не разобраться. вот почему например - process.getStatusId() !=10 and 1 !~ user.getGroupIds() - нет ошибки, а 3 !~ process.getStatusId() ..... - синтаксическая ошибка 3 =~ process.getStatusId() ..... - синтаксическая ошибка почему результаты из функций включаются в сравнение логически по-разному? мне нужно например правило запрета правки по всех статусах кроме одного для одной группы с возможностью править в любом статусе для всех остальных групп. перепробавал всё - никак не могу понять как описать имеющимся функционалом. |
Автор: | Galkov [ 25 янв 2016, 16:34 ] |
Заголовок сообщения: | не понимаю как вообще это работает. |
http://docs.bitel.ru/pages/viewpage.act ... Id=6193536 процесс проходит по не нескольким статусам(ну скажем 10,11,12). группе пользователей(ID=1), что его заводит запрещено править процесс после того как он ушёл из начального статуса(ID=10). пишу в настройке типов процессов: onProcessEvent.19.events=paramChanging onProcessEvent.19.checkExpression=1 =~ user.getGroupIds() and process.getStatusId() !=10 onProcessEvent.19.checkErrorMessage=После создания процесса редактировать вам нельзя. --------------------------------------------------- работает не правильно. запрещает пользоватлям И ДРУГИХ ГРУПП, которые не входят в id=1 редактировать. попытки менять условия не приводят к нужному результату. пробовал вообще разобраться с логикой работы этой фигни. так onProcessEvent.19.checkExpression=1 !~ user.getGroupIds() ещё вроде работает, а вот с оператором and он по-моему что-то другое сравнивает. но никак не два условия -ПОСЛЕ- вычислений состояния в этих двух условиях. |
Автор: | Администратор [ 26 янв 2016, 12:20 ] |
Заголовок сообщения: | Re: не понимаю как вообще это работает. |
Цитата: почему результаты из функций включаются в сравнение логически по-разному? Потому что операции с тильдой проверяют на (не)вхождение элемент в коллекцию элементов. Цитата: 3 !~ process.getStatusId() ..... - синтаксическая ошибка Справа должна быть коллекция. Цитата: 3 =~ process.getStatusId() ..... - синтаксическая ошибка То же самое. |
Автор: | Администратор [ 26 янв 2016, 12:25 ] |
Заголовок сообщения: | Re: не понимаю как вообще это работает. |
Попробуйте так: Цитата: onProcessEvent.20.checkExpression=su.isNotBlank(process.getDescription()) JEXL - это фактически Java, а в терминах JAVA вы пытались сравнить _ссылку_ на строку, которая является описанием со ссылкой на вновь созданную пустую строку. Обычно это неверный способ. Это два разных объекта в хипе и ссылки будут на разные участки памяти. |
Автор: | Администратор [ 26 янв 2016, 12:29 ] |
Заголовок сообщения: | Re: не понимаю как вообще это работает. |
По поводу вашей фигни тоже ничего не понял, прошу объяснить подробнее, что вы добиваетесь. Возможно, что проблема в приоритете операций, где-то надо скобок расставить. |
Автор: | Galkov [ 26 янв 2016, 17:51 ] |
Заголовок сообщения: | Re: не понимаю как вообще это работает. |
Администратор писал(а): По поводу вашей фигни тоже ничего не понял. ну может быть, зато мне почему-то очень сильно помогло ![]() ![]() ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |