Está en la página 1de 44

Introduccin al WWWISIS 4.

0
WWWIsis XML IsisScript Server

Alberto E. Pedroso Garca


Desarrollo de Tecnologas de Informacin BIREME - OPS -OMS

Turrialba, Costa Rica - Junio 2001

Definicin
El WWWISIS XML IsisScript Server fue concebido e implementado especialmente para servir de interface entre bases de datos ISIS y servidores Web via CGI (Common Gateway Interface). Los registros de una base de datos ISIS pueden ser convertidos en documentos HTML dinmicamente, es decir, los resultados de una bsqueda o una parte de un archivo maestro pueden ser recuperados y enviados al cliente Web. La salida en HTML es generada via lenguaje de formato ISIS. Igualmente, los datos contenidos en un formulario de un cliente Web pueden ser utilizados para actualizar y controlar una base de datos ISIS.

Conceptos Isis - Revisin


Base de Datos = Coleccin de Archivos Archivos:
y master o maestro - almacena los registros de datos propriamente dichos y inverted o invertido - almacena diccionarios / ndices de acceso rpido y iso - archivos de importacin / exportacin y parmetros - de formatacin, de extraccin de llaves, etc

Revisin - Master File


Coleccin de registros Dos archivos inter-relacionados:
master file: <nombre.mst> registros de tamao variable con datos de contenido cross-reference file: <nombre.xrf> registros de tamao fijo con datos de control

Los registros nuevos o los registros modificados son agregados al final del archivo master

Revisin - Registro
Coleccin de campos de datos Layout - 3 componentes
Lder Longitud fija - datos sobre el registro Directorio Longitud variable - una entrada para cada campo de datos Datos Longitud variable - los datos propriamente dichos

Revisin - Campos de datos


Identificado por el tag o nmero de campo Tamao variable Presencia opcional Una o ms ocurrencias (repetitivo) Formado por cero, uno o ms subcampos:
identificados por ^ seguido de letra o nmero el identificador del subcampo es parte del campo de datos subcampo por patrn: ^*

Los campos son extrados del registro via lenguaje de formatacin: <nombre.pft>, etc

Revisin - Inverted File


Diccionario / ndice de acceso rpido Estructuracin :
archivo de control: <nombre.cnt> archivo de nodos: nodos de llaves cortas: <nombre.n01> nodos de llaves largas: <nombre.n02> archivo de hojas: hojas de llaves cortas: <nombre.l01> hojas de llaves largas: <nombre.l02> archivo de postings: <nombre.ifp> Las hojas forman el diccionario de llaves Longitud de las llaves cortas: hasta 10 caracteres Longitud de las llaves largas: desde 11 hasta 30 caracteres

Revisin - Cliente-Servidor
servidor www - Netscape, Microsoft, Apache, Omnihttpd, etc cliente www - browser: Netscape Navigator, Internet Explorer, etc

Modo de operacin
Clientes solicitan documentos via: URL: uniform resource locator
protocolo://servidor/recurso

Servidor responde entregando documentos:


encabezamiento del documento content-type: text/html <lnea en blanco> cuerpo del documento

Revisin - CGI
CGI - documentos dinmicos ("on the fly")
Common Gateway Interface nuevo proceso Interface con base de datos bsqueda, formatacin en text/html o en text/plain, actualizacin, etc

Mtodos de intercambio de datos


get post

Lenguaje de Formato...
Selector de Campos - v: v2, v1^b, v20[4], v10*0.4, v15(5,5) Literales - cadena - Literal Incondicional: Nombre: v10 - cadena - Literal condicional: Nombre: v10 - |cadena| - Literal condicional repetitivo: v20+|, | Comandos de espaciamiento - x<n> - Inserta n espacios: Nombre:,x5,v10 - c<n> - Se desplaza hacia la columna n en la lnea actual: Nombre:,c5,v10 - / - Comienza una nueva lnea siempre que no se encuentre ya en el inicio de una: v15/ - # - Salta a la lnea siguiente incondicionalmente: v15/# - %- Cancela las lneas en blanco previas, si las hubiera: v10#####% mfn, mfn(longitud) Devuelve el mfn de un registro. Longitud indica la longitud de la cadena retornada.

