A real example of Client WS: Consuming the Gexflow application service for writing entrance records

0. Introduction


This is a real HOW-TO task. The steps to follow are:


  1. Create a user in the local application of Gexflow (by Teralco).
  2. Assing the necessary permissions to the user so that he can consume the services
  3. Copy the client consumer generated in the last post
  4. Fill the parameters and execute the request
  5. Analyze the result and verify them in the DB.

1. Create a user and assign permissions.


1. Open a browser and type this address http://xxxx.yyyy.zzzz.kkkk:8080/gexflowzk where xxxx.yyy.xxx.kkkk is the IP address of the server, and login providing your user and password

2. In the upper menu select "OrganizaciĆ³n - Mantenimiento de Unidades Administrativas". As consuming WS is a matter of computer and networks related department, select this department.

3. In  "Puestos", add a new one, for instance, "WS-Consumer".

4. Select a "Rol" that can manage all the aspects of "Registro de Entrada/Salida". If this "Rol" is not created, you should create it by accessing the upper menu and selecting "Seguridad - Mantenimiento de roles ".

5. For now, we have created the "Puesto" and assigned a "Rol" to this "Puesto" . To create a user you should proceed as "OrganizaciĆ³n - Mantenimiento de Usuarios ", create the user and assign it a name for instance "WS-Consumer-User". Assing the "Puesto" created previously.

Now our user has the permissions to execute the WS.


2. Create a java class with only the desired service


The class is ESRegistroClient.java


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package gexflow.reges;


import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.GregorianCalendar;

import javax.xml.namespace.QName;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;

/**
 * This class was generated by Apache CXF 3.2.0
 * 2017-10-26T15:05:03.098+02:00
 * Generated source version: 3.2.0
 * 
 */
public final class ESRegistroClient {

    private static final QName SERVICE_NAME = new QName("http://gexflow/reges", "Registro_v2_0_Services");

    private ESRegistroClient() {
    }

