Procedure objectOfficial Content

Procedure Procedure_GX_icon is the GeneXus object that allows you to define batch jobs together with full read-write access to the database. It includes printing features (displaying the output on screen or through a printer, as well as saving it on a file). 

 


Scenarios

1. A typical example is a list, where the procedure is meant to navigate some tables, reading the database, to obtain the output that is then displayed on the browser, in a PDF format. For example, in the context of a Travel Agency application, a tourist attractions list:

Procedure_AttractionsPDF_Execution

2. Another example: all the flights that were scheduled to take off from a given airport on a certain day must be posponed. To achieve this, a procedure must be programmed to navigate the flights table, changing the departure date and time for the appropriate flights (in this case, no output is needed).

3. A third example is a process that increases the flight prices according to a rate set by the airlines.

4. And a last example could be a complex calculation (other than a formula) that, for instance, needs to navigate some tables and possibly use certain functions, formulas and transformations in order to obtain the desired result (for instance, the destination at which more passengers arrive in a period of time, considering all airlines).


Sections

A Procedure object has several sections that can be defined:

  • Source: This is the main section because it is where the code corresponding to the procedure logic is written.
  • Layout: In this section you define the output presentation. Not every procedure is meant to have this kind of output (or any output). This means that if the procedure prints information, it is in this section where you have to design the corresponding output, specifying the information to be printed along with its format. The Layout in a Procedure can be seen as the Form in a Web Panel or Transaction.
  • Rules: Define some declarative aspects as the parameters received by the object, some default values for variables, etc.
  • Conditions: In this section you define conditions to be matched by the data to be retrieved (general filters).
  • Variables: Like most objects, it also has a section for defining variables, that are local to the object.
  • Help: A detailed description can be written for the procedure, to act as online help for the end user at execution time
  • Documentation: A detailed description of the procedure can be written in order to document it.

Like most objects, it also has a Properties editor to configure general aspects of the object: some apply to all objects, such as the name, others are specific to procedure objects, such as the kind of output (only to file, printer, etc), the call protocol when the object is main, etc.

Summing up, we can classify a procedure according to whether the focus is on:

Note: As its name suggests, the programming style supported is imperative, although there are also declarative parts (ie: the Layout).

Example

Suppose you need to define a PDF report in order to list the airlines a Travel Agency works with. The procedure that implements this requirement could have the following Layout (for a complete explanation go to Procedure Layout):

Layout Pb_Body

And the logic could be:

Header
    Print Pb_Header
End
For each Airline
    Print Pb_Body
Endfor

...where the Header command provides the header that each page of the resulting report will have, the For Each command is used to access the database, and the Print Command is the command that prints the Layout's called printblock in the output.

Note

When a Procedure is declared Main Object, it will be generated with the prefix "a" as follows: aProcedureName (.Net and Java only).

Videos

Start Video Introduction to procedures, lists and For Each command



Subcribe to this category's changes
Sub CategoriesAdd a new subcategory in this category
PagesAdd a new page in this category
Was this page helpful?
What Is This?
Your feedback about this content is important. Let us know what you think.