...Lenguaje de Formato
Grupo repetitivo - (<formato>): (v1,c15,v2,c35,v3/) Comando de modo - m<modo><conv>- mdl, mdu, mhl, mhu, mpl, mpu <mode> puede ser: - p - proof: los campos se visualizan tal como se almacenaron en los registros. - h - heading: los caracteres de control y los delimitadores de campo son ignorados, excepto los delimitadores de subcampo, que son reemplazados por signos de puntuacin. - d - dato: similar al modo encabezamiento, slo que agrega un punto al final del campo, seguido de dos espacios. <conv> puede ser: - u - convierte los datos a mayscula (u de upper case). - l - deja los datos como estaban (l de lower case). mpu,"Segundo autor: "v10[2]/ if then else fi p(<field selector>) - Retorna TRUE si el campo asociado est presente y FALSE en caso contrario: if p(v12) then v12 else v13 fi a(<field selector>) - Retorna TRUE si el campo asociado est ausente y FALSE en caso contrario: if a(v12) then v13 else v12 fi

...Lenguaje de Formato
Funciones numricas - val(<formato>) - Devuelve el valor numrico del argumento generado por <formato>. if val(v2)>5 then 'Error'/ else 'OK'/ fi - l([<nombre invertido>]<llave>) - Retorna el MFN del primer posting (si lo hubiera) usando la clave generada por el formato <llave> para buscar en el archivo invertido actual o el especificado en <nombre invertido>. if l(v15)<> 0 then |Trmino: |v15 fi

- nocc(<field selector>) - Regresa el nmero de ocurrencias de un campo o


subcampo: if nocc(v3)>10 then Demasiadas ocurrencias.'/ fi - size(<format>) - Devuelve el tamao de una cadena de caracteres. f(size(v10,v20),1,0) - instr(<formato-1>,<formato-2>) - Retorna un nmero especificando la posicin inicial de la cadena generada por <formato-2>, dentro de la generada por <formato-1>: if instr(v5,'ab')>0 then v5/ fi

...Lenguaje de Formato
Funciones de Cadena - f(<formato>,<expr-1>,<expr-2>) - Convierte un valor numrico en cadena de caracteres. <formato> es la expresin numrica a convertir, <expr-1> y <expr-2> indican la longitud mnima de la salida y la cantidad de decimales: f(val(v1),1,0). - ref([<dbname>]<expr>,<formato>) - Ejecuta <formato> en el registro seleccionado mediante <expr>, que indica el MFN de un registro: ref(l(v3),v1/). - s(<formato>) - Devuelve la concatenacin de cadenas de caracteres generadas por <formato>: s(v1,v2,v3). - mid(<formato-1>,<formato-2>,<formato-3>) - Retorna la subcadena contenida en la cadena generada por <formato-1> a partir de la posicin generada por <formato-2> y con la cantidad de caracteres especificada en <formato-3>. mid(v1,instr(v1,'key'),size(v1))/ - replace(<formato-1>,<formato-2>, <formato-3>) - Devuelve una cadena de caracteres reemplazando <formato-2> por <formato-3> en <formato-1>. replace('Mara y Juan',Juan',JUAN')/

...Lenguaje de Formato
Funciones de grupo repetitivo

- iocc - Retorna el nmero de orden (ndice) de la ocurrencia en proceso


