Forté Software

Forté is a proprietary application server that was developed by Forté Software and used for developing scalable, highly available, enterprise applications.

History

Forté was created as an integrated solution for developing and managing client/server applications. Forté 4GL consists of an application server, tools for deploying and monitoring an application and an object oriented proprietary programming language, TOOL (transactional object oriented language). Given that TOOL only runs on the Forté application server, many users simply refer to their "TOOL" applications as "Forté" applications. The product itself was 3.5 million lines of C/C++ software, ported to approximately twelve different operating system environments, spanning the range from IBM mainframes and Microsoft Windows PC's. The first release of Forté 4GL was published in August 1994. After releasing this initial product, Forté Inc. proceeded to build several extensions including:

In 1999, Forté Software came out with a version of Forte based on java instead of TOOL, named SynerJ, also referred to as "Forté for Java". As with the original TOOL-based products this consisted of a development IDE, a code repository, and a runtime environment. This new java product was of interest to Sun Microsystems who bought out the company. The TOOL-based listed above were bundled together and re-branded as Unified Development Server (UDS) and Integration Server (IS) under the IPlanet division. The server modules were later bundled together as Enterprise Application Integration (EAI).

Sun declared the product's end-of-life, indicating no future plans to continue development of the product. Sun's official support of Forte ceased at the end of April, 2009.[1]

Capabilities

Being an enterprise application development system, Forté supported close linkage to a number of different relational database systems, including Oracle, Sybase, Microsoft SQL Server, Informix, and DB2. These linkages could be via SQL embedded within the TOOL code, or via SQL constructed on the fly.

It also had support for distributed applications: the developer would create an instance of a specific class, which would be placed on a user-specified server. Calls to methods through instance would be sent across the network transparently; the developer would not need to know the underlying details of how the call would be transmitted.

Programming Language TOOL

TOOL is an object-oriented language with the following features (among others):

TOOL code is case-insensitive. A statement is always terminated by the semicolon. Compound statements are enclosed by the keywords begin and end. Comments are indicated by // or -- (remainder of line becomes a comment), /* ... */.

Data Types

The Simple Data Types are:

The corresponding object data types are (some examples):

Arrays are indicated by the keywords Array of. The first element of an array is indexed by 1.

Variable Declaration

name : string = 'John';
result : integer;
dataArray : Array of IntegerData = new;

Conditional Statements (if-statement, case-statement)

if result = 5100 then
    ...
elseif result != 0 then
    ...
else
    ...
end if;

case result is
    when 1 do
        ....
    when 2 do
        ....
    else
        ...
end case;

Iteration, Loops

for k in 1 to 10 by 2 do
    ...
end for;

for dataItem in dataArray do
    ...
end for;

k : integer = 2;
while k < 14 do
    ...
    k = k + 1;
end while;

Events

An event is posted e.g. by the following statement:

post EV_CustomerSet(id = selectedID);

This statement posts an event named EV_CustomerSet. This event has one argument named "id".

Events are handled by event handlers, for example:

event loop
    preregister
        register GeneralHandler();
        ...
    postregister
        waitTimer.IsActive = true;
        ...
    when EV_CustomerSet( id ) do
        ...
    when waitTimer.Tick() do
        exit;
    when task.Shutdown do
        exit;
end event;

Exception handling

begin
    ...
    raise UsageException();
    ...
exception
    when e : UsageException do
        task.ErrMgr.Clear();
        ...
    else
        ...
        raise;
end;

Multithreading

A new thread is launched by a statement like start task report.Print();

See also

References

External links

This article is issued from Wikipedia - version of the 9/4/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.