Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Todo Sobre Forms10G PDF
Todo Sobre Forms10G PDF
1 TABLA DE CONTENIDO
1 TABLA DE CONTENIDO............................................................................ 2
2 FICHERO INI GENERAL ............................................................................ 4
3 INFRAESTRUCTURA PARA DESARROLLOS EN ICM BAJO FORMS
10G 5
3.1 Sentencias DDL ........................................................................................... 5
3.2 Estandar General de Fuentes y Colores .................................................... 5
3.3 Documentación ........................................................................................... 6
3.4 Nomenclatura estandar de Directorios y Ficheros ................................... 6
3.5 Librería de Objetos...................................................................................... 6
3.6 Librería de PL/SQL ...................................................................................... 8
3.7 Templates (plantillas) a partir de Librerías de Objetos............................. 9
3.7.1 MENU BASE.......................................................................................................... 10
3.7.2 APL_BASE ............................................................................................................ 11
3.7.3 FORM_BASE......................................................................................................... 12
3.7.4 F60_MANT1 .......................................................................................................... 14
3.7.5 F60_MANT2 .......................................................................................................... 15
3.8 Plantilla Lista de Valores .......................................................................... 18
4 EMPLEO DE LAS PLANTILLAS.............................................................. 19
4.1 Form de Gestión de Perfiles - F60_USU .................................................. 20
4.2 Form Calendario........................................................................................ 21
5 ADAPTACIÓN DE PROCEDIMIENTOO - MENSAJE – DE LIBRERÍA
PL/SQL DE FORMS 10G - ICM_PLL.pll ......................................................... 23
6 CREACIÓN DE WEB PARA ALOJAR PÁGINA ESTÁTICA INICIAL DE
LA APLICACIÓN ............................................................................................. 25
6.1 Creación del web....................................................................................... 26
6.2 Estructura del web que aloja la página estática inicial de la aplicación 26
7 CREACIÓN DE WEB PARA AYUDA ....................................................... 26
7.1 Creación del web....................................................................................... 26
7.2 Estructura de ayuda de la aplicación en el web...................................... 26
8 VISUALIZACIÓN DE AYUDA EN DEVELOPER 10G............................. 27
9 TRATAMIENTO DE IMÁGENES EN DEVELOPER 10G ......................... 28
10 EJECUCIÓN DE PROCESOS EN BATCH ........................................... 31
11 VISUALIZACIÓN DE TRABAJOS BATCH........................................... 36
12 VISUALIZACIÓN DE TRABAJOS BATCH EN MÁQUINAS UNIX....... 37
[General]
BaseDatos=icm21_dexxxxx
; *** Tipo de Ejecución, posibles valores: -Web -Windows
TipoEjecucion=Web
; *** Variable ejemplo para cargar en cuadro de información en menú inicial
Entorno=Consejería de xxxxxxxx
[Ayudas HTML]
; *** Ubicación de las páginas html de ayuda
WebAyuda=http://icmaplicd01/xxxx/Forms/
[ReportBuilder]
; *** Parámetros válidos solamente para Reports bajo TipoEjecucion=Web
Report_cache=d:\icm\web\web_reps\
Report_mapping=http://NTICMAPL11/web_reps/
Cola1=REPLIGERAD01
;Cola2=REPMEDIANAD01
; *** Para realizar impresión directa de Pdf's desde el módulo LIS_REP.fmx
Impresion_pdf=http://nticmapl11.icm.es/impresionpdf/cgi-bin/ImpresionPDF.exe
[GLIS]
; *** Parámetros válidos solamente para la ejecución del GLIS
GlisHost=nticmdes01
GlisDir=d:\icm\web\web_reps\
GlisCola=NORMAL
GlisMapping=http://nticmdes01/web_reps/
GlisExe=d:\icm\oas\general\etc\GlisBatchListado.exe
GlisExe_Cubo=d:\icm\oas\general\etc\GlisBatchCubo.exe
GlisExe_Sql=d:\icm\oas\general\etc\GlisBatchSql.exe
GlisTemp=d:\temp\
GlisAyuda=http://nticmdes01/Glis_Ayuda/Forms/
[UPLOAD]
; *** Parámetros válidos solamente para le ejecución del Servlet Upload
Upload_Exe= http://icmweb01.icm.es/util/upload/servlet/Servidor
[DOCX]
; *** Parámetros válidos solamente para la ejecución de Fusión de documentos
DocxHost=nticmdes01
DocxDir=d:\icm\web\web_reps\
DocxCola=NORMAL
DocxMapping=http://nticmdes01/web_reps/
DocxExe=d:\icm\oas\general\etc\docx.exe
DocxTemp=d:\temp\
[BUSINESS OBJECTS]
;*** Parámetros válidos solamente para obtener token de B.O
bo_usuario=EJPL_Usu
bo_clave=C7FFB972B34AB66E2C45124586507E4F
(para las empresas que van a realizar desarrollos para ICM se les faciltará un
CDROM con idéntico contenido y con posteriores entregas en caso de
actualizaciones posteriores)
En los Tipos de Gráfico como (Rectángulo, Marco,..) el bisel debe ser ‘Sin
Relieve’ y como Color de Fondo ‘Ningún Relleno’.
Los botones Icónicos como norma general tienen una dimensión de 18x18
En la configuración del Forms Server hay que indicar que se va a trabajar con
unas dimensiones del AppletViewer del modo siguiente, en los parámetros
del fichero formsweb.cfg :
widht=800
height=600
3.3 Documentación
(La correcta localización de esta librería será el primer paso que hagamos
antes de crearnos alguno de los siguientes forms desde plantilla)
NOTA: Hay que tener encuenta que la librería ICM_PLL ya tiene incorporada
la librería F6_PROCS_SIS.pll . Por lo tanto al atachar a nuestro form la
librería ICM_PLL automáticamente tendremos también la librería
F6_PROCS_SIS.pll . Posteriormente no se debe atachar la librería
F6_PROCS_SIS.pll
No deben atacharse las librerías generales a las Librerías de Aplicación .
Contiene:
3.7.2 APL_BASE
Para la creación del form de entrada a la aplicación, en este form lo primero
que se ha de hacer es modificar el Trigger When-New-Form-Instance
personalizándolo para la nueva aplicación, se modificará:
:GLOBAL.COD_APLICACION := 'XXXX'; -- con el valor de
nuestra aplicación
:GLOBAL.FICH_INI := 'XXXX.ini'; -- con el nombre del fich. de ini
de la aplicación.
3.7.3 FORM_BASE
Para la creación del resto de programas de nuestra aplicación, contiene:
3.7.4 F60_MANT1
3.7.5 F60_MANT2
Por lo tanto para este tipo de LOV sobre tablas de un volumen superior a los
2.000 registros se aconseja emplear un form para este fin tomando como base
del mismo un Form (plantilla) que se ha realizado simulando el aspecto de la
LOV estándar (de Web).
Este form actúa con la lista de valores con un bloque asociado a tabla y la
gestión del array de registros que forms nos ofrece, en este caso al realizar una
búsqueda (ExecuteQuery) tan solo se bajará al cliente un array de registros
igual al número de registros definidos para el multiregistro del bloque y
posteriormente según bajamos por el grid nos va recuperando bloque a bloque
de información pero nunca se baja la totalidad del query de una vez.
FCALENDARIO(:B10.FECHA,:B10.FIESTA,:B10.DIA_SEM,
GET_ITEM_PROPERTY('FECHA',X_POS),
GET_ITEM_PROPERTY('FECHA',Y_POS) );
MENSAJE(TEXTO, [NUMERO] );
siendo este último parámetro opcional con lo cual con el cambio obtenemos
la siguiente funcionalidad:
MENSAJE(‘Texto a mostrar’);
MENSAJE(‘I’,9999);
MENSAJE(‘I’,9999);
MENSAJE_I
Tiene la misma funcionalidad que MENSAJE y además permite escoger
el Estilo(Icono) de Alerta que se va a visualizar indicandole el estilo en el
parámetro Tipo_Alerta
2- Estilo: Nota
3- Estilo: Precaución
http://Host/Modulo
/ayuda/ ------------- páginas htm de ayuda
/ayuda/images--- imágenes que pertenecen a
las páginas htm de ayuda
TipoEjecucion=XXXX
Para ubicar el Web en el que se van a buscar las páginas htm de ayuda para
nuestra aplicación se utilizará el siguiente parámetro en el fichero ‘.ini’ de la
aplicación:
; por ejem.
WebAyuda=http://host/Modulo/
Nota: a nivel de diseño con Forms se han encontrado casos en los que al
asociar un icono a un botón lo alinea incorrectamente (alineamiento inferior) y
por mucho que intentemos solucionarlo no se consigue dejar correctamente, en
estos casos la solución que hemos observado es, y aunque parezca un poco
-Petición de un proceso:
- QUJB_PAQ_GENERAL.PETICION(Parametros)
Parámetros:
- Host:máquina donde va a correr el trabajo
- Cola: cola que gestionará el trabajo -Shell: ejecutable a lanzar -Param:
parámetros a pasar al ejecutable
-Usuario: usuario que encarga el trabajo
-Mensaje: (salida) mensaje de error en una petición errónea
Devuelve:
-el numero de petición (WPETI) que nos ha generado
-en el caso de ERROR devuelve -1
- QUJB_PAQ_GENERAL.EJECUCION(WPETI,WHOST)
Parámetros:
- Nº.Petición:que hemos obtenido en la función
QUJB_PAQ_GENERAL.PETICION.
-Host:- Host:máquina donde va a correr el trabajo
Devuelve:
-el el caso de ejecución correcta devuelve 0 .
-en el caso de ERROR devuelve -1.
QUJB_PAQ_GENERAL.ESTADO(WPETI)
Parámetros:
-Nº.petición: num. de petición que vamos a comprobar.
Devuelve:
Uno de los siguientes literales:
- “En cola”
- “En ejecución”
- “Terminada”
- “Petición desconocida”
PROCEDURE EJECUTA_BATCH IS
WPARAM VARCHAR2(250);
WMENS VARCHAR2(250);
WHOST VARCHAR2(25);
WCOLA VARCHAR2(25);
WSHELL VARCHAR2(99);
WUSER VARCHAR2(12);
WLIN1 VARCHAR2(50);
WLIN2 VARCHAR2(50);
WLIN3 VARCHAR2(50);
timer_id Timer;
un_segundo NUMBER(5) := 1000;
BEGIN
-- Extensión ".w2z" para el nuevo visor WordPerfect/Word (anterior extension
".wpz")
:GLOBAL.FICH_DOC :=
to_char(sysdate,'YYYYMMDDHH24MISS')||'_'||:B20.CDDOCUM||'.w2z';
WPARAM := 'bd='||USER||'/'||:GLOBAL.PASSWD||'@icm21_denivel2
operacion='||:B30.RG_OPC||' '||
'codigo='||:B20.CDDOCUM||' '||
'copias='||NVL(TO_CHAR(:B30.COPIAS),'1')||' '||
'fichero='||LEER_FICH_INI(:GLOBAL.FICH_INI,'DocDir')||:GLOBAL.FICH_DOC;
-- Se realiza la Petición
:B00.WNUMPET := QUJB_PAQ_GENERAL.PETICION(
WHOST,
WCOLA,
WSHELL,
WPARAM,
WUSER,
WLIN1,
WLIN2,
WLIN3,
WMENS);
ELSE
-- Si la petición es correcta es necesario realizar Commit
-- (el Servicio PipeBatch es un proceso externo)
COMMIT;
Delete_Timer('MI_TIMER');
END IF;
END;
DECLARE
WESTAD VARCHAR2(25);
WURL VARCHAR2(100);
tm_id Timer;
wmaxtime number(3) := 60; -- 1 minutos
BORRAR_TIMER EXCEPTION;
BEGIN
--
-- El Timer se activa cada 1seg. Si se ejecuta mas de wmaxtime(60
veces) (60 * 1seg. = 1min.)
-- automáticamente se desactivará el Timer
--
:b00.nm_veces := :b00.nm_veces + 1;
IF UPPER( QUJB_PAQ_GENERAL.ESTADO(:B00.WNUMPET) ) =
'TERMINADA' THEN
-- Se construye la URL a visualizar
-- (DocMapping, definido en el ini invoca un VirtualPath donde se
depositan los fich.de salida)
WURL :=
LEER_FICH_INI(:GLOBAL.FICH_INI,'DocMapping')||:GLOBAL.FICH_DOC;
-- Se invoca la URL
WEB.SHOW_DOCUMENT(WURL,'_blank');
RAISE BORRAR_TIMER;
END IF;
--
-- El Timer bien finaliza por peticion 'TERMINADA' o por maxtime
--
IF :b00.nm_veces > wmaxtime THEN
RAISE BORRAR_TIMER;
END IF;
EXCEPTION
WHEN BORRAR_TIMER THEN
Delete_Timer('MI_TIMER');
END;
[Documentos]
DocHost=nticmdesXX
DocCola=NORMAL
DocDir=D:\icm\web\web_reps\
DocMapping=http://nticmdes01/web_reps/
DocExe=d:\icm\oas\general\etc\ImpreOfi_Batch_New.exe
Nota:
(es decir cuando se lanze un ejecutable fuera del entorno de ejecución del
servicio PipeBatch es necesario el añadirle estos dos parámetros al final)
QUJB_HOST
QUJB_COLAS (‘NORMAL’,’URGENTE’)
Con el botón ver Detalle además de los campos que aparecen en la pantalla
con la información de Petición, Fecha de Solicitud, Fecha de Lanzamiento,
Estado, Consulta 1, Consulta 2, nos permite visualizar información adicional
del trabajo seleccionado.
Ejemplo de llamada:
CALL_FORM(‘ICM_TRABAJOS’, NO_HIDE, NO_REPLACE););
Pantalla ICM_TRABAJOS:
Con el botón ver Detalle además de los campos que aparecen en la pantalla
con la información de Petición, Fecha de Solicitud, Fecha de Lanzamiento,
Fecha de Inicio, Fecha de Finalización y el Estado nos permite visualizar
información adicional del trabajo seleccionado.
Ejemplo de llamada:
CALL_FORM(‘ICM_TRBUNIX’, NO_HIDE, NO_REPLACE););
Pantalla ICM_TRBUNIX:
2. Programa Delphi
Recibe del programa forms una cadena con los siguientes parámetros:
bd= Usuario, Password y Cadena de Conexión con el formato
Usuario/Password@cadena_conexion
operacion= Operación a realizar, puede ser Visualizar (V) o
Imprimir (I)
codigo= Código de Plantilla
copias= Nº de copias
fichero= El path y nombre del fichero que se va a generar, el
nombre del fichero debe llevar la extensión W2Z.
dl= Directorio Temporal
Ejemplo: FORMULARIO=W2ZP.doc
DATOS=W2ZP.dbf
OPERACION=V
COPIAS=1
3. Programa Forms
Consta de las siguientes componentes:
Fichero Ini
Además de los parámetros standard de una aplicación Forms , el
fichero ini de la aplicación debe llevar los parámetros predeterminados para
la ejecución de programas en batch, que son los siguientes:
Modelo de datos.-
Los archivos para hacer UPLOAD tendrán que ser archivos de texto,
formato TXT y la estructura de cada registro será la que cada aplicación defina
y/o requiera.
Funcionamiento General:
Desde un punto determinado de una aplicación se realiza la
llamada el servlet genérico de upload.
Aparece una ventana de petición de la localización del fichero a
cargar.
El servlet sube el fichero al servidor y lo carga en las tablas
temporales.
El archivo ya cargado será tratado por nuestra aplicación.
Una vez procesada esta información los datos se borrarán de las
tablas temporales por nuestra aplicación.
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=<bd>&user=<user
>&apli=<apli>&clave=<clave>
&plantilla=<plantilla>&opcclob=C
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm1003_orcl8&user=U
SU1&apli=USUG&clave= USU1_20021217_101330&plantilla=defecto
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm1003_orcl8&user=U
SU1&apli=USUG&clave=USU1_20021217_101330&plantilla=defecto&opcclob=
C
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm21_denivel2&user=G
AT1&apli=GAT&clave= GAT1_20021217_101330&plantilla=azul
Los archivos para hacer UPLOAD tendrán que ser archivos de texto,
formato TXT y la estructura de cada registro será la que cada aplicación defina
y/o requiera.
Funcionamiento General:
Desde un punto determinado de una aplicación se realiza la
llamada el servlet genérico de upload.
Aparece una ventana de petición de la localización del fichero a
cargar.
El servlet sube el fichero al servidor y lo carga en las tablas
temporales tanto en líneas como en fichero.
El archivo ya cargado será tratado por nuestra aplicación.
Una vez procesada esta información los datos se borrarán de las
tablas temporales por nuestra aplicación.
Ejemplos de llamadas:
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm1003_orcl8&user=U
SU1&apli=USUG&clave=USU1_20021217_101330&plantilla=defecto&opcclob=
T
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm21_denivel2&user=G
AT1&apli=GAT&clave= GAT1_20021217_101330&plantilla=azul &opcclob=T
siendo:
:pk1 campo clave de la tabla XXXX_TABLA_BLOB de la aplicación
‘XXXX’.
:cla campo clave externa que se envió en paso 2 en la llamada al
Servlet upload.exe
(en caso de que la tabla contenga más de un campo clave u otros
campos … se cumplimentarán en la sentencia insert anterior)
Funcionamiento General
Se realiza la transferencia de un Clob o conjunto de registros de mi
aplicación a tablas temporales a través de la función
GAT_FUNC_CARGA_CLOB
Se ejecuta el programa servlet que descarga y visualiza del Clob o
conjutnos de registros de la tabla temporal
Finalizada la descarga-visualización, la aplicación borrará de las tablas
temporales la información recién tratada.
Ejemplos de llamadas:
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm1003_orcl8&user=U
SU1&apli=USUG&clave=USU1_20021217_101858&plantilla=defecto&opcclob=
V
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm21_denivel2&user=G
AT1&apli=GAT&clave=GAT_20021217_101858&plantilla=azul&opcclob=V&zip
=S
Funcionamiento General:
Desde un punto determinado de una aplicación se realiza la
llamada el servlet genérico de upload.
Aparece una ventana de petición de la localización del fichero a
cargar.
El servlet sube el fichero al servidor y carga las tablas temporales
Se transfiere el Blob de la tabla temporal a la tabla de mi
aplicación
Finalizada la transferencia se borra de las tablas temporales los
registros asociados al fichero cargado
Ejemplos de llamadas:
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm1003_orcl8&user=U
SU1&apli=USUG&clave=USU1_20021217_101858&plantilla=defecto&opcblob
=C
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm21_denivel2&user=G
AT1&apli=GAT&clave=GAT_20021217_101858&plantilla=azul&opcblob=C&zip
=S
siendo:
:pk1 campo clave de la tabla XXXX_TABLA_BLOB de la aplicación
‘XXXX’.
:cla campo clave externa que se envió en paso 2 en la llamada al
Servlet upload.exe
(en caso de que la tabla contenga más de un campo clave u otros
campos … se cumplimentarán en la sentencia insert anterior)
Funcionamiento General
Se realiza la transferencia de un Blob de mi aplicación a tablas
temporales a través de la función GAT_FUNC_CARGA_BLOB
Se ejecuta el programa servlet que descarga y visualiza el Blob de la
tabla temporal
Finalizada la descarga-visualización la aplicación borrará de las tablas
temporales la información recién tratada.
Ejemplos de llamadas:
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm1003_orcl8&user=U
SU1&apli=USUG&clave=USU1_20021217_101858&plantilla=defecto&opcblob
=V
http://icmweb01.icm.es/util/upload/servlet/Servidor?bd=icm21_denivel2&user=G
AT1&apli=GAT&clave=GAT_20021217_101858&plantilla=azul&opcblob=V&zip
=S
Funcionamiento General:
Desde un punto determinado de una aplicación se realiza la
llamada el servlet genérico de upload pasandole entre otros parámetros
la url donde está ubicado el fichero. El servlet deposita el fichero en la
tabla gat_upload_blob
Se transfiere el Blob de la tabla temporal a la tabla de mi
aplicación
Finalizada la transferencia se borra de las tablas temporales los
registros asociados al fichero cargado
Ejemplos de llamadas:
http://icmweb01.icm.es/util/upload/servlet/Servidor?opcion=CargarDeURL&bd=i
cm21_denivel2&user=ADMON&apli=USUI&clave=ADMON_20021217_101858
&plantilla=&nombre_fich=ADMON_20071108_121949_73.pdf&urlfichero=http://
NTICMAPL11/web_reps/ADMON_20071108_121949_73.pdf&zip=N
siendo:
:pk1 campo clave de la tabla XXXX_TABLA_BLOB de la aplicación
‘XXXX’.
:cla campo clave externa que se envió en paso 2 en la llamada al
Servlet upload.exe
Aplicación' a la tabla
de Trabajo.
La función obtiene el Nº de Registros que recupera la Clave de la Tabla
de la Aplicación
Se obtiene 1 la función ha funcionado correctamente
Se obtiene 0 ó >= 2 La Clave de la tabla de la Aplicación es errónea
no recupera 1 Registro
Si devuelve -1 se ha producido un error en la Función
Si devuelve -2 se ha detectado parámetros obligatorios de Entrada con
valor Nulo
*******************************************************************************************
*/
v_Nm_Fichero GAT_UPLOAD_FICHERO.Nm_Fichero%TYPE;
v_Cuenta Integer;
BEGIN
-- Validaciones de Parámetros
IF w_Cod_Aplicacion IS NULL OR w_Cd_Cl_Externa IS NULL OR
w_Nom_Archivo IS NULL OR w_Tabla_Apl IS NULL OR w_Campo_Blob IS
NULL THEN
z_Mensaje_Err := 'Los parámetros de entrada de la Función no
pueden ser Nulos.';
RETURN (-2);
END IF;
--
Select GAT_SEQ_UPLOAD.NEXTVAL INTO v_Nm_Fichero FROM DUAL;
--
INSERT INTO GAT_UPLOAD_FICHERO (Nm_Fichero, Cod_Aplicacion,
Cod_Usuario, Fc_Carga, Cd_Cl_Externa, Nom_Archivo)
VALUES(v_Nm_Fichero, w_Cod_Aplicacion, USER, SYSDATE,
w_Cd_Cl_Externa, w_Nom_Archivo);
EXECUTE IMMEDIATE 'INSERT INTO GAT_UPLOAD_BLOB (Nm_Fichero,
It_Contenido) Select '||
v_Nm_Fichero||', '||w_Campo_Blob||' FROM '||w_Tabla_Apl||'
'||w_Clave_Tabla_Apl;
RETURN(v_Cuenta);
END;
/
v_Nm_Fichero GAT_UPLOAD_FICHERO.Nm_Fichero%TYPE;
v_Cuenta Integer;
BEGIN
-- Validaciones de Parámetros
IF w_Cod_Aplicacion IS NULL OR w_Cd_Cl_Externa IS NULL OR
-----------------------------------------------------------------------------------
-- Tratamiento de un Conjunto de Líneas -------------------------------------------
-----------------------------------------------------------------------------------
ELSIF w_Campo_Nm_Linea IS NOT NULL THEN
END IF;
-------------------------------------------------------------------------------------------
RETURN(v_Cuenta);
Script de creación de una tabla que contiene un campo BLOB en la que se fijan
las características de acceso y almacenamiento al mismo.
(
...
campo_lob BLOB
...
)
LOB (campo_lob) STORE AS (CHUNK 4096
PCTVERSION 10
NOCACHE LOGGING
TABLESPACE TBSLOB_XXXX_100);
PROCESO:
1. Forms ejecuta el Servlet pasándole los parámetros adecuados (bajo
el frame 'oculto')
Ejemplo de Llamada al Servlet desde Forms:
[LOAD]
; *** Parámetros válidos solamente para la ejecución de Upload y
DownLoad y ActiveX de Escaner
Upload_Exe=http://icmweb01.icm.es/util/upload/servlet/Servidor
DECLARE
WURL VARCHAR2(250); -- almacena la URL de llamada al Servlet
con los parámetros necesarios
v_Upload_Exe VARCHAR2(200); -- almacena la dirección URL del Servlet
obtenida del parámetro Upload_Exe del fichero ini de la Aplicación
-- Los posibles Valores de :BOTONES.Formato son: JPG
-- TIF, TIFBN
PDF, PDFBN
-- Los posibles Valores de :BOTONES.Vis_Imagen son: S
-- N
-- Los posibles Valores de :BOTONES.Vis_Interface son: S
-- N
BEGIN
v_Upload_Exe := LEER_FICH_INI(:GLOBAL.Fich_Ini ,'Upload_Exe');
:BOTONES.ID_CLAVE :=
USER||TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS'); -- Generación de
Clave Única dinámicamente
WURL :=
v_Upload_Exe||'?opcion=GeneraActiveX'||'&BD='||:GLOBAL.WBD||'&APL='||:GL
OBAL.COD_APLICACION||'&CLAVE='||:BOTONES.ID_CLAVE||'&USU='||USE
R||'&FORMATO='||:BOTONES.Formato||'&VIS_IMAG='||:BOTONES.Vis_Image
n||'&VIS_INTF='||:BOTONES.Vis_Interface;
Desde Forms6i en Web para poder enviar este tipo de correos –sin
archivos adjuntos- se ha creado una función en el núcleo de Oracle
‘SIS_FUNC_ENVIO_CORREO’ que nos permitirá de modo rápido e
inmediato realizar el envío de correos.
Los parámetros utilizados en esta función son los siguientes:
Desc XXXX_CORREO
CD_CLAVE VARCHAR2(30) (clave única)
REMITENTE VARCHAR2(30) (quien envía el correo)
DESTINATARIO VARCHAR2(2000) (destinatario/s del
correo, separado por el caract ; )
TITULO VARCHAR2(250) (asunto del correo)
MENSAJE CLOB (cuerpo del correo)
ADJUNTOS VARCHAR2(250) (archivos adjuntos
separados con el caract. ; )
TP_ENVIO VARCHAR2(1) (tipo de envio ‘I-
Individual’ , ‘M-Masivo’ –defecto M-)
TP_DESTINO VARCHAR2(1) (tipo de envio ‘I-Interno’ ,
‘E-Externo’ –defecto I-)
FC_SOLICITUD DATE (fecha de solicitud de
envío)
FC_ENVIO DATE (no cumplimentar, lo
hace el proceso de envío de correo)
RESULTADO VARCHAR2(250) (no cumplimentar, lo
hace el proceso de envío de correo)
QUERY CLOB “nuevo atributo”
(cumplimentar en el caso de generar archivo/s adjunto a partir de una
consulta en B.D.)
v_ClobLocator Clob;
BEGIN
Select mensaje INTO v_ClobLocator FROM XXXX_CORREO
WHERE cd_clave = w_Id_Correo;
DBMS_LOB.WRITEAPPEND(v_ClobLocator, Length(w_Bufer),
w_bufer);
END;
Frame_A
Frame_B
http://nticmdes01.icm.es/XXXX
Para crear una página de estas características, desde Front-Page, seguimos los
siguientes pasos:
Archivo -> Nuevo -> Pagina o Web -> Nuevo a partir de una plantilla -> División
horizontal
En este momento nos aparece una página donde podemos ubicar nuestras
páginas ya existentes, en la zona superior la página con el contenido (texto, logo,
enlace a la aplicación …) y en la zona inferior el nombre de una página en blanco
(no contiene nada ya que será esta la zona de frame oculto).
Una vez creada la página index.htm de este modo, pasamos a personalizar las
características de los frames contenidos, por tanto nos iremos a la solapa inferior
–HTML de página de marcos- para dejar los frames con los siguientes atributos:
<frameset rows="100%,0%">
<frame name="enlace" scrolling="auto" src="enlace.htm">
<frame name="oculto" src="oculto.htm" noresize scrolling="no">
<noframes>
BEGIN
..
Wurl := 'http://
icmweb01.icm.es/util/upload/servlet/Servidor?opcion=GeneraActiveX'|| '&BD=IC
M21_DENIVEL2&APL='
||:GLOBAL.COD_APLICACION||'&CLAVE='||:BLO.ID_CLAVE||'&USU='||USER||
'&FORMATO=TIF&VIS_IMAG=N';
Consideraciones
1.- ‘_blank’
el utilizar el nombre de frame ‘_blank’ con la finalidad de oculto nos puede
producir efectos colaterales como pueden ser:
- la visualización de ayudas se realiza sobre este frame y al ser oculto jamás
conseguiríamos verlas
- la visualización de los pdf’s de la aplicación –a través del módulo gral.
LIS_REP- sufrirían el mismo efect, no se visualizarían
por lo tanto no se debe de utilizar este nombre de frame para la funcionalidad de
ocultar una llamada.
2.- dominios
se han detectados problemas al pasar aplicaciones a producción que de
repente una llamada a Servlet que siempre nos ha funcionado nos deja de
funcionar, no hace nada, ni siquiera se ejecuta.
Por tanto tenemos que utilizar el uso de dominio incluso en las pruebas que
realicemos en el entorno de desarrollo, del siguiente modo:
http://nticmdes01.icm.es/XXXX
y dentro de la página web principal de acceso a la aplicación incluiremos
la llamada también con dominio:
http://nticmdes01.icm.es:8080/dev60cgi/ifcgi60.exe?form=XXXX_APL.fm
x
de este modo nos evitaremos problemas en el posterior paso de la aplicación a
producción.
Página Principal.htm
LATERAL CENTRAL
Página Inicial.htm
PRINCIPAL
OCULTO
Ejemplo: http://nticmdes01.icm.es/forms6/lanza_ejemplos/inicial.htm
/*******************************************************************************************
* FUNCTION: OBTENER_TOKEN
*
* DESCRIPCIÓN: Para un cod. usuario y clave (Business Objects) obtiene el token de
crystal report
*
* PARÁMETROS:
* w_usuario: Parámetro Obligatorio. Código de Usuario (Business Objects)
* w_clave: Parámetro Obligatorio. Clave encriptada (Business Objects)
* z_Token: Parámetro de salida. token para ejecucion informe crystal report
* z_Cd_Mensaje_Err: Parámetro de salida. Codigo de Mensaje de Error
* z_Ds_Mensaje_Err: Parámetro de Salida. Descripciòn de Mensaje de Error
*
* VALORES DE RETORNO DE LA FUNCIÓN: True
* False
*
* CODIGOS Y DESCRIPCIONES DE ERROR:
* Codigo de Error Descripción
* --------------- ------------
* 1 'Los parámetros w_usuario, w_clave son obligatorios'
* 100 Cualquier error o excepción de Oracle: SQLERRM
*
********************************************************************************************/
[BUSINESS OBJECTS]
;*** Parámetros válidos solamente para obtener token de B.O
bo_usuario=EJPL_Usu
bo_clave=C7FFB972B34AB66E2C45124586507E4F
Ejemplo:
WEB.SHOW_DOCUMENT(‘http://icmdesbi01:8080/OpenDocument/opendoc/openDocument.jsp
?sType=rpt&sDocName=EJPLListadoEmpleados&sOutputFormat=P&token=icmdesbi01:6400@34236JCl
HcPZDmlET75s534235JBAqEg6vt8ePfmgE’, ‘_blank’);