i

Please enable JavaScript to view this site.

Documentación 8.5

La clase modelo contiene las propiedades con sus métodos getter y setter, mientras que la clase servicio contiene las operaciones a realizar con el modelo.

 

Por ejemplo si se usa el formulario "Account (CRM_ACCOUNT)" de la aplicación CRM, al descargar los fuentes Java del formulario se obtiene un archivo account.java representando el modelo y otro archivo accountService.java con las operaciones disponibles del servicio.

Contenido de la Clase Modelo

 

El modelo de un formulario contiene:

 

Constructor del modelo.

Conjunto de métodos getter y setter de sus campos.

Clases internas que representan el modelo de los contenedores “Múltiples ocurrencias”, si tuviese.

Método particular de la clase modelo

 

Además de los métodos getter y setter existen métodos particulares relacionados a los campos.

 

 

Operación

Descripción

Parámetros

getReference_”idCampoTipoArchivo”()

Permite recuperar el objeto FileReference asociado al campo archivo de la instancia.


Tipos de Datos

 

Las propiedades del modelo de un formulario pueden tener los siguientes tipos de datos.

 

Se muestra la equivalencia entre los tipos de datos de campos del formulario y el modelo Java.

 

 

Control

Tipo de Dato

Java

Texto

Alfanumérico (longitud)

String


Alfanumérico Mayúscula (longitud)

String


Alfanumérico Extenso

String


Texto Enriquecido

String

Número

Entero

Integer


Entero Grande

Long


Decimal

Double

Hora

Hora

java.sql.Time


Hora Local

java.sql.Time

Fecha

Fecha

java.sql.Date


Fecha y Hora

java.sql.Timestamp


Fecha Local

java.sql.Timestamp


Fecha y Hora Local

java.sql.Timestamp

Imagen

Imagen en Carpeta

String


Imagen en Base de Datos

String

Archivo

Archivo en Base de Datos

String

Check

Boolean

Boolean

Contenido de la Clase Servicio

 

El servicio permite realizar las siguientes operaciones CRUD (Create, Read, Update, Delete) y búsqueda (search), además de contener métodos particulares, por ejemplo para recuperar archivos del formulario.

 

 

Operación

Descripción

Parámetros

create(entity)

Crea una instancia de formulario.

entity: Clase modelo del formulario

 

read(entity)

Lee una instancia de formulario.

entity: Clase modelo del formulario

 

update(entity)

Actualiza una instancia de formulario.

entity: Clase modelo del formulario

 

delete(entity)

Elimina una instancia de formulario.

entity: Clase modelo del formulario

 

readCases(entity)

Permite recuperar las instancias de casos asociadas a una instancia de formulario.

 

Retorna una lista de casos dado que una instancia de formulario puede estar relacionada a más de un caso.

entity: Clase modelo del formulario

bind(entity,case)

Permite asociar un caso a una instancia de formulario.

entity: Clase modelo del formulario

case : Clase modelo del caso

shortDescription()

Permite recuperar la descripción corta de la instancia enviada por parámetro.

FormInstance

 

get“idCampo”_description()

Permite recuperar el valor descriptivo del campo indicado.

FormInstance

 

search(searchCriteria)

Permite recuperar las instancias de formulario que cumplan con los criterios de búsqueda.

searchCriteria: Clase que permite definir un conjunto de criterios y parámetros de configuración de búsqueda.

Ejemplos de Uso

 

En los ejemplos se utiliza el formulario "Account (CRM_ACCOUNT)" de la aplicación CRM y cada ejemplo contiene el uso de la clase modelo "Account" y la clase servicio “AccountService”.

 

 

1. Creación del servicio

 

Este servicio se crea por única vez en la regla y se lo reutiliza en las distintas operaciones.

 

 

AccountService accountService = new AccountService(getApiClient());
 

 

 

2. Creación de una instancia del formulario

 

Se crea una instancia de la clase modelo “Account”, se le asignan valores a sus propiedades y utilizando la clase servicio “AccountService” se guarda la nueva cuenta con los valores asignados, mediante el método create(account).

 

 

Account account = new Account() ;
account.setNuIdentifNumber("010000123");
account.setDsIndustry("1");              // 1= Agricultura
account.setDsSource("7");                // 7= Redes Sociales
account.setDsCompany("Trees Company");
account.setDtOpening((Date) new java.util.Date());
account.setFlLogo(new File("/photo.png"));
account.setCdStatus("1");                // 1= Activa

Integer accountNumber = accountService.create(account);

log("Account created with account number:"+ accountNumber);

 

 

 

3. Lectura de una instancia del formulario

 

Para obtener los datos de una cuenta existente se crea una instancia de la clase modelo “Account”, se indica el identificador elegido mediante el correspondiente método setter y se lee dicha instancia utilizando el  método read(account) de la clase servicio “AccountService”. La instancia contiene todas sus propiedades y las mismas pueden consultarse mediante los correspondientes métodos getter. En el ejemplo se leen las propiedades dsCompany, dtOpening, dtStore y dtLastUpdate.

 

 

Account account = new Account();

Integer readAccountNumber = 50000 ;
account.setIdAccount(readAccountNumber);
account = accountService.read(account) ;
 
// Una vez leído se puede seguir trabajando
String dscompany = account.getDsCompany();
Date   dtopening = account.getDtOpening();
 
// Datos de auditoría
Timestamp dtStore = account.getDtStore();
Timestamp dtLastUpdate = account.getDtLastUpdate();
 

 

 

4. Modificación de una instancia del formulario

 

Para modificar los datos de una cuenta existente se crea una instancia de la clase modelo “Account”, se indica el identificador elegido mediante el correspondiente método setter y se lee dicha instancia utilizando el método read(account) de la clase servicio “AccountService”. A continuación se modifica la propiedad dsCompany utilizando el correspondiente método setter y se invoca el método update(account) del servicio para actualizar la cuenta.

 

 

Account account = new Account();
account.setIdAccount(50000);
account = accountService.read(account);
 
// Una vez leído actualizamos
account.setDsCompany("Trees Company");
accountService.update(account);

 

 

 

5. Eliminación de una instancia del formulario

 

Para eliminar una cuenta existente, se crea una instancia de la clase modelo “Account”, se indica el identificador de la misma mediante el correspondiente método setter. A continuación se invoca el método delete(account) del servicio para eliminar la instancia.

 

 

Account account = new Account();
account.setIdAccount(50000);

account = accountService.read(account);
accountService.delete(account);

 

 

 

6. Uso de campos tipo archivos e imagen

 

Para recuperar un archivo relacionado a una instancia de un formulario se debe utilizar el correspondiente método get+<fieldname>+(entity) de la clase servicio “AccountService”.

En este ejemplo se invoca al método getFlLogo(account) de la clase servicio “AccountService” que permite recuperar el archivo correspondiente a un logo asociado a un objeto File.  

 

 

Account account = new Account();
account.setIdAccount(50000);
 
//  Lectura de la cuenta
account = accountService.read(account);
 
//  Lectura de la imagen logo
File logo = accoountService.getFlLogo(account);
 
//  Asignar un nuevo logo a la cuenta
account.setFlLogo(new File("Path"));
accountService.update(account);
 

 

 

7. Uso de objetos internos

 

Los objetos internos representan el conjunto de campos modelados en contenedores de múltiples ocurrencias.

 

En este ejemplo se instancian dos nuevos objetos internos “Account.PhoneLine” y se asignan valores a sus propiedades nrPhone y tpPhone.

Se puede guardar una lista nueva de objetos “Account.PhoneLine” con el método setPhoneLine(lsPhones) o bien agregar a la lista actual dos instancias del objeto “Account.PhoneLine”.

 

 
Account.PhoneLine phones= new Account.PhoneLine();
phones.setNrPhone("01149834589");
phones.setTpPhone("Line phone");
 
Account.PhoneLine phones1= new Account.PhoneLine();
phones1.setNrPhone("0115123987");
phones1.setTpPhone("Cell phone");
 
List<Account.PhoneLine> lsPhones = new ArrayList();
lsPhones.add(phones);
lsPhones.add(phones1);
account.setPhoneLine(lsPhones);
 
// Otra opción es
account.getPhoneLine().add(phones);
account.getPhoneLine().add(phones1);
 

 

 

8. Lectura de casos asociados a instancias de formularios

 

En el ejemplo se recupera el caso asociado a una instancia de formulario y se ejecuta dicho caso.

 

Para utilizar este ejemplo además del formulario "Cuenta" (Account) se debe modelar el proceso "Alta de Cuenta" (Account Registration) que utiliza dicho formulario. El caso se puede iniciar manualmente o iniciar mediante métodos de Deyel SDK.

 

Para leer los casos asociados a una instancia de formulario, se crea una instancia de la clase modelo “Account”, se indica el identificador elegido mediante el correspondiente método setter. Se instancia el servicio “AccountService” y utilizando el método readCases(account), se recupera la lista “Cases” con los casos asociados a la instancia con identificador 10.

Teniendo la lista “Cases”, la misma se puede recorrer para recuperar algunos o todos sus casos. Se instancia el servicio “AccountRegistration” y utilizando el método execute(accountRegistrationCase) se ejecuta el primer caso asociado.

 

Tanto la instancia del formulario como la del caso deben estar creadas.

 

 

Account account = new Account();

account.setId(10);

 

AccountService accountService = new AccountService(getApiClient());

List<Cases> listOfCases = accountService.readCases(account);

 

AccountRegistration  accountRegistrationCase = new AccountRegistration(listOfCases.get(0));

 

AccountRegistrationService accountRegistrationService = AccountRegistrationService(getApiClient());

accountRegistrationService.execute(accountRegistrationCase);

 

 

 

9. Asociar un caso a una instancia de formulario

 

En el ejemplo se lee un caso asociado a una instancia del formulario "Account". para luego asociar dicho caso a una instancia del formulario "Contact", quedando ambas instancias asociadas al mismo caso.

 

Se lee el caso asociado a la instancia del formulario "Account" con el método readCases(account), descripto en el ejemplo 8.

Se asocia el caso a la instancia del formulario "Contact", con el método bind(contact,accountRegistrationCase).

 

Solo se puede vincular un caso a una instancia de formulario, si existe una relación entre el formulario y el proceso al que pertenece el caso a asociar.

 

 

Account account = new Account();

account.setId(10);

 

AccountService accountService = new AccountService(getApiClient());

List<Cases> listOfCases = accountService.readCases(account);

 

AccountRegistration accountRegistrationCase =   (AccountRegistration) listOfCases.get(0);

AccountRegistrationService accountRegistrationService = AccountRegistrationService(getApiClient());

 

Contact contact = new Contact();

contact.setId(20);

 

ContactService contactService = new ContactService(getApiClient());

 

contactService.bind(contact,accountRegistrationCase);

 

 

 

10. Recuperar el código y la descripción del valor de un campo asociado a una lista de valores

 

Para utilizar este ejemplo la lista de valores “Estados” debe estar modelada en Deyel y se deben haber ingresado valores para la misma.

 

Código

Valor Descriptivo

1

Activo

2

Inactivo

 

 

Se debe relacionar un campo del formulario “Account” con la lista de valores “Estados”.

 

Cuando un campo tiene definida una relación, el contenido puede utilizar su código o su valor descriptivo.

 

 

En este ejemplo se recupera el código del campo asociado a la lista de valores.

 

 

String stateCode = account.getAccountState();

//Retorna:1

 

 

 

Mientras que en el siguiente se recupera la descripción del campo asociado a la lista de valores.

 

 

String stateDescription = accountService.getAccountSate_description(account); 

//Retorna: Activo

 

 

El código se recupera mediante el objeto modelo y la descripción se recupera mediante el objeto servicio.

 

 

11. Modificación de instancias de un formulario con commit o rollback

 

En este ejemplo se declara una variable que representa el servicio del objeto que se va a actualizar. Mediante su utilización, se recupera la lista de instancias existentes y es recorrida con la sentencia FOR. Por cada una de ellas se redefine el servicio obteniendo el cliente API propio, se calcula y actualiza el valor del IVA, y se intenta realizar un comando commit o un comando rollback a la base de datos conectada, según corresponda.

 

 

protected void run() throws java.lang.Exception {

    TestFormService xTestFormService = new TestFormService(getApiClient());

    SearchCriteria xSearchCriteria = new SearchCriteria();

    List<TestForm> xListResult = xTestFormService.search(xSearchCriteria).getResult();

    for (int j = 0; j < xListResult.size(); j++) {

        try {

            xTestFormService = new TestFormService(getOwnApiClient());

            TestForm xElement = xListResult.get(j);

            xElement.setValorDelIVA((tasadeiva * montoentrada) / 100);

            xTestFormService.update(xElement);

            ownConnectionCommit();

        } catch (Exception e) {

            ownConnectionRollback();

        }

    }

}

Búsqueda

 

Las búsquedas sobre las instancias de los formularios se pueden realizar mediante el uso de los siguientes objetos.

 

Criteria: representa criterios para realizar búsquedas sobre los datos de los formularios. Se compone de elementos que pueden ser campos y valores, conectados por operadores.

 

 

Operador

Descripción

eq

Igual

neq

Distinto

gt

Mayor

gte

Mayor igual

lt

Menor

lte

Menor igual

between

Entre

betweene

Entre y admite iguales

nbetween

Fuera del rango

like

Contiene

nlike

No contiene

startsWith

Inicia con

nstartsWith

No inicia con

in

Incluido

nin

No incluido

endsWith

Finaliza con

nendsWith

No finaliza con

isNull

Es nulo

notNull

No es nulo

 

 

SearchCriteria: objeto que agrupa las condiciones de búsqueda (objeto Criteria), además permite parametrizar el orden del resultado, el tamaño de la página de lectura y la cantidad de páginas que se van a recuperar. La lectura por páginas se utiliza dado que el volumen de datos de un formulario puede ser muy grande.

 

Servicio del Formulario: clase servicio del formulario sobre el que se está haciendo la búsqueda. Contiene la operación search(searchCriteria) que debe recibir como parámetro el objeto SearchCriteria y retorna el objeto SearchResult.

Ejemplo:

SearchResult searchResult = accountService.search(searchCriteria);

 

SearchResult: objeto que contiene los resultados de la búsqueda. Contiene una lista de instancias del formulario, las cuales son instancias del modelo correspondiente, por ejemplo “Account”. Este objeto permite conocer la cantidad total de páginas de lectura resultantes de la búsqueda, el tamaño de cada página y la cantidad de páginas a recuperar.

Ejemplos de Búsqueda

 

1. Búsqueda

 

En este ejemplo se recupera una lista de cuentas con estado activa, donde dicho estado corresponde al código "1". Se define una cantidad de 15 líneas por página de lectura y el número de páginas a recuperar. Los resultados son ordenados por nombre de la compañía en forma ascendente.

 

 
SearchCriteria searchCriteria = new SearchCriteria();
 Criteria criteria1 =
          Criteria.eq("CdStatus","1");
 searchCriteria.addCriteria(criteria1);
 searchCriteria.setPageSize(15);
 searchCriteria.setPage(1);
 searchCriteria.addOrderAsc("DsCompany");
 
 
SearchResult searchResult =
             accountService.search(searchCriteria);
 List<Account> instancesResult = searchResult.getResult();
 

 

 

2. Tipos de constructores para los criterios de búsquedas

 

En este ejemplo se crea un objeto Criteria y se definen diferentes condiciones de búsqueda utilizando los operadores "igual", "distinto", "mayor", "mayor igual", "menor", "menor igual", "entre", "entre y admite iguales", "fuera de rango", "contiene", "no contiene", "inicia con", "no inicia con", "incluido", "no incluido", "finaliza con", "no finaliza con", "es nulo", "no es nulo".

 

 

// Igual          cdStatus= 1 corresponde a una cuenta activa
  Criteria criteria =  Criteria.eq("CdStatus""1");
 
// Distinto       cdStatus= 1 corresponde a una cuenta activa
// Criteria criteria =  Criteria.neq ("CdStatus","1");
 
// Mayor
// Criteria criteria = Criteria.gt ("qtScore", 20) ;
 
// Mayor igual
// Criteria criteria = Criteria.gte ("qtStore", 20) ;
 
// Menor
// Criteria criteria = Criteria.lt  ("qtStore", 50) ;
 
// Menor igual
// Criteria criteria = Criteria.lte ("qtStore", 50) ;
 
// Entre
// Criteria  criteria = Criteria.between ("dtOpening",
// Date.valueOf("01/01/1990"), Date.valueOf("01/01/2020"));
 
// Entre y admite iguales
// Criteria  criteria =  Criteria.betweene("dtOpening",
// Date.valueOf("01/01/1990"), Date.valueOf("01/01/2020"));
 
// Fuera de rango
// Se Utiliza Formato YYYY-MM-DD
// SimpleDateFormat format =
//      new SimpleDateFormat("yyyy-MM-dd");
// Date dateFrom =
//      new Date(format.parse( "1990-01-01" ).getTime());
// Date dateTo =
//      new Date(format.parse( "2020-01-01" ).getTime());
//
// Criteria criteria =
//        Criteria.nbetween ("dtOpening", dateFrom ,dateTo );
 
// Contiene       En un objeto interno
// Criteria criteria = Criteria.like("eMailLine/dsEmail",
//         "yahoo.com.ar");

 

 

Deyel utiliza para los campos con tipo “fecha” el tipo de dato java.sql.Date, por lo que se debe hacer la transformación de java.util.Date a java.sql.Date, cuando se requiere crear un objeto con este tipo de dato.

 

 

 

// Contiene
// Criteria criteria = Criteria.like("dsCompany","Inc.");
 
// No contiene
// Criteria criteria = Criteria.nlike("dsCompany","Inc.");
 
// Inicia con
// Criteria criteria = Criteria.startsWith("dsCompany","The");
 
// No inicia con
// Criteria criteria = Criteria.nstartsWith("dsCompany","The");
 
// Incluido       dsIndustry = 6 es Comunicaciones, 8 Educación
// Criteria criteria =
// Criteria.in("dsIndustry", Arrays.asList("6", "8" ));
 
// No Incluido     dsIndustry 6 es Comunicaciones, 8 Educación
// Criteria criteria =
// Criteria.nin("dsIndustry", Arrays.asList("6", "8" ));

 

// Finaliza con
// Criteria criteria =

// Criteria.endsWith("dsCompany","Corporation");
 
// No finaliza con
// Criteria criteria =

// Criteria.nendsWith("dsCompany","Corporation");

 

// Es nulo
// Criteria criteria =

// Criteria.isNull("CdStatus");
 
// No es nulo
// Criteria criteria =

// Criteria.notNull("CdStatus");
 

 

 

3. Operaciones sobre el objeto de resultados

 

El objeto SearchResult es un objeto iterativo y como tal se puede recorrer de distintas formas.

En el ejemplo se utiliza una sentencia FOR para iterar sobre cada una de las instancias que cumplen con las condiciones de búsqueda de las propiedades dsIndustry y qtScore, recuperando las propiedades idAccount y dsCompany.

 

 

SearchCriteria searchCriteria = new SearchCriteria();
 searchCriteria.setPageSize(15);
 searchCriteria.addOrderDesc("idAccount");
 
 // Cuentas con industria igual a comunicaciones
 searchCriteria.addCriteria
    (Criteria.eq("dsIndustry""6"));
 
// Cuentas con puntuación mayor a 20
 searchCriteria.addCriteria
         (Criteria.gt("qtScore"20)  );
 
 // Recorre todas las cuentas del resultado de búsqueda
 String stringData1 = "";
 for (Account account : searchResult) {
     stringData1 += " - " + account.getIdAccount()
                  + " - " + account.getDsCompany();
 }
 // Si solo necesito la primera hoja de resultados
 SearchResult<Account> resultFirstPage =
         accountService.search(searchCriteria);
 List<Account> firstList = resultFirstPage .getResult();
 
 String stringData = "";
 stringData += " Amount of data " + firstList.size();
 stringData += " Pages " + resultFirstPage .getPages();
 stringData += " Actual Page " +
                    resultFirstPage .getCurrentPage();
 

Navegación entre las Entidades Relacionadas

 

En la aplicación CRM, el formulario “Contact (CRM_CONTACT)” tiene una relación con el formulario “Account (CRM_ACCOUNT)” y se puede recuperar la cuenta relacionada desde una regla de negocio, a partir de un contacto.

 

Se crea una instancia de la clase modelo “Contact” y se recupera el identificador de la cuenta mediante el correspondiente método getter.

A continuación se crea una instancia de la clase modelo “Account” indicando en el método setter el identificador recuperado del contacto y se lee la instancia de la cuenta utilizando el método read(myAccount) de la clase  servicio “AccountService”.

 

 

Contact contact = new Contact() ;
Integer idAccount  = contact.getIdCompany();
// Recupero el id de una cuenta de un contacto
// y leo la cuenta con ese id
 
Account myAccount = new Account();
myAccount.setIdAccount(idAccount);
myAccount = accountService.read(myAccount);

 

Envianos tu comentario
Compartir en X Compartir en Linkedin Enviar por Email Imprimir