BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 01 ноя 2024, 04:55

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 28 янв 2016, 15:47 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 27 мар 2012, 11:59
Сообщения: 2677
Карма: 72
Надо сделать проверку условия по значению параметра процесса типа list.
Используемая схема: При создании процесса используется мастер в котором заполняется 2 параметра типа list, мне надо при создании проверять введенный id подходит он под условие обработки или нет.
В доке есть
Код:
processParam
параметры изменяющегося процесса и
Код:
listValueIds
но у меня 2 параметра, как выставить условие на id нужно параметра?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 янв 2016, 01:41 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Что-то вроде должно сработать:
Код:
<з> =~ processParam.listValueIds(<код первого параметра>) or <з1> =~ processParam.listValueIds(<код второго параметра>)

з1 и з2 - числа которые входят в значения первого параметра или второго.
Точнее не могу сказать, т.к. условие проверки до конца не понял.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 янв 2016, 06:37 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 27 мар 2012, 11:59
Сообщения: 2677
Карма: 72
У меня в процессе используется 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 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Вам нужен 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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 фев 2016, 18:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 27 мар 2012, 11:59
Сообщения: 2677
Карма: 72
Получилось вот так
Код:
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 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Поправка. Должно работать в приведённом ниже виде, но требуется обновить систему.
Пришлось перейти на новую версию библиотеки 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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 фев 2016, 14:40 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 27 мар 2012, 11:59
Сообщения: 2677
Карма: 72
Обновился и работает. Спасибо!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.046s | 32 Queries | GZIP : On ]