BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 17 июн 2025, 18:05

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




Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 14:27 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
не хотелось бы... он там не используется, а передавать просто так...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 14:50 
skn писал(а):
не хотелось бы... он там не используется, а передавать просто так...

Если учесть последние изменения, то передача cid тут вполне уместна. :)
Вот сами посудите. Мне необходимо обработать сохранение задачи. Получается так, что придется учитывать то, откуда задача закрывается либо из договора, либо напрямую из плагина. Хотя по сути делается одно и тоже.
Можно конечно и с рематингом голову поломать, вот только быстро не получится и слишком мудрено будет.


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 15:08 
Не в сети

Зарегистрирован: 16 ноя 2007, 16:11
Сообщения: 829
Карма: 49
SetMessage вместо SetError это было легкое семантическое уточнение. :)
Об экшинах вне GUI вопросы периодически поднимаются.
Развивать дискуссию в эту сторону наверное пока не нужно. Полученный функционал и так уже серьезен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 15:57 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
lda писал(а):
skn писал(а):
не хотелось бы... он там не используется, а передавать просто так...

Если учесть последние изменения, то передача cid тут вполне уместна. :)
Вот сами посудите. Мне необходимо обработать сохранение задачи. Получается так, что придется учитывать то, откуда задача закрывается либо из договора, либо напрямую из плагина. Хотя по сути делается одно и тоже.
Можно конечно и с рематингом голову поломать, вот только быстро не получится и слишком мудрено будет.


вот поэтому и был предложен второй вариань с ремапингом, что бы не добавлять ко всем акшенам...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 16:25 
Прошу тогда подсказать как создать пакет для ремапинга.

Я должен сделать что то вроде:
Код:
package mypackage;
public class MyAction extends bitel.billing.plugins.crm.server.register.ActionUpdateRegisterTask
{
       @Override
        public void doAction() throws SQLException
        {

          super.doAction();
 
        }
}


Можно ли до super.doAction(); вызвать функцию из библиотеки скриптов?


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 16:30 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Код:
import bitel.billing.server.script.bean.*;

ScriptMachineManager.getManager().getScriptForLibrary( name ).invoke( method, args[] );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 17:05 
Amir писал(а):
Код:
import bitel.billing.server.script.bean.*;

ScriptMachineManager.getManager().getScriptForLibrary( name ).invoke( method, args[] );

Спасибо.

Получается так:
Код:
package lda;
import bitel.billing.server.script.bean.*;
public class ActionUpdateRegisterTask extends bitel.billing.plugins.crm.server.register.ActionUpdateRegisterTask
{
       @Override
        public void doAction() throws SQLException
        {
        
     String result = ScriptMachineManager.getManager().getScriptForLibrary( "test" ).invoke( "test", args[] );
     if (result == null)
     {
            super.doAction();
     }else{
       //Нужно вывести сообщение об ошибке, сообщение находиться в result
     };
        }
}


Мне необходимо передать в функцию библиотеки скриптов параметры задачи со всеми параметрами и выдать сообщение об ошибке, если result не null.
Подскажите пожалуйста как это сделать.


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 17:12 
И подскажите пожалуйста, как потом из всего этого создать пакет.


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 18:11 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
1) скомпилировать класс