    public static void main(String args[]) throws java.lang.Exception {
        URL wsdlURL = RegistroV20Services.WSDL_LOCATION;
        if (args.length > 0 && args[0] != null && !"".equals(args[0])) { 
            File wsdlFile = new File(args[0]);
            try {
                if (wsdlFile.exists()) {
                    wsdlURL = wsdlFile.toURI().toURL();
                } else {
                    wsdlURL = new URL(args[0]);
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        }
      
        RegistroV20Services ss = new RegistroV20Services(wsdlURL, SERVICE_NAME);
        RegistroV20 port = ss.getRegistroV20ServicesPort();  
        
        //--------------------------------------------------
        System.out.println("Invoking registrarAsientoEntrada...");
        
        java.lang.Integer _registrarAsientoEntrada_idEntidad = 0;//null;
        java.lang.String _registrarAsientoEntrada_codUnidadRegistral = "001";
        java.lang.String _registrarAsientoEntrada_usuario = "WS-Consumer-User";
        
        javax.xml.datatype.XMLGregorianCalendar _registrarAsientoEntrada_fechaValor = null;
          
        java.lang.String _registrarAsientoEntrada_motivoCambioFechaValor = ""; //No obligatorio
        javax.xml.datatype.XMLGregorianCalendar _registrarAsientoEntrada_fechaDocumento = null;
        //  DatatypeFactory.newInstance().newXMLGregorianCalendar(ayer);
        java.lang.String _registrarAsientoEntrada_claseDocumento = "Documento de Ximo Dante";
        java.lang.String _registrarAsientoEntrada_modoRecepcion = "Sobre el hombro, estilo Ismaelet";
        java.lang.String _registrarAsientoEntrada_asunto = "Asunto prueba de WS3";
        java.lang.String _registrarAsientoEntrada_referenciaExpediente = "BON EXPEDIENTET POLLET!";
        java.lang.String _registrarAsientoEntrada_numeroTransporte = "PAPELIN 21";
        java.lang.String _registrarAsientoEntrada_soporte = "Papel Arrugado";
        java.lang.String _registrarAsientoEntrada_resumen = "Resumen de una documento por WS Ximo Dante";
        java.lang.String _registrarAsientoEntrada_tipoInteresado = "F"; // enumerado persona fisica
        java.lang.String _registrarAsientoEntrada_tipoDocumento = "N"; // enumerado de Nif
        java.lang.String _registrarAsientoEntrada_documentoInteresado = "12345678K";
        java.lang.String _registrarAsientoEntrada_nombreInteresado = "NOMBRE APLELLIDO1 APELLIDO2";
        java.lang.String _registrarAsientoEntrada_documentoRepresentante = "";
        java.lang.String _registrarAsientoEntrada_nombreRepresentante = "";
        java.lang.String _registrarAsientoEntrada_organo = "";
        java.lang.String _registrarAsientoEntrada_cargo = "";
        java.lang.String _registrarAsientoEntrada_correoElectronico = "micorreo@kk.com";
        java.lang.String _registrarAsientoEntrada_telefono = "961234567";
        java.lang.String _registrarAsientoEntrada_tipoVia = "PLAZA";
        java.lang.String _registrarAsientoEntrada_via = "TULLERIAS";
        java.lang.Integer _registrarAsientoEntrada_numeroVia = 1;
        java.lang.String _registrarAsientoEntrada_letra = "";
        java.lang.String _registrarAsientoEntrada_bloque = "";
        java.lang.String _registrarAsientoEntrada_portal = "";
        java.lang.String _registrarAsientoEntrada_escalera = "";
        java.lang.String _registrarAsientoEntrada_piso = "";
        java.lang.String _registrarAsientoEntrada_puerta = "";
        java.lang.String _registrarAsientoEntrada_codigoPostal = "46799";
        java.lang.String _registrarAsientoEntrada_municipio = "ALGUN MUNICIPIO DE VALENCIA";
        java.lang.String _registrarAsientoEntrada_provincia = "VALENCIA";
        java.lang.String _registrarAsientoEntrada_nucleo = "";
        java.lang.String _registrarAsientoEntrada_codUnidadOrganizativaRemitente = "A001";
        gexflow.reges.DestinoRegistroEntradaWSJB _registrarAsientoEntrada_destinosInternos = null; 
        //  new DestinoRegistroEntradaWSJB();//null;
        try {
            gexflow.reges.RegistroEntradaWSV2JB _registrarAsientoEntrada__return = port.registrarAsientoEntrada(
              _registrarAsientoEntrada_idEntidad, 
              _registrarAsientoEntrada_codUnidadRegistral, 
              _registrarAsientoEntrada_usuario, 
              _registrarAsientoEntrada_fechaValor, 
              _registrarAsientoEntrada_motivoCambioFechaValor, 
              _registrarAsientoEntrada_fechaDocumento, 
              _registrarAsientoEntrada_claseDocumento, 
              _registrarAsientoEntrada_modoRecepcion, 
              _registrarAsientoEntrada_asunto, 
              _registrarAsientoEntrada_referenciaExpediente, 
              _registrarAsientoEntrada_numeroTransporte, 
              _registrarAsientoEntrada_soporte, 
              _registrarAsientoEntrada_resumen, 
              _registrarAsientoEntrada_tipoInteresado, 
              _registrarAsientoEntrada_tipoDocumento, 
              _registrarAsientoEntrada_documentoInteresado, 
              _registrarAsientoEntrada_nombreInteresado, 
              _registrarAsientoEntrada_documentoRepresentante, 
              _registrarAsientoEntrada_nombreRepresentante, 
              _registrarAsientoEntrada_organo, 
              _registrarAsientoEntrada_cargo, 
              _registrarAsientoEntrada_correoElectronico, 
              _registrarAsientoEntrada_telefono, 
              _registrarAsientoEntrada_tipoVia, 
              _registrarAsientoEntrada_via, 
              _registrarAsientoEntrada_numeroVia, 
              _registrarAsientoEntrada_letra, 
              _registrarAsientoEntrada_bloque, 
              _registrarAsientoEntrada_portal, 
              _registrarAsientoEntrada_escalera, 
              _registrarAsientoEntrada_piso, 
              _registrarAsientoEntrada_puerta, 
              _registrarAsientoEntrada_codigoPostal, 
              _registrarAsientoEntrada_municipio, 
              _registrarAsientoEntrada_provincia, 
              _registrarAsientoEntrada_nucleo, 
              _registrarAsientoEntrada_codUnidadOrganizativaRemitente, 
              _registrarAsientoEntrada_destinosInternos);
            
            System.out.println("registrarAsientoEntrada.result=" + _registrarAsientoEntrada__return);
            System.out.println("Resultado=" + _registrarAsientoEntrada__return.getResultado());

        } catch (WSException e) { 
            System.out.println("Expected exception: WSException has occurred.");
            System.out.println(e.toString());
        }

      //-------------------------------------------------------
        System.exit(0);
    }

}

Most of the fields do not need to be filled as they are not obligatory. Note our user "WS-Consumer-Client".

When we execute this class, a new class of type RegistroEntradaWSV2JB in returned that contains an attribute caller Resultado.

If Resultado is 0, then everything has gone OK.

The output is :

Invoking registrarAsientoEntrada...
registrarAsientoEntrada.result=RegistroEntradaWSV2JB(anyo=2017, 
asunto=Asunto prueba de WS3, bloque=, cargo=null, claseDocumento=Documento de Ximo Dante, codUnidadOrganizativaRemitente=A001, codUnidadRegistral=001, codigoPostal=46799, correoElectronico=micorreo@kk.com, destinosInternos=gexflow.reges.DestinoRegistroEntradaWSJB@7b64240d, documentoInteresado=73912286S, documentoRepresentante=null, entidad=AJUNTAMENT DE MUNICIPIO, escalera=, estado=Pendiente, fechaAsiento=2017-11-02T14:52:19+01:00, fechaDocumento=2017-11-02T00:00:00+01:00, fechaValor=2017-11-02T14:52:19+01:00, idEntidad=0, letra=, metadatos=null, modoRecepcion=Sobre el hombro, estilo Ismaelet, motivoCambioFechaValor=null, municipio=ALGUN MUNICIPIO DE VALENCIA, nombreInteresado=NOMBRE APELLIDO1 APELLIDO2, nombreRepresentante=null, nucleo=null, numero=14, numeroTransporte=PAPELIN 21, numeroVia=1, organo=null, piso=, portal=, provincia=VALENCIA, puerta=, referenciaExpediente=BON EXPEDIENTET POLLET!, resultado=0, resumen=Resumen de una documento por WS Ximo Dante, soporte=Papel Arrugado, telefono=962824015, tipoDocumento=N, tipoInteresado=F, tipoVia=PLAZA, unidadOrganizativaRemitente=DEPARTAMENTO DE NUEVAS TECNOLOGIAS, unidadRegistral=REGISTRO GENERAL - A002, via=TULLERIAS)
Resultado=0

Happy coding !

Comments

Popular posts from this blog

ORVE WS (Dynamic) (4) Jackson XML mapper

ENI (1) ENI Document OR the Spanish Electronic Administration Mafia

ORVE WS (Dynamic) (12) Defiining the control tables