Descargar - Comunidad de Madrid

Anuncio
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
IcmXFusionWord
Versión 1.2
Aplicación de ejemplo fusion_documentos
JULIO 2007
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 1
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
1 TABLA DE CONTENIDO
1
TABLA DE CONTENIDO.................................................................................................2
2
DESCRIPCIÓN DEL PROYECTO ...................................................................................3
3
2.1
El ActiveX...........................................................................................................................3
2.2
El ejemplo ..........................................................................................................................3
ENTORNO TECNOLÓGICO DEL SISTEMA...................................................................4
3.1
4
Entorno operativo..............................................................................................................4
DESCOMPOSICIÓN EN MÓDULOS...............................................................................5
4.1
Diagrama de clases ...........................................................................................................5
4.2
Paquete fusion_documentos.controlador .......................................................................5
4.3
Paquete fusion_documentos. acciones...........................................................................6
4.4
Paquete fusion_documentos. bean .................................................................................7
4.5
Paquete fusion_documentos.modelo ..............................................................................8
5
FICHERO DE CONFIGURACIÓN ...................................................................................9
6
JSP del ActiveX ............................................................................................................11
7
RESUMEN .....................................................................................................................13
7.1
Como incluir la fusión de documentos en un proyecto J2EE ...................................... 13
7.2
Como incluir la fusión de documentos en un proyecto Forms.................................... 14
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 2
Ejemplo Fusion_Documentos
2
FRAMEWORK JAVA 2.1
DESCRIPCIÓN DEL PROYECTO
2.1 El ActiveX
El ActiveX IcmXFusionWord permite fusión de datos en un fichero de MS Word.
Una vez fusionado el documento, permite salvarlo en base de datos para su
posterior revisión. A partir de la versión 1.5.0.0 (Julio 2007) permite también
crear y guardar de un documento PDF a partir de el documento Word editado.
El ActiveX recoge a través de un parámetro propio el contenido en base 64 de
un fichero zip, el cual contiene el/los ficheros/ dbf que contienen los datos, el
fichero doc y un fichero de texto donde se le indican las opciones de fusión. Al
fichero zip lo denominaremos fichero W2Z, al fichero de texto lo
denominaremos INI.
El ActiveX permite las siguientes operaciones:
V
E
I
VS
ES
IS
Q
QS
E_PDF
ES_PDF
Visualizar un documento fusionado.
Editar un documento y guardarlo en BD.
Imprimir un documento sin visualizarlo.
Visualizar un documento previamente guardado en BD.
Editar un documento previamente guardado en BD.
Imprimir un documento previamente guardado en BD.
Visualizar un documento en modo de sólo lectura.
Visualizar un documento guardado en BD en modo de sólo lectura.
Editar un documento y crear un pdf
Editar un documento salvado y crear un pdf
Es el servlet el que indica el tipo de operación a realizar cuando construye el
fichero w2z.
El fichero INI, es un fichero de configuración que contiene información de los
ficheros a imprimir, número de copias y tipo de ordenación.
Un ejemplo de fichero INI:
[INFO]
FORMULARIO=LAUDD029.doc
DATOS=RXUTQZ.dbf
OPERACION=Q
COPIAS=1
2.2 El ejemplo
El ejemplo suministrado es un proyecto Java donde se utiliza el ActiveX. Las
plantillas de word y los datos que se fusionan en ellas se encuentran
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 3
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
almacenados en dos tablas de oracle: FUSI_DOC_PLANTILLA y
FUSI_DATOS_FORMULARIO. Los documentos salvados una vez fusionados
se almacenan en FUSI_DOC_SALVADOS. Éste modelo de datos ha sido
creado ad hoc para el ejemplo, por lo que a la hora de utilizar el ActiveX en una
aplicación, habrá que adaptar el ejemplo al modelo particular de cada
aplicación.
3 ENTORNO TECNOLÓGICO DEL SISTEMA
3.1 Entorno operativo
Servidor de aplicaciones: oc4j
El siguiente diagrama muestra la arquitectura del desarrollo:
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 4
Ejemplo Fusion_Documentos
4
FRAMEWORK JAVA 2.1
DESCOMPOSICIÓN EN MÓDULOS
La aplicación sigue el patrón MVC, utilizado en el framework 2.1.
4.1 Diagrama de clases
A continuación se muestra el diagrama de clases.
IcmXFusionWord - Diagrama de Clases
4.2 Paquete fusion_documentos.controlador
En este paquete se aloja la clase Controlador. Ésta clase se encarga de
procesar todas las peticiones de los clientes de la aplicación.
La clase Controlador hereda de la clase ControladorPublico, perteneciente a
las librerías genéricas que constituyen la arquitectura proporcionada por ICM
para el desarrollo de aplicaciones J2EE.
Nombre: Controlador
Funcionalidad: Procesa las peticiones de los clientes.
Métodos
Nombre
Tipo
Definición
Controlador Constructor Constructor por defecto
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 5
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
4.3 Paquete fusion_documentos. acciones
En éste paquete se alojan las acciones TrataTRB, GuardarBD y AbreActiveX.
Nombre: TrataTRB
Funcionalidad: Es la acción encargada de generar el fichero w2z. Después
carga una jsp que a su vez hace una petición a la acción AbreActiveX
Jsp: blanca.jsp
Métodos
Nombre Tipo
Definición
TrataTRB Constructor Constructor por defecto
procesar public String Método principal de la clase.
Nombre: GuardarBD
Funcionalidad: Es la acción encargada de almacenar en Oracle un documento
ya fusionado.
Jsp:documento_salvado.jsp
Métodos
Nombre
GuardarBD
procesar
decodificaFichero
Tipo
Constructor
public String
private
byte[]
Definición
Constructor por defecto
Método principal de la clase.
Decodifica de base 64 a array de bytes el
fichero a salvar.
Nombre: AbreActiveX
Funcionalidad: La acción AbreActiveX se encarga de codificar el fichero W2Z
en base 64 y establecer el resto de atributos del bean ActiveXBean; éste bean
se establecerá como parámetro a la jsp donde está incrustado el ActiveX.
Jsp: AbreActiveX.jsp
Métodos
Nombre
Tipo
Definición
AbreActiveX Constructor Constructor por defecto
procesar
public String Método principal de la clase.
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 6
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
4.4 Paquete fusion_documentos. bean
En éste paquete se alojan los beans utilizados en la aplicación.
Nombre: FicheroW2Z
Descripción: Clase abstracta que contiene datos relativos al tipo de fusión que
se va a realizar, fichero dbf, nombre del fichero doc, número de copias... Es
una clase abstracta.
Atributos
Nombre
codigo
Tipo
String
Definición
Código de la plantilla doc en
base de datos
operacion
String
Tipo de operación (Visualizar,
Imprimir,…).
numCopias
String
Número de copias a imprimir
nombreDBF
String
Nombre de la tabla dbf a utilizar
nombreDOC
String
Nombre temporal del fichero
DOC
nombreW2Z
String
Nombre temporal del fichero
W2Z
descargaDocDAO DescargaDocumentoDAO DAO para realizar las tareas de
descarga de documentos.
Métodos
Nombre
generaW2Z
Tipo
public abstract
void
generaINI
protected
abstract void
descargaDocumento
protected
abstract void
borrarFicherosZipeados protected void
guardarFicheroHD
protected void
Definición
Método abstracto para generar el
zip.
Método abstracto para generar el
ini.
Método abstracto para descargar el
documento.
Eliminar los documentos después
de añadirlos al zip.
Guarda en disco el fichero
descargado.
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 7
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
Nombre: FicheroW2ZFusion
Descripción: Generalización de FicheroW2Z que representa un fichero W2Z
cuyo origen es la una fusióna de datos.
Métodos
Nombre
generaW2Z
generaINI
descargaDocumento
Tipo
public void
protected void
protected void
Definición
Generar el W2Z.
Generar el ini.
Descargar el documento.
Nombre: FicheroW2ZSalvado
Descripción: Generalización de FicheroW2Z que representa un fichero W2Z
cuyo origen es un documento previamente fusionado y almacenado en base de
datos.
Métodos
Nombre
generaW2Z
generaINI
descargaDocumento
Tipo
public void
protected void
protected void
Definición
Generar el W2Z.
Generar el ini.
Descargar el documento.
Nombre: ActiveXBean
Descripción: Bean que contiene la información de versión y url de descarga
del activex así como el contenido del fichero w2z en base 64.
Atributos
Nombre
codebase
version
nomFichero
downB64
refDocumento
Tipo
String
String
String
String
String
Definición
URL del fichero IcmXFusionWord.cab
Código de versión del fichero IcmXFusionWord.cab
Nombre del fichero DOC.
Contenido en base 64 del vichero W2Z
Código del fichero en base de datos
4.5 Paquete fusion_documentos.modelo
Nombre: DescargarDocumentoDAO
Funcionalidad: La clase DescargarDocumentoDAO, realiza las operaciones
de descargar de Oracle, la plantilla word (o un documento ya fusionado) y
guardar en un dbf los datos a insertar en la misma.
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 8
Ejemplo Fusion_Documentos
Métodos
Nombre
generaDBF
obtenerPlantillaDOC
FRAMEWORK JAVA 2.1
Tipo
public void
public
byte[]
obtenerDocumentoFusion Public
byte[]
Definición
Descarga los datos de oracle a un dbf
Descarga de oracle la plantilla DOC y la
devuelve en un byte[]
Descarga de oracle un documento
previamente fusionado.
Nombre: SalvarDocumentoDAO
Funcionalidad: La clase SalvarDocumentoDAO, realiza la operacion de subir a
Oracle, un documento fusionado.
Métodos
Nombre
Tipo
salvarDocumento public void
5
Definición
Salva en Oracle el documento fusionado.
FICHERO DE CONFIGURACIÓN
#####################################################
# Grupo de variables constantes de una aplicacion #
#####################################################
WEB_ROOT = http://icmweb01.icm.es/fusion_documentos
WEB_HOME = /usr/aplic_ICM/prod/web/home8049/icm/fusion_documentos/fusion_documentos
CHARACTER-ENCODING=ISO-8859-1
FICHERO_VISTAS = %WEB_HOME%/WEB-INF/conf/vistas.conf
download.url = http://icmweb01.icm.es/download
############################
# Base de Datos
#
############################
bd.url = jdbc:oracle:thin:@ICM21:1521:DENIVEL2
bd.usuario = dba_gat
bd.clave = 009C4E09A412CF35
#Driver que va a usarse para crear las conexiones#
bd.driver= oracle.jdbc.driver.OracleDriver
#ATENCION! si se cambia el driver habra que poner las librerias necesarias en el ClassPath#
#Timeout= tiempo maximo en minutos que una conexion puede permanecer activa#
#Para desactivarlo basta con poner un 0#
bd.timeout= 0
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 9
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
######################################
#Configuracion del Pool de Conexiones#
######################################
bd.pool.minConexiones=1
bd.pool.maxConexiones=3
bd.pool.maxEncolados=50
bd.pool.tiempoEsperaConexion=60000
bd.pool.recogerEstadisticas = false
bd.pool.estadisticas.tempo=60000
bd.pool.estadisticas.directorioSnapshots=/usr/aplic_ICM/prod/web/temp/pdf
bd.pool.estadisticas.urlSnapshots=http://icmweb01.icm.es/download
bd.pool.timeout=20000
bd.pool.liberar=true
#########################################################
# Variables de configuracion general de la aplicacion #
#########################################################
aplicacion.usarBD=true
aplicacion.nombre=BEGO
aplicacion.paquete=fusion_documentos.acciones
aplicacion.opcion.defecto=TrataHTML
aplicacion.menu=/WEB-INF/conf/menu_aplicacion.xml
aplicacion.usarMenu=false
aplicacion.shutdown=true
aplicacion.activeX.version=1,5,0,0
aplicacion.activeX.url=%WEB_ROOT%/ocx/IcmXFusionWord.cab
aplicacion.directorio.temporal=/usr/aplic_ICM/prod/web/temp/pdf
########################################################
# Acciones comunes
#
########################################################
ListaValoresJSP=sistemas.framework.acciones.comunes
CalendarioJSP=sistemas.framework.acciones.comunes
Calendario=sistemas.framework.acciones.comunes#CalendarioJSP
Menu=sistemas.framework.acciones.comunes
MuestraMenuAplicacion=sistemas.framework.acciones.comunes
TrataHTML=sistemas.framework.acciones.comunes
EjecutaIdMenu=sistemas.framework.acciones.comunes
ConsultaEstadoPool = sistemas.conexiones
ConsultaHistoricoEstadoPool = sistemas.conexiones
########################################################
# Definición del portal
#
########################################################
portal.integrar = true
portal.definicion = portal.xml
portal.clase = sistemas.portal.generico.PortalGenerico
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 10
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
portal.clasesNoIntegrables=ListaValores;Calendario
###################################################
# Variables para la configuracion de las trazas #
###################################################
trazas.tipo=BRSLME
trazas.minNivel=1
trazas.ficheroLog = /usr/aplic_ICM/prod/web/log/8049/fusion_documentos
trazas.grabarLog=true
trazas.fichero.banned=
trazas.maxCaracteres=500
trazas.capturarSalidaEstandar=false
#################################################
# Variables para la definicion del calendario #
#################################################
calendario.tabla.festivos=CATA_FESTIVOS
calendario.color.festivo=bgcolor=#EBEBEB
calendario.color.laborable=bgcolor=#FFBB33
calendario.color.hoy=bgcolor=#FFDD33
calendario.anno.inicio=1980
calendario.anno.fin=2010
############################
# Servidor Aplicaciones #
############################
aplicacion.servidorAplicaciones=
##################################
# Variables para RemoteScripting #
##################################
arbol.longitud_linea = 10
paginacion.tamano_agrupacion = 10
paginacion.paginas_mostrar = 10
paginacion.intervalo = 10
6 JSP del ActiveX
A continuación se muestra la jsp que contiene el ActiveX. En el fichero
vistas.conf es necesario añadir la linea que asocia el valor que devuelve el
método AbreActiveX.procesar() con la JSP:
icmx_fusiondoc = IcmXFusionDoc.jsp
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 11
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
<jsp:useBean id="actXBean" scope="request"
class="fusion_documentos.bean.ActiveXBean" />
<jsp:useBean id="url_home" scope="request" class="java.lang.String" />
<TITLE>Fusión de documentos</TITLE>
<p align="center">
<br><br><br><br><br>
<OBJECT
classid="clsid:F07FE7D6-6426-4D87-B629-43BE1F3583AF"
codebase="<%=actXBean.getCodebase()%>#version=<%=actXBean.getVersion()%>"
id="IIcmX"
width=253
height=18
align=center
hspace=0
height=1>
<PARAM NAME="DownB64" VALUE="<%=actXBean.getDown64()%>">
<param name="AxBorderStyle" value="0">
</OBJECT>
<SCRIPT EVENT="OnFinalizado" FOR="IIcmX">
<!-// window.close();
-->
</SCRIPT>
<SCRIPT EVENT="OnFinCodificacion" FOR="IIcmX">
document.forms[0].fich_b64.value = document.IIcmX.UpB64;
document.forms[0].pdf_b64.value = document.IIcmX.UpPDF;
alert("Se va a guardar el documento, por favor espere...");
volverAInicio = false;
document.forms[0].submit();
</SCRIPT>
<SCRIPT>
// ejecutar OCX cuando esté cargado
function EjecutarOCX(){
while (document.readyState != 'complete'){
setTimeout("EjecutarOCX()", 500);
return;
}
//IIcmX.ComprobarDlls();
if(IIcmX.DllStatus == "ERROR"){
alert(IIcmX.DllErrorMsg+" Consulte con su operador
para la actualización.");
window.close();
}else{
volverAInicio=true;
IIcmX.Fusion();
if (volverAInicio)
window.location="<%=url_home%>";
}
}
</SCRIPT>
<body bgcolor="#ffffff" scroll="no" onload="EjecutarOCX()">
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 12
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
<!--br><br><br><br><br><br><br><br><br>
<HR-->
</p>
<form method="POST" action="GuardarBD.icm">
<input type="hidden" name="fich_b64" value="fichero modificado en b64">
<input type="hidden" name="pdf_b64" value="fichero pdf en b64">
<input type="hidden" name="nom_fich"
value="<%=actXBean.getNomFichero()%>">
<input type="hidden" name="IDDOC"
value="<%=actXBean.getRefDocumento()%>">
</form>
<!--HR-->
<br><br>
7 RESUMEN
7.1 Como incluir la fusión de documentos en un proyecto
J2EE

Incluir un directorio ocx con el fichero IcmXFusionWord.cab al mismo
nivel que el directorio WEB-INF.

Incluir la página IcmXFusionWord.jsp.

Incluir en el fichero vistas.conf las lineas
icmx_fusiondoc = IcmXFusionDoc.jsp
blanca = blanca.jsp
guardarbd=documento_salvado.jsp

Incluir todas las clases java, salvo Controlador.java. Es necesario
modificar las clases DescargarDocumentoDAO y SalvarDocumentoDAO,
ya que éstas clases acceden a unas tablas de ejemplo. Es necesario,
por tanto, cambiar dichas tablas por las que use la aplicación.

Las tablas utilizadas en el ejemplo suministrado son como tal, tablas
ejemplo, y todas ellas han de ser modificadas por tablas propias de la
aplicación, son las siguientes y con el siguiente contenido:
FUSI_DATOS_FORMULARIO: Ésta tabla contiene los datos a fusionar
(sobre la que se realiza la consulta para la obtención del fichero .dbf)
FUSI_DOC_PLANTILLA: Ésta tabla contiene las plantillas (formularios
.doc comprimidos)
FUSI_DOC_SALVADOS: Ésta tabla contiene los documentos salvados
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 13
Ejemplo Fusion_Documentos
FRAMEWORK JAVA 2.1
resultantes de la fusión (no todas las aplicaciones necesitarán salvar los
documentos generados, esto depende del requisito funcional).

Son necesarias las siguientes páginas
o IcmXFusionWord.jsp
o dlanca.jsp
o documento_salvado.jsp

Utilizar el ActiveX suministrado: IcmXFusionWord.cab, para lo cual se
han de incluir en el fichero de configuración las siguientes entradas:
o aplicación.activeX.version=1,5,0,0
o aplicación.activeX.url=%WEB_ROOT%/ocx/IcmXFusionWord.cab
7.2 Como incluir la fusión de documentos en un proyecto
Forms

En el caso de necesitar utilizar el activex desde una aplicación Forms
vale el ejemplo tal cual está (con las modificaciones pertinentes de las
tablas de oracle). Hay que realizar una petición a la acción
TrataTRB.icm añadiendo los campos de formulario “DOCUMENTO” y
“OPERACION”, que contienen el identificador del documento y la
operación a realizar.
Área de Integración y Arquitectura de Aplicaciones
Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales
Subdirección General de Desarrollo, Tecnología e Infraestructuras
Página: 14
Descargar