(comenzando en 1). - break - Interrumpe la ejecucin del formato de un grupo repetible. - continue - Ejecuta la ocurrencia siguiente de un grupo repetible. (if iocc = 1 then continue else v10/ fi) Funciones de archivo texto - @<nombre de archivo> - Inserta en el formato corriente un formato que ha sido almacenado en un archivo externo: @test.pft,v20 - cat(<formato>) - Muestra el contenido de un archivo cuyo nombre es generado por el <formato>: mfn,cat(prueba.html') Funcin de Sistema - system(<formato>) - Ejecuta el argumento producido por <formaot> como un comando del sistema operativo: if p(v2) then system('type ',v2), fi

Caractersticas del WWWISIS


No es un programa residente Est pensado para trabajar en ambiente Cliente/Servidor Es activado cada vez que se le llama y al terminar no deja procesos en memoria Disponible para plataformas Windows 9x, Windows NT, Unix. etc. Trabaja con un archivo de licencia. La versin que se utiliza en el curso puede ser usada en ambiente de prueba.

Ambiente del Curso


Apache webserver
server root script directory script alias server name C:\APACHE\HTDOCS\ C:\APACHE\CGI-BIN\ cgi-bin localhost

Scripts
pginas html scripts cgi WWWIsis C:\APACHE\HTDOCS\CURSO\ C:\APACHE\CGI-BIN\CURSO\ C:\APACHE\CGI-BIN\

Instalacin y ejecucin
El WWWIsis debe ser instalado en el directorio de scripts del webserver
Apache
Apache\

IIS / PWS
InetPub\

htdocs\ cgi-bin\

wwwroot\ scripts\

Instalacin y ejecucin
WWWISIS puede activarse en un proceso CGI de tres maneras diferentes: Llamando al mdulo ejecutable directamente del campo de edicin de direccin del Browser http://localhost/cgi-bin/wxis.exe?hello Llamando al mdulo ejecutable directamente de un elemento ancla HTML, como argumento del atributo href <a href="/cgi-bin/wxis.exe?IsisScript=example.xis"> WWWISIS anchor call</a>

Instalacin y ejecucin
Llamando al mdulo ejecutable directamente de un elemento de formulario HTML como argumento de accin
<form method=get action="/cgi-bin/wxis.exe"> <input type="hidden" name="IsisScript" value="example.xis"> <input type="submit" name="Enter" value=" Enter "> </form>

Estructura del Script


Los scripts se construyen usando marcas para indicar cada tipo de instruccin (reference.html) Todos comienzan y terminan con las siguientes:
<IsisScript> <section>

</section> </IsisScript>

Toda marca se define por pares, una que abre la funcin <...> y otra que la cierra </...>

Scripts

Primer script
<IsisScript> <section> <display> <pft>'Content-type: text/html'/#</pft> </display> <display>Hello world!</display> </section> </IsisScript>

Tareas en WXIS
<IsisScript> <section> <do task= ... > <parm name= .. > </parm> <parm name= ...> </parm> <parm name= ...> </parm> <loop>
Dentro del loop, se accede a los datos del registro; por cada ocurrencia del ciclo se apunta a cada uno de los registros recuperados.

Informa la tarea del WWWIsis Los parm name definen las caracterstica de la tarea (task=)

</loop> </do> </section> </IsisScript>

Posibles Tareas
Mfnrange: Recorre la base por mfn Search: Bsqueda Keyrange: Recorre el diccionario por claves Fullinvertion: Inversin del diccionario Import: Importacin de registros Invertedload: Carga archivo Invertido List: Lectura de los items de una lista Mastersort: Clasifica registros de una base Update: Actualizacin de registros

Elemento Field
<field action=replace tag=2><pft>v400^b</pft></field> Utilizado para agregar, modificar, eliminar, importar, exportar o definir campos. El atributo action indica el uso del elemento: - cgi, define, delete, export, import, occ, replace, add El atributo tag indica el campo afectado.

Intercambio via CGI


<IsisScript> <section> <field action=cgi tag=1>par1</field> <field action=cgi tag=2>par2</field> . . . <field action=cgi tag=3>parN</field> </section> </IsisScript>

Visualizacin de registros
<IsisScript> <section> <do task=mfnrange> <parm name=db>CDS</parm> <parm name=from>1</parm> <parm name=to>3</parm> <loop> <display><pft>ALL</pft></display> </loop> </do> </section> </IsisScript>

Concepto de Scope
... <field action=cgi tag=1>base</field> <do task=mfnrange> <parm name=db><pft>v1</pft></parm> <parm name=from>1</parm> <parm name=to>3</parm> <loop> <field action=import tag=110>1</field> <display> <pft>mhl,v110': 'v24/#</pft> </display> </loop> </do> ...

Elemento Flow
Es utilizado para desviar la sequencia de ejecucin de las instrucciones de un script. El atributo action puede asumir los valores jump, skip o exit.
... <flow action=jump><pft>if p(v1) then 'GO' fi</pft></flow> <display>Campo 1 ausente</display> <flow action=exit>1</flow>

<label>GO</label> <display>Campo 1 presente, continar</display> ...

Bsqueda en bases de datos


. . . <do task=search> <parm name=db>CDS</parm> <parm name=expression>water * plants</parm> <parm name=from>1</parm> <parm name=count>3</parm> <field action=define tag=1001>Isis_Current</field> <field action=define tag=1002>Isis_Total</field> <field action=define tag=1091>Isis_Status</field> <field action=define tag=1092>Isis_ErrorInfo</field> <loop> <display><pft>v1001,'/',v1002,c15,mfn/</pft></display> </loop> <display> <pft> if val(v1092) > 0 then Error Sintctico: 'v1092/, else if val(v1002) = 0 then 'No se encontraron registros!'/ fi, fi</pft> </display> </do> . . .

Ordenacin de Listas
. . . <do task=mfnrange> <parm name=db>CDS</parm> <loop> <list action=load type=sort> <pft>if p(v24) then '^k',mhu,v24.60,mpl,'^m',mfn fi</pft> </list> <display><pft>mfn(1),c10,v24.60/</pft></display> </loop> </do> <do task=list> <parm name=reverse><pft>On</pft></parm> <field action=define tag=1001>Isis_Current</field> <field action=define tag=1002>Isis_Itens</field> <field action=define tag=1>Isis_Item</field> <loop> <display> <pft>v1001,'/',v1002,c10,ref(['CDS']val(v1^m),v24.60/)</pft> </display> </loop> </do> . . .

Variables del Sistema


Isis_Current - Nmero de iteracin actual del <loop>. Isis_Total - Total de veces que el <loop> se va a ejecutar. Isis_Status - Estado de ejecucin de la tarea. Isis_ErrorInfo - Informacin relativa a un error. Isis_Key - Llave actual. Isis_Posting - Datos del posting actual. Isis_Postings - Total de postings de la llave actual. Isis_Item - Item de una lista. Isis_Itens - Total de items de la lista.

Archivo CIPAR
Activa una tabla de correspondencias de nombres lgicos con nombres fsicos de archivos para la seccin actual. Cada lnea contiene una correspondencia, a la izquierda del caracter = se especifica el nombre lgico, y a la derecha el nombre fsico del archivo. El caracter * indica que la correspondencia es vlida para cualquer archivo de la base de datos.

... <parm name=cipar> <pft> CDS.*=', c:\cursoWXIS\scripts\bases\cds\cds.*',/ </pft> </parm> ...

Documentos HTML con formato


Elemento HTMLPFT Interpreta y formatea un archivo HTML que contiene instrucciones del lenguage de formato.
... <display> <htmlpft><pft>cat('prueba.htm')</pft></htmlpft> </display> ...

En el archivo HTML el formato se incluye entre las marcas [pft] [/pft].

Accediendo al Diccionario
<do task=keyrange> <parm name=db>CDS</parm> <parm name=from>water</parm> <parm name=count>10</parm> <parm name=reverse>On</parm> <field action=define tag=1001>Isis_Current</field> <field action=define tag=1>Isis_Key</field> <field action=define tag=2>Isis_Postings</field> <display><pft>No) POSTINGS',c15,'KEY'/#</pft></display> <loop> <display><pft>f(val(v1001),2,0),') ',v2,c15,v1/</pft></display> <field action=export tag=1031><pft>if val(v1001) = 1 then '1' fi</pft></field> <field action=export tag=1032>1</field> </loop> <display><pft>'***************'/,f(val(v1001),2,0),') ',v1031,' / ',v1032/</pft></display> </do>

