Menu

Android task notification

Developers
av_av
2016-03-29
2016-06-14
  • av_av

    av_av - 2016-03-29

    Здравствуйте
    Есть желание и время, сделать приложения уведомления о задачах для Android c минимальным функционалом, уведомление о новых задачах, список задач и переход в браузер при клике по задаче.
    В идеале конечно GCM использовать, но я даже не знаю с какой стороны подойти к этому в руне.
    Нужно что б при подключение мобильного клиента, он передавал свой пароль, логин, и идентификатор, а при появлении новых задач они отправлялись через GCM по идентификатору клиенту.
    У вас нет планов по мобильным приложениям? Само приложение я реализую быстро и без проблемм, а вот серверную часть даже не знаю потяну или нет.

     

    Last edit: av_av 2016-03-29
  • Dofs

    Dofs - 2016-03-29

    Добрый день. Серверную часть вам реализовывать не нужно, нужно просто интегрироваться с ней. Она позволяет это сделать через веб-сервисы, сможете клиентскую часть в Android-приложении сделать? В качестве основы можно посмотреть код java rtn - там уже сделана интеграция через веб-сервисы, вам нужно адаптировать под Android.
    Этот функционал нам интересен, поэтому постараемся помочь вам его реализовать.

     
  • Artem Mikheev

    Artem Mikheev - 2016-03-29

    В идеале конечно GCM использовать

    На мой взгляд GCM лучше не использовать, так как в основном wfe не используется с прямым доступом из интернета, а используется из корпоративной среды или через VPN.

    Библиотеки для работы с SOAP для Android:

    http://simpligility.github.io/ksoap2-android/
    https://code.google.com/archive/p/wsdl2ksoap2-android/

     
  • av_av

    av_av - 2016-04-01

    Займусь реализацией.

    На мой взгляд GCM лучше не использовать, так как в основном wfe не используется с прямым доступом из интернета, а используется из корпоративной среды или через VPN.

    Попробую через SOAP, все равно без него не обойтись, оставлю точки расширения для GCM, все таки он дает много преимущест.

     

    Last edit: av_av 2016-04-01
  • av_av

    av_av - 2016-04-18

    Помогите с запросами.
    Пытаюсь сформировать запрос на получение списка задач для пользователя.

    public void getTasks() {
    
            final String URL = "http://localhost:8080/wfe-service-4.2.0/ExecutionWebService/ExecutionAPI?wsdl";
            final String SOAP_ACTION = "http://localhost:8080/wfe-service-4.2.0/AuthenticationWebService/ExecutionAPI?wsdl";
            final String METHOD_NAME = "getTasks";
            boolean result = false;
    
            doLogin("Administrator", "wf");
    
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    
            // Expected elements are <{}id>,<{}category>,<{}name>,<{}pageNumber>,<{}active>,<{}rangeSize>,<{}fieldsData>,<{}createDate>,<{}type>,<{}version> '
            // private Long id;
            // private Long version;
            // private ClassPresentationType type;
            // private String category;
            //private String name;
            //private boolean active;
            //private int rangeSize;
            //private int pageNumber = 1;
            //private byte[] fieldsData;
    
            SoapObject batchPresentation = new SoapObject();
    
            batchPresentation.addProperty("id", 1);
            batchPresentation.addProperty("category", "hhh");
            batchPresentation.addProperty("name", "mm");
            batchPresentation.addProperty("pageNumber", 1);
            batchPresentation.addProperty("active", true);
            batchPresentation.addProperty("rangeSize", 100);
            //batchPresentation.addProperty("fieldsData", 40);
    
            batchPresentation.addProperty("createDate", 10);
            batchPresentation.addProperty("type", "TASK");
            batchPresentation.addProperty("version", 1);
    
            request.addProperty("user", "Administrator");
            //request.addProperty("batchPresentation", null);
            request.addProperty("batchPresentation", batchPresentation);
            //request.addSoapObject(oo);
    
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            //envelope.dotNet = true;
            envelope.setOutputSoapObject(request);
            System.out.println(request);
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.debug = true;
    
            //Log.d("dump Request: " ,androidHttpTransport.requestDump);
            System.out.println("response: " + androidHttpTransport.requestDump);
    
            //Log.d("dump response: " ,androidHttpTransport.responseDump);
    
            try {
                androidHttpTransport.call(SOAP_ACTION, envelope);
    
                SoapObject resultRequestSOAP = (SoapObject) envelope.getResponse();
    
                //bject response = envelope.getResponse();
                //Log.i("myApp", response.toString());
                System.out.println("response: " + resultRequestSOAP);
    
                if (resultRequestSOAP.toString().equalsIgnoreCase("success")) {
                    result = true;
                }
    
            } catch (SocketException ex) {
                //Log.e("Error : ", "Error on soapPrimitiveData() " + ex.getMessage());
                ex.printStackTrace();
            } catch (Exception e) {
                //Log.e("Error : ", "Error on soapPrimitiveData() " + e.getMessage());
                e.printStackTrace();
            }
            System.out.println("response: " + androidHttpTransport.requestDump);
    
        }
    

    Попробовал так, не получается с ошибкой:

    SoapFault - faultcode: 'soap:Client' faultstring: 'Unmarshalling Error: 10 ' faultactor: 'null' detail: null
        at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:137)
        at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140)
    

    Запрос формируется как:

     <v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"><v:Header /><v:Body><n0:getTasks id="o0" c:root="1" xmlns:n0="http://impl.service.wfe.runa.ru/"><user i:type="d:string">Administrator</user><batchPresentation i:type=":"><id i:type="d:int">1</id><category i:type="d:string">hhh</category><name i:type="d:string">mm</name><pageNumber i:type="d:int">1</pageNumber><active i:type="d:boolean">true</active><rangeSize i:type="d:int">100</rangeSize><createDate i:type="d:int">10</createDate><type i:type="d:string">TASK</type><version i:type="d:int">1</version></batchPresentation></n0:getTasks></v:Body></v:Envelope>
    

    Логин пользователя нормально работает

     

    Last edit: av_av 2016-04-25
  • Dofs

    Dofs - 2016-06-14

    Посмотрел.
    По коду getTasks требуется:
    1) user нужно передать как объект, полученный при аутентификации
    2) batchPresentation лучше вообще не передавать (фильтры применены не будут) для возврата всех заданий

    Я сделал аналог на версии 4.3.0 (там был вынесен отдельно TaskService, в связи с этим требуется немного модифицировать код для версии 4.2). В нём помимо вышеобозначенного были задействованы преобразования на основе KvmSerializable, но можно обойтись и без них, но тогда будет больше ручного кода для передачи параметров в нужном namespace.

     

    Last edit: Dofs 2016-06-14

Log in to post a comment.