Cómo crear un proceso de Seleccionar y Ejecutar
Visión general
Seleccionar y Ejecutar (P&E) es un caso de Definición del Proceso con patrón estándar de UI.
Esta sección añadirá un nuevo proceso de Seleccionar y Ejecutar y lo asociará con la ventana Pedido de ventas.
La implementación requiere experiencia en desarrollo.
Las siguientes páginas de conceptos proporcionan información de base sobre action handlers y desarrollo JavaScript:
Pasos para implementar el proceso
Visión general
Los procesos P&E aprovechan los mismos conceptos base en el Diccionario de la Aplicación. Se utilizarán Ventana, Solapas y Campos para definir el grid editable que se mostrará, una nueva Referencia para el parámetro del proceso; y después se implementará un action handler que se ejecutará cuando el usuario pulse el botón Hecho.
Implementación
Definir la ventana
- Cree una nueva ventana
- Rellene los campos obligatorios
-
Seleccione Seleccionar y Ejecutar como tipo de ventana
-
Siguiendo los mismos conceptos, se requiere una Tabla como fuente de datos.
-
En caso de que sea necesario mezclar información de varias tablas, existen diferentes opciones:
-
Una vista de base de datos utilizada para crear una tabla en Diccionario de la Aplicación.
- Una tabla basada en una Consulta HQL.
- Una tabla basada en un origen de datos manual.
-
-
Cree los campos necesarios que se convertirán en las columnas del grid. Seleccione una Columna y preste atención a algunas propiedades importantes:
- Mostrar: Debe estar marcada para generar un campo. Si Mostrar no está marcada, no se generará ningún campo.
- Sólo lectura: La mayoría de las veces todos los campos serán de sólo lectura. Si desea que un usuario pueda modificar algunos datos, por ejemplo la cantidad, déjelo sin marcar.
- Mostrar en la relación: Define si el campo se mostrará en el grid. Se puede definir un campo como mostrado pero no mostrado en el grid, de modo que se generará un campo pero no se mostrará. Esto es útil para recuperar datos al grid y enviarlos al proceso.
- Posición en grid: Define la secuencia de los campos en el grid.
Definir la referencia
Después de definir la ventana, es necesario definir una nueva Referencia.
- Cree una nueva Referencia
- Seleccione en el desplegable Referencia base: Referencia de ventana
-
Guarde
-
Vaya a la solapa Ventana
- Cree un nuevo registro
- Seleccione la ventana recién creada
- Guarde
Definir el proceso
Existe una nueva ventana para procesos: Definición del Proceso
- Abra la ventana Definición del Proceso
- Cree un nuevo registro
- Defina el patrón de UI: Estándar (parámetros definidos en el Diccionario)
- Establezca el Handler (clase Java que implementa el proceso)
- Guarde
Parámetros
La Referencia de ventana es una implementación de un parámetro enriquecido.
- Vaya a la solapa Parámetros
- Cree un nuevo registro
- Rellene los campos obligatorios. El nombre del parámetro será el nombre mostrado en el título del proceso en ejecución.
- Seleccione Referencia de ventana
- Seleccione la ventana que definió previamente
- Guarde
Añadir un botón a Pedido de ventas
Crear una columna
Se requiere una nueva columna para asociarla a un botón.
Info
Para más información, visite Cómo añadir un campo a una solapa de ventana.
-
Cree una nueva columna en la tabla
C_Order. SintaxisPostgreSQL: -
Vaya a: Tablas y Columnas
- Abra el registro
C_Order - Ejecute el proceso: Crear columnas de la base de datos
- Vaya a la solapa Columna
- Seleccione la columna recién creada
- Cambie la referencia de: Sí/No a Botón
- Seleccione el proceso definido
Crear un campo
- Vaya a Ventana, Solapas y Campos
- Busque Pedido de ventas
- Cree un nuevo campo asociado con la columna
Implementación Java
En el caso de un action handler de Seleccionar y Ejecutar, extienda de BaseProcessActionHandler e implemente el método doExecute.
/*
*************************************************************************
* The contents of this file are subject to the Openbravo Public License
* Version 1.1 (the "License"), being the Mozilla Public License
* Version 1.1 with a permitted attribution clause; you may not use this
* file except in compliance with the License. You may obtain a copy of
* the License at http://www.openbravo.com/legal/license.html
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
* The Original Code is Openbravo ERP.
* The Initial Developer of the Original Code is Openbravo SLU
* All portions are Copyright (C) 2011 Openbravo SLU
* All Rights Reserved.
* Contributor(s): ______________________________________.
************************************************************************
*/
package org.openbravo.client.application.examples;
import java.util.Map;
import org.apache.log4j.Logger;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;
import org.openbravo.client.application.ApplicationConstants;
import org.openbravo.client.application.process.BaseProcessActionHandler;
/**
* @author iperdomo
*
*/
public class PickExampleActionHandler extends BaseProcessActionHandler {
private static final Logger log = Logger.getLogger(PickExampleActionHandler.class);
@Override
protected JSONObject doExecute(Map<String, Object> parameters, String content) {
try {
JSONObject request = new JSONObject(content);
log.info(">> parameters: " + parameters);
// log.info(">> content:" + content);
// _selection contains the rows that the user selected.
JSONArray selection = new JSONArray(
request.getString(ApplicationConstants.SELECTION_PROPERTY));
log.info(">> selected: " + selection);
// _allRows contains all the rows available in the grid
JSONArray allRows = new JSONArray(request.getString(ApplicationConstants.ALL_ROWS_PARAM));
log.info(">> allRows: " + allRows);
// A Pick and Execute process can have several buttons (buttonList)
// You can know which button was clicked getting the value of _buttonValue
log.info(">> clicked button: " + request.getString(ApplicationConstants.BUTTON_VALUE));
return request;
} catch (Exception e) {
log.error("Error processing request: " + e.getMessage(), e);
}
return new JSONObject();
}
}
Probar el proceso
Dado que la estructura de alguna entidad se ha modificado al añadir una nueva columna, es necesario reiniciar el servidor tomcat.
- Después de reiniciar, debería poder ir a la ventana Pedido de ventas y ver un nuevo botón.
Temas avanzados
Seleccionar por defecto
La fuente de datos (tabla o vista) definida en la solapa puede establecer qué filas se seleccionarán por defecto cuando el usuario lance el proceso. Solo es necesario crear una columna c_ob_selected, que se convertirá en una propiedad obSelected en la entidad generada. Cuando el valor de esta columna sea Y, la fila se seleccionará por defecto. Aquí tiene un ejemplo funcional:
M_RM_RECEIPT_PICK_EDIT.xml.
Note
Al registrar la columna en el Diccionario de la Aplicación debe utilizarse la referencia Sí/No.
Función de Validación
Defina, a nivel de campo, una función de validación JavaScript. En un campo editable, cuando el usuario introduzca un valor, se ejecutará esta función.
- Vaya a Ventana, Solapas y Campos
- Seleccione su ventana y la solapa
- Vaya al campo Cantidad
Definición JavaScript
- El proveedor de componentes debe registrar un nuevo recurso global.
- Si la función devuelve false, la celda se marcará con un error.
- En el JavaScript, defina una función de validación, por ejemplo:
OB.OBHT = {};
OB.OBHT.validate = function (item, validator, value, record) {
// item has access to grid: item.grid
// from the grid you can get all selected records and edited values, e.g.
// * item.grid.getSelection()
// * item.grid.getEditedRecord()
// grid has access to view: grid.view
// view has access to parentWindow: view.parentWindow (the window running the process)
// parentWindow has access to currentView
// currentView has getContextInfo
// debugger;
if (window.console) {
console.log("validation function!", value);
}
return true;
};
Función de Selección
Se puede definir una función de selección a nivel de solapa. Esta función se llamará cuando el usuario seleccione/deseleccione una fila.
Y defina una función JavaScript en su archivo estático .js cargado:
OB.OBHT.selectionChanged = function (grid, record, recordList) {
if (window.console) {
console.log("selection function!");
console.log(grid, record, recordList);
}
};
Si desea cambiar cualquier valor del registro seleccionado, utilice la siguiente instrucción:
Realizar varias acciones después de la ejecución
Después de que el proceso se ejecute, se puede realizar una serie de acciones.
Info
Para más información sobre varias acciones después de la ejecución, consulte Cómo crear una Definición de Proceso estándar.
Este trabajo es una obra derivada de Cómo crear un proceso de Seleccionar y Ejecutar de Openbravo Wiki, utilizada bajo CC BY-SA 2.5 ES. Este trabajo está licenciado bajo CC BY-SA 2.5 por Etendo.