Creacin de nuevos registros


... <do task=update> <parm name=db>CDS</parm> <parm name=mfn>New</parm> <field action=define tag=1102>Isis_Status</field> <update> <field action=append tag=1>One more</field> <write>Unlock</write> <display><pft>ALL</pft></display> </update> </do> ...

Modificacin de registros
<do task=update> <parm name=db>CDS</parm> <parm name=mfn>1</parm> <parm name=lockid><pft>'Bloqueado'</pft></parm> <parm name=fst><pft>'10 0 v10'</pft></parm> <parm name=expire>60</parm> <field action=define tag=1002>Isis_Lock</field> <field action=define tag=1003>Isis_Status</field> <update> <write>Unlock</write> <flow action=jump> <pft>if val(v1003)<>0 then 'REGISTRO_BLOQUEADO' fi</pft> </flow> ... <label>REGISTRO_BLOQUEADO</label> </update> </do>

Borrado de registros
... <do task=update> <parm name=db>CDS</parm> <parm name=mfn>1</parm> <parm name=lockid><pft>'Bloqueado'</pft></parm> <field action=define tag=1003>Isis_Status</field> <update> <field action=delete tag=list>ALL</field> <write>Delete</write> </update> </do> ...

Curso Avanzado WWWISIS 4.0


WWWIsis XML IsisScript Server

