Forté 4GL fue un servidor de aplicaciones propietario desarrollado por Forté Software y utilizado para desarrollar aplicaciones empresariales escalables y de alta disponibilidad.
Forté 4GL fue creado como una solución integrada para desarrollar y administrar aplicaciones cliente/servidor. Forté 4GL consta de un servidor de aplicaciones, herramientas para implementar y monitorear una aplicación y un lenguaje de programación propietario orientado a objetos , TOOL (lenguaje transaccional orientado a objetos) . Dado que TOOL solo se ejecuta en el servidor de aplicaciones Forté, muchos usuarios simplemente se refieren a sus aplicaciones "TOOL" como aplicaciones "Forté". La primera versión de Forté 4GL se publicó en agosto de 1994. Después de lanzar este producto inicial, Forté Inc. procedió a crear varias extensiones, entre ellas:
En 1999, Forté Software lanzó una versión de Forté basada en Java en lugar de TOOL, llamada synerJ y también conocida como "Forté para Java". Al igual que los productos originales basados en TOOL, esta versión constaba de un IDE de desarrollo, un repositorio de código y un entorno de ejecución. Este nuevo producto Java despertó el interés de Sun Microsystems , que compró la empresa. Las extensiones basadas en TOOL que se enumeran más arriba se agruparon y se renombraron como Unified Development Server (UDS) y Integration Server (IS) bajo la división IPlanet . Los módulos de servidor se agruparon posteriormente como Enterprise Application Integration (EAI).
Sun declaró el fin de la vida útil del producto, indicando que no había planes futuros para continuar con el desarrollo del mismo. El soporte oficial de Sun para Forté finalizó en abril de 2009. [1]
Al ser un sistema de desarrollo de aplicaciones empresariales, Forté 4GL admitía una estrecha vinculación con varios sistemas de bases de datos relacionales diferentes, incluidos Oracle , Sybase , Microsoft SQL Server , Informix y DB2 . Estas vinculaciones podían realizarse a través de SQL integrado en el código de TOOL o a través de SQL construido sobre la marcha.
También ofrecía soporte para aplicaciones distribuidas: el desarrollador creaba una instancia de una clase específica, que se ubicaba en un servidor especificado por el usuario. Las llamadas a métodos a través de la instancia se enviaban a través de la red de manera transparente; el desarrollador no necesitaba conocer los detalles subyacentes de cómo se transmitiría la llamada.
TOOL es un lenguaje orientado a objetos con las siguientes características (entre otras):
Object
El código de TOOL no distingue entre mayúsculas y minúsculas. Las sentencias siempre terminan con punto y coma. Las sentencias compuestas se encierran entre las palabras clave begin
y end
. Los comentarios se indican con // o -- (el resto de la línea se convierte en un comentario), /* ... */.
Tipos de datos
Los tipos de datos simples son:
Los tipos de datos de objeto correspondientes son (algunos ejemplos):
Las matrices se indican mediante las palabras clave Array of
. El primer elemento de una matriz se indexa con 1.
Declaración de variable
nombre : cadena = 'Juan';resultado: entero;dataArray: Matriz de IntegerData = new;
Declaraciones condicionales (declaración if, declaración case)
Si resultado = 5100 entonces ...De lo contrario, si el resultado es != 0, entonces ...demás ...fin si;El resultado del caso es Cuando 1 lo hago .... Cuando 2 lo hacen .... demás ...caso final;
Iteración, bucles
para k en 1 a 10 por 2 hacer ...fin para;para dataItem en dataArray hacer ...fin para;k : entero = 2;mientras k < 14 hacer ... k = k + 1;terminar mientras;
Eventos
Un evento se publica, por ejemplo, mediante la siguiente declaración:
publicar EV_CustomerSet(id = selectedID);
Esta declaración publica un evento llamado EV_CustomerSet
. Este evento tiene un argumento llamado "id".
Los eventos se gestionan mediante controladores de eventos, por ejemplo:
bucle de eventos preinscribirse registrar GeneralHandler(); ... posregistrarse waitTimer.IsActive = verdadero; ... cuando EV_CustomerSet( id ) lo hace ... cuando waitTimer.Tick() hace salida; cuando se realiza la tarea.Apagar salida;evento final;
Manejo de excepciones
comenzar ... generar UsageException(); ...excepción cuando e: UsageException hacer tarea.ErrMgr.Clear(); ... demás ... aumentar;fin;
Multiprocesamiento
Un nuevo hilo se inicia con una declaración comostart task report.Print();