Date: Fri, 29 Mar 2024 12:38:34 +0000 (UTC) Message-ID: <236567582.11057.1711715914960@911f0a1bad02> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_11056_1206227829.1711715914959" ------=_Part_11056_1206227829.1711715914959 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Servoy is unique in that it is both a Rapid Application Development (RAD= ) tool and a production deployment platform. Written entirely in Java, usin= g industry standard components and protocols, Servoy offers the scalability= of an enterprise-level computing platform, while at the same time providin= g unparalleled developer productivity.
As is the promise of Java, applications developed in Servoy can be deplo= yed to all modern operating systems, including Windows, Mac, Linux, Solaris= , etc. without the need to rewrite or recompile code.
Applications written in Servoy can also be deployed to any modern browse= r, including IE, Firefox, Safari, Opera, Chrome, etc. There is no need to r= ewrite or tweak an application to ensure a consistent experience across all= browsers and no proprietary protocols or browser plug-ins are ever used.= p>
Servoy offers two main client options and any application developed in S= ervoy can be deployed to either client without the need for any rewrite.
The Smart Client provides a= Client-Server setup, where applications assume the native look and feel of= the client operating system.
The Web Client provides a dynamic browser experience enriche= d by AJAX technology, CSS and HTML. Developers are never required to author= their own markup, client-side JavaScript or AJAX (Of course they can if th= ey want) .
Servoy is NOT a database. There are plenty great databases out there and= Servoy can connect any modern RDBMS (and even some that aren't so modern).=
Servoy provides a powerful Applica= tion Server which brokers connections between clients and back-end r= esources. This architecture is far more favorable to the 2-tier architecture used by most 4GL tools, where c= lients connect directly to back-end databases. An application server offers= the following advantages over a 2-tier setup.
Servoy applications never have to be installed on the client machine.
Smart Client applications will download and install automatically using = Java WebStart technology. In fact, developers can easily roll out new chang= es to users, with a single click to export a new build to the Application S= erver. The Application Server does NOT have to be restarted and connected c= lients do NOT have to be shutdown. Moreover, the Application Server support= s versioning for roll-back, roll-forward capability.
Simply put: No Installation. No Maintenance.
A solution is a single application containing forms, methods, v= ariables, and other items built in Servoy Developer.
Solutions can stand alone, or they may also be a module. A modu= le is a solution that is part of another solution. A solution can be specif= ied to be a module, but it is not required to use a solution as a module.= p>
A form is the Servoy object that is used to edit, view, modify,= insert, find and delete data. Forms can contain fields, labels, graphics, = tabpanels, lines, buttons, portals and shapes - each of which has its own s= et of design time commands, events and properties.
Forms are normally based on a single database table, which means the dat= a from that table is tied to the form. Forms can also not be linked to any = table, meaning data will not be tied to the form.
Forms can also have methods and variables attributed to them, making for= m a unit of scope in Servoy programming. This means forms can have methods = and variables that are within the scope of the form only. Inherited forms c= an also have methods and variables that are inherited from the parent form = as well.
A form element is a Servoy object that can be placed on a form = for a purpose. Form elements include:
A dataprovider manages information. Dataproviders are not only = database columns, but also include calculations, aggregations, global varia= bles, and form variables.
Servoy's scripting engine uses methods to identify code that be= longs together. A Servoy method is essentially the same as a JavaScript fun= ction. It is a grouping of code in a single unit used to perform various ta= sks in Servoy. A method can call other methods, set runtime properties for = Servoy form elements, and call functions available in the scripting librari= es.
A function in Servoy is the same as a method. It is a JavaScrip= t function and is seen as the first line in a method call as in the sample = below.
function o= nActionAdd(event) { //code here }=20
All of the methods written in Servoy will begin with the word function i=
n the actual .js
page they are written in.
A plugin extends the functionality of Servoy by using the Java = programming language. Written in Java, they can be accessed in a solution t= hrough scripting. Plugins can add additional functions available to the Ser= voy programmer and can link to resources outside of Servoy. An API is avail= able to write plugins for Servoy.
The following concepts are related to data management in Servoy.
A table is a preset format of rows (records) and columns (field= s) that defines a store of information in a relational database. Data from = created or pre-existing tables can be used by one or more forms in a Servoy= solution.
A column is an attribute of a database table.
A record is mapped to a single row in a SQL database table.
A foundset is a Servoy object that represents a query from a si= ngle database table. Foundsets handle the caching of data for display, but = do not need to requery the database to do so.
Any form based on a table in Servoy has a underlying foundset managing t= he data for it. Forms based on the same table will share a foundset unless = they are directed differently through scripting or design time property.
Foundsets can be created, accessed, altered, controlled, and applied thr= ough scripting.
A relation
is a Servoy object used to define the key relati=
onship between two database tables. A standard relationship is defined by t=
he primary key of one table being linked to a foreign key of another. Some =
features of a relation include:
A dataset is a Servoy object that can hold row and column data.= Datasets can be created via scripting, or can be returned by a custom SQL = query as well. Unlike foundsets, datasets do not represent a live link to a= database resource.
A calculation is a derived value that acts like another column = in the database table. Calculation data is the result of a JavaScript funct= ion and is similar to a Servoy method. The main difference is what is avail= able to the function; a calculation function cannot access form variables, = values from form elements, or application functions as it is calculated in = the data layer of the application. The function does have the current colum= n's data and any related data available to it.
Calculations come in two variants: Stored Calculations and Unstored Calc= ulations: Stored calculation are actual database columns, while unstor= ed calculation only live in memory when the solution is running.
Calculations are calculated when their value is requested, for example w= hen it is displayed in the UI or used in scripting or in another calculatio= n and the value was not calculated yet or has been flagged as invalid. = ;A calculation is flagged as invalidated when a change occurs in one of the= dataproviders on which the calculation depends.
If there are UI elements that display the calculation, they will be noti= fied to update themselves and the calculation is executed to calculate the = new value.
If the calculation is a stored calculation, the record it is part of wil= l be marked as changed (thus it'll be in the list of edited records) and wi= ll be part of next save action.
An aggregation is a value derived from a set of records in a ta= ble, they are computed based on a set of values in a column. Similar to cal= culations, aggregation metadata is stored with the solution, but are based = on a table. Aggregations can count, sum, maximum, minimum, and average.
A variable can be defined and holds data at runtime, but is not= tied to any database column. Variables can be used as a dataprovider on a = form, and can be created in either form scope or global scope.
=20