Alberto E. Pedroso Garca


Desarrollo de Tecnologas de Informacin BIREME - OPS -OMS

Turrialba, Costa Rica - Junio 2001

Trabajo con archivos texto


<do task=import>
Accesa datos de un archivo texto y los carga en la forma de registros de base de datos. El nombre del archivo es indicado a travs del elemento <parm name=file>. El elemento <parm name=type> puede ser usado para indicar el tipo del archivo texto; se supone un archivo texto ISO 2709 si no se indica el tipo de archivo.
... <do task=import> <parm name=file>archivo.txt</parm> <parm name=type>RLine</parm> <loop> <display><pft>ALL</pft></display> </loop> </do> ...

Trabajo con archivos texto


<parm name=type>
Indica el tipo de archivo para exportacin o importacin: ISO2709 es una norma ISO (International Standards Organization) pero limita el nmero de identificacin de los campos a 3 dgitos. HLine es ms eficiente, utiliza el comando H del elemento <proc>. RLine tiene efecto solo para la importacin de datos, donde cada lnea del archivo secuencial ser cargada como un registro. VLine es el recomendado para permitir modificaciones via editor de texto.

Trabajo con archivos texto


<do task=export>
Agrega el registro actual en un archivo de texto. El nombre del archivo debe haber sido previamente indicado a travs del elemento <parm file=...>. El tipo de archivo standard es el ISO2709; para generar otro tipo de archivo de exportacin es necesario indicarlo previamente mediante el elemento <parm type=...>. Los tipos de archivo de exportacin son: ISO2709, HLine, y VLine. ... <do task=mfnrange> <parm name=db>CDS</parm> <parm name=file>CDS.ISO</parm> <loop> <export>this</export> </loop> </do> ...

Funciones
Elemento Function El elemento <function> inicia un bloque de declaracin de una funcin. Los atributos action, tag y split se usan para recibir parmetros igual que en el caso del elemento <field>.
... <function name=Prueba action=replace tag=1> <diplay>Dentro de la funcin<br></display> <diplay><pft>'Campo 1 =',v1</pft></display> </function> ...

Llamado a una Funcin


Elemento Call El elemento <call> indica la llamada de una funcin. La funcin a ser llamada es especificada por el atributo name. El argumento del elemento <call> es pasado como parametro a la funcin.
<function name=ParamTest action=replace tag=1 split=occ> <display><pft>##'ParamTest'/</pft></display> <display><pft>ALL</pft></display> <return action=replace tag=9999 split=occ><pft>(v1/)</pft></return> </function> <section> <call name=ParamTest><pft>Uno'/Dos'/</pft></call> </section>

Inclusin de Archivos
<IsisScript> <include>otroscript.xis</include> <section> ... </section> </IsisScript>

También podría gustarte