forum.bitel.ru
http://forum.bitel.ru/

Проверка комментария при смене статуса.
http://forum.bitel.ru/viewtopic.php?f=19&t=10466
Страница 1 из 1

Автор:  max [ 27 апр 2015, 14:43 ]
Заголовок сообщения:  Проверка комментария при смене статуса.

Хочу проверять наличие комментария при смене статуса договора, написал вот такой скрипт
Код:
import bitel.billing.server.script.event.*;
import ru.bitel.common.Utils;

void onEvent(event, setup, con, conSlave){
   if(event.getRequest().getParameter("action").equals("changeContractStatus")){
      comment = event.getRequest().getParameter("comment");

      if( Utils.isBlankString(comment) ){
         event.setError( "Пожалуйста укажите комментарий для устанавливаемого статуса", false );
      }
}
}

Повесил на договор, в условиях задал "Перед действием".
И не работает, подскажите плиз в чём может быть проблема?

Автор:  stark [ 27 апр 2015, 14:55 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

А оно точно вызывается? поставьте print в нем.

Автор:  dimOn [ 27 апр 2015, 15:26 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

В каких таких условиях? Версия какая? Если не древняя - надо делать динамическими экшенами.
http://wiki.bitel.ru/index.php/%D0%9F%D ... 0%BE%D0%B2
там есть 100% нужный вам пример про статус договора

Автор:  max [ 28 апр 2015, 16:45 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

stark писал(а):
А оно точно вызывается? поставьте print в нем.

а где этот принт ловить потом?

Автор:  max [ 28 апр 2015, 16:53 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

dimOn писал(а):
В каких таких условиях? Версия какая? Если не древняя - надо делать динамическими экшенами.
http://wiki.bitel.ru/index.php/%D0%9F%D ... 0%BE%D0%B2
там есть 100% нужный вам пример про статус договора

В условиях скрипта (там галочкой выбирается слева)
Версия 6.1

Автор:  stark [ 28 апр 2015, 17:13 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

max писал(а):
stark писал(а):
А оно точно вызывается? поставьте print в нем.

а где этот принт ловить потом?


в логах выполнения скрипта на договоре. там вообще что-то есть ?

Автор:  dimOn [ 28 апр 2015, 17:22 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

Хм? "Условие скрипта" - это конкретное название событие "Перед действием", в смысле, на которое скрипт повешен?

1) Тогда как минимум просто повесить скрипт на событие недостаточно, оно ещё настраивается в конфиге сервера дополнительно.
Но как настраивается:
- все забыли (в том числе за ненадобностью этого способа, т.к. он давно был заменен на дин.экшены и дин.сервисы)
- да никто и не описывал нигде

2) Далее: ваш способ не сработает, т.к. смена статуса в 6.1 делается через веб-сервисы, а не экшенами (так что см. п.4).

3) Даже если бы работало: вы откуда вообще взяли action в виде changeContractStatus? Оно вроде так никогда не называлось (но я не уверен правильно ли я понял что вы хотели написать)

4) Для веб-сервисов способ "скрипт перед действиями" по-моему вообще и не работал, так что всё равно не сработало бы, нет нет нет

Автор:  dimOn [ 28 апр 2015, 17:23 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

Одни проблемы как видите. Правильное, быстрое, рекомендуемое и 100% готовое решение есть по ссылке выше.

Автор:  Phricker [ 29 апр 2015, 11:48 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

Код:
[root@bgbilling actions]# cat ./kernel.xml | grep UpdateContractLimit
                        <action id="10007" mask="module=contract;action=UpdateContractLimit;comment=R:.+?" title="Изменение лимита с указанием комментария"/>
                        <action id="79" mask="module=contract;action=UpdateContractLimit" title="Изменение лимита без указания комментария"/>
                        <action id="10009" mask="module=contract;action=UpdateContractLimitPeriod;comment=R:.+?" title="Временное изменение лимита с указанием комментария"/>
                        <action id="245" mask="module=contract;action=UpdateContractLimitPeriod" title="Временное изменение лимита без изменения комментария"/>

Попробуйте по аналогии. Может получится и без скрипта.

Автор:  dimOn [ 29 апр 2015, 12:21 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

сообщение не выведется)

Автор:  Phricker [ 29 апр 2015, 12:23 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

А большая надпись что установка статуса без комментария запрещена - не приравнивается к сообщению? )

Автор:  dimOn [ 29 апр 2015, 12:26 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

где такая надпись?)

Автор:  Phricker [ 29 апр 2015, 13:51 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

Хотя не выйдет через правила.
Нужно разрабам добавлять описание
Код:
<ns5:changeContractStatus xmlns:ns5="http://service.common.status.contract.kernel.bgbilling.bitel.ru/" xmlns:common="http://common.bitel.ru" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><cid>2</cid><statusId>2</statusId><dateFrom>2015-04-29T00:00:00+03:00</dateFrom><comment>22222222222</comment></ns5:changeContractStatus>

Чтобы потом по нему можно было обращаться через expression.

Тогда да, только так как по ссылке предоставленной Димоном.
Но на 6.2 она у меня к примеру не завелась, а 6.1 тестового нет.

Добавил в конфиг
Код:
dynservice:ru.bitel.bgbilling.kernel.contract.status.ContractStatusMonitorService=ru.test.ContractStatusMonitorServiceImpl


Добавил в динкод
Код:
package ru.test;

import java.util.Date;

import javax.jws.WebService;

import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.common.BGMessageException;
import ru.bitel.bgbilling.kernel.contract.status.common.service.ContractStatusMonitorService;
import ru.bitel.common.Utils;

@WebService(endpointInterface = "ru.bitel.bgbilling.kernel.contract.status.common.ContractStatusMonitorService")
public class ContractStatusMonitorServiceImpl
        extends ru.bitel.bgbilling.kernel.contract.status.server.service.ContractStatusMonitorServiceImpl
        implements ContractStatusMonitorService
{
    @Override
    public void changeContractStatus( int[] cids, int statusId, Date dateFrom, Date dateTo, String comment )
            throws BGException
    {
        System.err.print("BLABLABLABLA");
        if( Utils.isBlankString( comment ) )
        {
            throw new BGMessageException( "Введите комментарий" );
        }
        super.changeContractStatus(cids, statusId, dateFrom, dateTo, comment);
    }
}


Перезагрузил сервер
И при входе в статус договора получаю
Изображение

Код:
com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 500: Internal Server Error
   at com.sun.xml.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:314)
   at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:265)
   at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:184)
   at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:137)
   at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
   at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
   at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
   at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
   at com.sun.xml.ws.client.Stub.process(Stub.java:323)
   at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161)
   at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:113)
   at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
   at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144)
   at com.sun.proxy.$Proxy50.getStatusList(Unknown Source)
   at ru.bitel.bgbilling.kernel.contract.status.client.StatusControlPanel$1.actionPerformedImpl(StatusControlPanel.java:71)
   at ru.bitel.common.client.AbstractBGUPanel.actionPerformed(AbstractBGUPanel.java:237)
   at ru.bitel.common.client.AbstractBGUPanel$DefaultAction.actionPerformed(AbstractBGUPanel.java:91)
   at ru.bitel.common.client.AbstractBGUPanel.performAction(AbstractBGUPanel.java:541)
   at ru.bitel.common.client.AbstractBGUPanel.performAction(AbstractBGUPanel.java:522)
   at ru.bitel.common.client.AbstractBGUPanel.performAction(AbstractBGUPanel.java:517)
   at bitel.billing.module.contract.status.ContractSubPanel_Status.setData(ContractSubPanel_Status.java:80)
   at bitel.billing.module.contract.ContractPanel_Parameters$5.run(ContractPanel_Parameters.java:645)
   at java.awt.event.InvocationEvent.dispatch(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$500(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)

Автор:  Phricker [ 29 апр 2015, 13:53 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

Но там скорее всего что то переименовалось - а что, лень искать.

Код:
server 04-29/10:51:31 ERROR [http-bio-0.0.0.0-8080-exec-5] JaxWSAdapter - class: ru.bitel.bgbilling.kernel.contract.status.common.ContractStatusMonitorService could not be found
com.sun.xml.ws.model.RuntimeModelerException: class: ru.bitel.bgbilling.kernel.contract.status.common.ContractStatusMonitorService could not be found
        at com.sun.xml.ws.model.RuntimeModeler.getPortTypeName(RuntimeModeler.java:1405)
        at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:164)
        at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:513)
        at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:568)
        at ru.bitel.bgbilling.kernel.container.ws.server.JaxWSAdapter.createWsEndpoint(JaxWSAdapter.java:224)
        at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.getTarget(AbstractJaxWsHandler.java:111)
        at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.getTarget(AbstractJaxWsHandler.java:83)
        at ru.bitel.bgbilling.kernel.container.ws.server.JaxWSAdapter.handle(JaxWSAdapter.java:285)
        at bitel.billing.server.Executer.doPost(SourceFile:163)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

Автор:  dimOn [ 29 апр 2015, 16:19 ]
Заголовок сообщения:  Re: Проверка комментария при смене статуса.

да вроде должно на 6.1 как раз работать.
перекомпилировать, перезагрузить сервер?

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/