forum.bitel.ru http://forum.bitel.ru/ |
|
Проверка условия по значению параметра типа list (CRM) http://forum.bitel.ru/viewtopic.php?f=49&t=11290 |
Страница 1 из 1 |
Автор: | zavndw [ 28 янв 2016, 15:47 ] |
Заголовок сообщения: | Проверка условия по значению параметра типа list |
Надо сделать проверку условия по значению параметра процесса типа list. Используемая схема: При создании процесса используется мастер в котором заполняется 2 параметра типа list, мне надо при создании проверять введенный id подходит он под условие обработки или нет. В доке есть Код: processParam параметры изменяющегося процесса и Код: listValueIds но у меня 2 параметра, как выставить условие на id нужно параметра?
|
Автор: | Администратор [ 29 янв 2016, 01:41 ] |
Заголовок сообщения: | Re: Проверка условия по значению параметра типа list |
Что-то вроде должно сработать: Код: <з> =~ processParam.listValueIds(<код первого параметра>) or <з1> =~ processParam.listValueIds(<код второго параметра>) з1 и з2 - числа которые входят в значения первого параметра или второго. Точнее не могу сказать, т.к. условие проверки до конца не понял. |
Автор: | zavndw [ 29 янв 2016, 06:37 ] |
Заголовок сообщения: | Re: Проверка условия по значению параметра типа list |
У меня в процессе используется 2 параметра типа list с кодами 42,65. Условие надо для id 42 только. У id 42 значение 1,2,3,4,5,6, в условие должны попасть значения 1,2,3 параметра id 42. Попробовал в условие все попадает. В конфиге типа процесса Код: onProcessEvent.1.doExpression но в доке только ifExpression, а как do работает?
|
Автор: | Администратор [ 30 янв 2016, 02:15 ] |
Заголовок сообщения: | Re: Проверка условия по значению параметра типа list |
Вам нужен ifExpression, doExpression ещё не документирован. Суть его понятна из названия - модификация процесса, то же что commands, но более универсально, с использованием JEXL. В вашем случае должно сработать следующее выражение: Код: .ifExpression=cu.intersection(processParam.listValueIds(42), [1,2,3]).size() > 0 Ссылки: http://docs.bitel.ru/pages/viewpage.act ... D0%B8-JEXL https://commons.apache.org/proper/commo ... Utils.html |
Автор: | zavndw [ 06 фев 2016, 18:31 ] |
Заголовок сообщения: | Re: Проверка условия по значению параметра типа list |
Получилось вот так Код: onProcessEvent.1.events=createFinished onProcessEvent.1.ifExpression=cu.intersection(processParam.listValueIds(26), [1,2,3]).size() > 0 onProcessEvent.1.doExpression=<<END phone=processParam.getParamPhoneNoFormat(20); if(phone) { mtsc.sendSms(phone, "Заявка №".concat( process.getId().toString() ).concat( " принята" )); } END Получаю ошибку Код: 02-06/22:30:38 ERROR [http-bio-9088-exec-280] ProcessAction - ru.bgcrm.dao.expression.Expression.check@109![3,59]: 'cu.intersection(processParam.listValueIds(26), [ 1, 2, 3 ]).size() > 0;' unknown, ambiguous or inaccessible method intersection
org.apache.commons.jexl2.JexlException$Method: ru.bgcrm.dao.expression.Expression.check@109![3,59]: 'cu.intersection(processParam.listValueIds(26), [ 1, 2, 3 ]).size() > 0;' unknown, ambiguous or inaccessible method intersection at org.apache.commons.jexl2.Interpreter.call(Interpreter.java:1062) at org.apache.commons.jexl2.Interpreter.visit(Interpreter.java:1100) at org.apache.commons.jexl2.parser.ASTMethodNode.jjtAccept(ASTMethodNode.java:18) at org.apache.commons.jexl2.Interpreter.visit(Interpreter.java:1317) at org.apache.commons.jexl2.parser.ASTReference.jjtAccept(ASTReference.java:18) at org.apache.commons.jexl2.Interpreter.visit(Interpreter.java:793) at org.apache.commons.jexl2.parser.ASTGTNode.jjtAccept(ASTGTNode.java:18) at org.apache.commons.jexl2.Interpreter.interpret(Interpreter.java:232) at org.apache.commons.jexl2.ExpressionImpl.evaluate(ExpressionImpl.java:65) at ru.bgcrm.dao.expression.Expression.check(Expression.java:109) at ru.bgcrm.event.listener.DefaultProcessChangeListener$ConfigRule.processEvent(DefaultProcessChangeListener.java:376) at ru.bgcrm.event.listener.DefaultProcessChangeListener.processEvent(DefaultProcessChangeListener.java:191) at ru.bgcrm.event.listener.DefaultProcessChangeListener.access$1(DefaultProcessChangeListener.java:176) at ru.bgcrm.event.listener.DefaultProcessChangeListener$2.notify(DefaultProcessChangeListener.java:71) at ru.bgcrm.event.listener.DefaultProcessChangeListener$2.notify(DefaultProcessChangeListener.java:1) at ru.bgcrm.event.EventProcessor.processingEvent(EventProcessor.java:205) at ru.bgcrm.event.EventProcessor.processEvent(EventProcessor.java:140) at ru.bgcrm.event.EventProcessor.processEvent(EventProcessor.java:286) at ru.bgcrm.struts.action.ProcessAction.processFinishCreateTmp(ProcessAction.java:837) at sun.reflect.GeneratedMethodAccessor487.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at ru.bgcrm.struts.action.BaseAction$InvokerCon.invoke(BaseAction.java:535) at ru.bgcrm.struts.action.BaseAction.dispatchMethod(BaseAction.java:240) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170) at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at ru.bgcrm.servlet.filter.SetRequestParamsFilter.doFilter(SetRequestParamsFilter.java:43) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at ru.bgcrm.servlet.filter.AuthFilter.doFilter(AuthFilter.java:150) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at ru.bgcrm.servlet.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) |
Автор: | Администратор [ 10 фев 2016, 02:18 ] |
Заголовок сообщения: | Re: Проверка условия по значению параметра типа list (CRM) |
Поправка. Должно работать в приведённом ниже виде, но требуется обновить систему. Пришлось перейти на новую версию библиотеки JEXL. Код: onProcessEvent.1.events=createFinished
onProcessEvent.1.ifExpression=cu.intersection(processParam.listValueIds(26), {1,2,3}).size() > 0 onProcessEvent.1.doExpression=<<END phone=processParam.getParamPhoneNoFormat(20); if(phone) { mtsc.sendSms(phone, "Заявка №".concat( process.getId().toString() ).concat( " принята" )); } END |
Автор: | zavndw [ 10 фев 2016, 14:40 ] |
Заголовок сообщения: | Re: Проверка условия по значению параметра типа list (CRM) |
Обновился и работает. Спасибо! |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |