i
Formularios
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.
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
|
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() ; 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 ; |
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();
|
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();
|
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(); |
7. Uso de objetos internos
Los objetos internos representan el conjunto de campos modelados en contenedores iterativos.
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”.
|
Búsquedas
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 |
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
1. Búsquedas
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.
|
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 y contiene.
// Igual cdStatus= 1 corresponde a una cuenta activa
|
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 |
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(); |
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() ;
|