Код:
../jdk/bin/javac -cp ./:lib/* lda/ActionUpdateRegisterTask.java


2) на сервере в папке с биллингом сделать папку classes, в ней в вашем случае подпапку lda и в нее положить скомпиленный файл класса - ActionUpdateRegisterTask.class

3) поменять скрипт запуска в строке

Код:
CLASSPATH=${BGBILLING_SERVER_DIR}:${BGBILLING_SERVER_DIR}/lib/*


на

Код:
CLASSPATH=${BGBILLING_SERVER_DIR}:${BGBILLING_SERVER_DIR}/classes:${BGBILLING_SERVER_DIR}/lib/*


4) ребутнуть сервер и прописать мапинг


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 18:22 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
lda писал(а):
Код:
package lda;
import bitel.billing.server.script.bean.*;
public class ActionUpdateRegisterTask extends bitel.billing.plugins.crm.server.register.ActionUpdateRegisterTask
{
       @Override
        public void doAction() throws SQLException
        {
          Objest[] args = new Object[сколько_параметров_у_метода_test];
          args[0] = значение_первого_параметра;
          args[1] = значение_второго_параметра;
          ....
          String result = ScriptMachineManager.getManager().getScriptForLibrary( "test" ).invoke( "test", args[] );
          if (result == null)
     {
            super.doAction();
     }else{
            setErrorStatus( result );
     };
        }
}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 авг 2009, 19:12 
Спасибо.
По поводу параметров задачи, я имел ввиду как получить параметры задачи, которые пришли от BillingClient в url запросе.
Т.е. например мне нужно узнать какой статус установил пользователь. Я его как то получаю и сравниваю с тем что в базе. И если пользователю запрещено менять статус по каким то причинам, то я генерю ошибку.
Так вот как узнать статус, который установил пользователь?


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 00:23 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
если в классе, то как то так:

Код:
int status = getIntParameter( "status", -1 );


где -1, значение по умолчанию если параметра status не окажеться запросе или он будет не числовым.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 00:24 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
текущий код акшена updateTask
Код:
package ru.bitel.bgbilling.plugins.crm.server.register;



import java.sql.SQLException;

import java.util.Date;



import org.w3c.dom.Element;



import ru.bitel.bgbilling.plugins.crm.common.model.RegisterGroup;

import ru.bitel.bgbilling.plugins.crm.common.model.RegisterTask;

import ru.bitel.bgbilling.plugins.crm.server.bean.event.RegisterTaskClosedEvent;

import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterGroupManager;

import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterTaskManager;

import bitel.billing.common.CommonUtils;

import bitel.billing.server.script.bean.event.EventProcessor;

import bitel.billing.server.util.MailMsg;



public class ActionUpdateRegisterTask extends ActionBase

{

   @Override

    public void doAction()

      throws SQLException

   {

      int id = getIntParameter( "id", -1 );

      int status = getIntParameter( "status", 0 );



        Date now = new Date();

      RegisterTask task = null;

      boolean closeEvent = false;

        RegisterTaskManager manager = new RegisterTaskManager( con );



      if ( id < 0 )

      {

         task = new RegisterTask();

         task.setID( -1 );

         task.setContractID( cid );

         task.setOpenUserID( userID.intValue() );

         task.setOpenTime( new Date() );

           task.setTypeID( getIntParameter( "type", 0 ) );

      }

      else

      {

         task = manager.getTaskByID( id );         



         // статус был изменен

         if( task.getStatus() != status )

         {

            switch ( status )

            {

               case RegisterTask.STATUS_OPEN:

               {

                  task.setOpenUserID( userID.intValue() );

                  task.setOpenTime( new Date() );

                  break;

               }



               case RegisterTask.STATUS_ACCEPTED:

               {

                  task.setAcceptUserID( userID.intValue() );

                  task.setAcceptTime( new Date() );                       

                  break;

               }



               case RegisterTask.STATUS_CLOSED:

               {

                  task.setCloseUserID( userID.intValue() );

                  task.setCloseTime( new Date() );

                  closeEvent = true;

                  break;

               }

            }

         }

      }



      task.setTargetDate( getDateParameter( "target_date" ) );

      task.setExecuteDate( getDateParameter( "execute_date" ) );

       

        // проверка дат при закрытии

        if ( status == RegisterTask.STATUS_CLOSED )

        {

            String checkResult = checkCloseDates( now, task );

            if ( checkResult != null )

            {

                setErrorStatus( checkResult );

                return;

            }

        }

        else if ( status == RegisterTask.STATUS_ACCEPTED )

        {

            String checkResult = checkAcceptDates( now, task );

            if ( checkResult != null )

            {

                setErrorStatus( checkResult );

                return;

            }

        }



        task.setLastmodUserID( userID );

        task.setLastmodTime( new Date() );

        task.setAddressParamID( getIntParameter( "apid", 0 ) );

        task.setAddressObjectId( getIntParameter( "aObjectId", 0 ) );

        task.setStatus( status );

        task.setExecutors(  CommonUtils.stringToIntegerList( getParameter( "executors" ) ) );

        task.setGroupID( getIntParameter( "group", 0 ) );

        task.setComment( getParameter( "comment", "" ) );

        task.setResolution( getParameter( "resolution", "" ) );



        manager.updateTask( task );

        manager.updateExecutorList( task );

       

        if ( closeEvent )

        {

            // отправка сообщения

            EventProcessor.getProcessor().addEvent( new RegisterTaskClosedEvent( plugin.getPluginUID(), task ) );

        }



      if ( task != null && getParameter( "send.mail" ) != null )

      {

         sendRegisterEmail( task, getSubject( task ) );

      }

      

      Element problem = createElement( rootNode, "task" );

      problem.setAttribute( "id", String.valueOf( task.getID() ) );      

   }

   

    private String getSubject( RegisterTask task )

    {

        String pattern = pluginSetup.getStringValue( "register.task.mail.subject", setup.getStringValue( "register.task.mail.subject", "Отчет по задаче" ) );

        try

        {

            if ( pattern.indexOf( "${group}" ) >= 0 )

            {

                RegisterGroup group = new RegisterGroupManager( con ).getGroupByID( task.getGroupID() );

                if ( group != null )

                {

                    pattern = pattern.replaceAll( "\\$\\{group\\}", group.getTitle() );

                }

            }

            if ( pattern.indexOf( "${type}" ) >= 0 )

            {

                pattern = pattern.replaceAll( "\\$\\{type\\}", getTaskType( task.getTypeID() ) );

            }

        }

        catch( Exception ex )

        {

            ex.printStackTrace();

        }

        return pattern;

    }





   protected void sendRegisterEmail( RegisterTask task, String subject )

      throws SQLException

   {

      RegisterGroup group = new RegisterGroupManager( con ).getGroupByID( task.getGroupID() );



      if ( group != null && notEmptyString( group.getEmail() ) )

      {

         // высылка извещения группе

         MailMsg msg = new MailMsg( setup );



         String message = createRegisterReport( task, group, "register_task.xsl" );

         msg.sendMessage( group.getEmail(), subject, message );

      }

      else

      {

         setErrorStatus( "У группы нет почтового адреса!" );

      }

   }

}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 11:45 
Спасибо.

Не получается скомпилить:
Код:
lda:/usr/local/BGBillingServer# /usr/lib/jdk/bin/javac -cp ./:lib/* lda/ActionUpdateRegisterTask.class
javac: invalid flag: lda/ActionUpdateRegisterTask.class
Usage: javac <options> <source files>
use -help for a list of possible options


Что я делаю не так?


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 12:26 
Не в сети

Зарегистрирован: 16 ноя 2007, 16:11
Сообщения: 829
Карма: 49
":" там точно должно быть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 14:12 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Код:
lda:/usr/local/BGBillingServer# /usr/lib/jdk/bin/javac -cp ./:lib/* lda/ActionUpdateRegisterTask.java


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 14:14 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
vdd писал(а):
":" там точно должно быть?


1) в unix ДВОЕТОЧИЕ, в windows ТОЧКА С ЗАПЯТОЙ
2) -cp ./:lib/* - означает текущий каталог и все из каталога lib


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 14:23 
Не в сети

Зарегистрирован: 16 ноя 2007, 16:11
Сообщения: 829
Карма: 49
Тогда возможно кавычки нужны для ./:lib/*


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 14:25 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
vdd писал(а):
Тогда возможно кавычки нужны для ./:lib/*


нет, у него ругается на неправильное расширение файла, должно быть JAVA, а у него CLASS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 14:33 
Теперь не находит пакет:
Код:
lda:/usr/local/BGBillingServer# /usr/lib/jdk/bin/javac -cp ./:lib/* lda/ActionUpdateRegisterTask.java
lda/ActionUpdateRegisterTask.java:4: package bitel.billing.plugins.crm.server.register does not exist
public class ActionUpdateRegisterTask extends bitel.billing.plugins.crm.server.register.ActionUpdateRegisterTask
                                                                                       ^
lda/ActionUpdateRegisterTask.java:10: cannot find symbol
symbol  : variable super
location: class lda.ActionUpdateRegisterTask
        super.doAction();
        ^
lda/ActionUpdateRegisterTask.java:6: method does not override or implement a method from a supertype
    @Override
    ^
3 errors



Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 14:40 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
1) в каталоге /usr/local/BGBillingServer делаешь папку lda и в нее кладешь ActionUpdateRegisterTask.java

2) запускаешь
Код:
 /usr/lib/jdk/bin/javac -cp ./:lib/* lda/ActionUpdateRegisterTask.java
из папки /usr/local/BGBillingServer

3) если скомпилиться без ошибок, в папке lda должен появиться файл ActionUpdateRegisterTask.class копируешь его в папку /usr/local/BGBillingServer/classes/lda/

4) меняешь скрипт запуска, как прописано выше и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 14:42 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
замени
Код:
public class ActionUpdateRegisterTask extends bitel.billing.plugins.crm.server.register.ActionUpdateRegisterTask


на

Код:
public class ActionUpdateRegisterTask extends ru.bitel.billing.plugins.crm.server.register.ActionUpdateRegisterTask


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 авг 2009, 14:53 
skn писал(а):
1) в каталоге /usr/local/BGBillingServer делаешь папку lda и в нее кладешь ActionUpdateRegisterTask.java

2) запускаешь
Код:
 /usr/lib/jdk/bin/javac -cp ./:lib/* lda/ActionUpdateRegisterTask.java
из папки /usr/local/BGBillingServer



Вроде бы все так и делаю:
Код:
lda:/usr/local/BGBillingServer# /usr/lib/jdk/bin/javac -cp ./:lib/* lda/ActionUpdateRegisterTask.java
lda/ActionUpdateRegisterTask.java:3: package ru.bitel.billing.plugins.crm.server.register does not exist
public class ActionUpdateRegisterTask extends ru.bitel.billing.plugins.crm.server.register.ActionUpdateRegisterTask
                                                                                          ^
lda/ActionUpdateRegisterTask.java:9: cannot find symbol
symbol  : variable super
location: class lda.ActionUpdateRegisterTask
        super.doAction();
        ^
lda/ActionUpdateRegisterTask.java:5: method does not override or implement a method from a supertype
    @Override
    ^
3 errors


Но все равно не находит он библиотеки.


Может быть вы сделаете для нас ремапинг, который будет вызывать событие "До выполнения action" при сохранении задачи и зачтете обращение в HelpDesk? :)


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 авг 2009, 10:40 
up


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 авг 2009, 10:56 
up


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 авг 2009, 12:33 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
добавил в очередь задач


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CRM - Задачи
СообщениеДобавлено: 21 янв 2010, 13:46 
>>реализовал второй вариант, для тех кто умеет програмировать на java, в конфиге задается рематинг

Возможно ли таким способом переопределить данный экшен?
Код:
bitel.billing.server.contract.action.ActionUpdateContractLimitPeriod

"Ремап" в данном случае должен быть следующим?
Код:
action.remap_bitel.billing.server.contract_ActionUpdateContractLimitPeriod=mypackage.myAction


Вернуться к началу
  
 
 Заголовок сообщения: Re: CRM - Задачи
СообщениеДобавлено: 21 янв 2010, 16:02 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Код:
action.remap_contract_ActionUpdateContractLimitPeriod=mypackage.myAction


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу Пред.  1, 2

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


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

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


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

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