1 TX Manager
1.1 Introduction
1.1.1 What is it?
A Transaction Manager
is a component of wic_jrep_object
to trigger actions after events.
1.1.2 What can I do?
A Transaction Manager
allows defining actions interposed to the events of INSERT, DELETE, UPDATE or RESET of a SQL object acting as a program trigger (non-resident in database).
1.2 Arquitecture
1.2.1 Structure
1.2.2 Dictionary tables
The table wic_jrep_trxmgr
allows you to define the transaction handler for an object.
wic_jrep_trxmgr | |
---|---|
Label | Description |
Object | Object code |
Type | Event type
|
Execute always | Call mode to transaction manager
|
When | Moment to execute statement
|
trx_refresh | |
Condition order |
|
Javascript condition | Javascript condition for execute statement
|
Return | Return function action code
|
Statement | Statement to execute
|
trx_stmt_backup | |
Comments | Comments to describe function |
Created by |
|
Date created |
|
Modified by |
|
Date updated |
|
1.3 Implementation
The code of an event accepts both SQL functions and calls to XSQL (scripts) can refer to values of the row that processed.
The operations on existing rows (UPDATE
or DELETE
) can use any value of the row through the reference operator #.
INSERT
can only operate if the table has a field serial
or primary key
. Therefore, if the table does not have an univocal reference value, the event INSERT
can not be executed since after the operation the inserted row can not be determined.
1.3.1 Reset
During the loading of a form, the system executes different inspection and data search processes, in order to preload, when possible and is defined, a subset of field values.
1.3.2 Insert
Before and after an INSERT
you can do actions like update other tables of the database with values of the row that processed.
This is the flowchart of the transaction:
Javascript Condition
To execute the TX Manager the javascript condition must be met, if not we will continue with the flow of the transaction as if it didn't exist.Exception
Any exception called during the flow of the transaction will cause aROLLBACK
of the connection, erasing any changes made.
1.3.3 Update
Before and after an UPDATE
you can do actions like update other tables of the database with values of the row that processed.
This is the flowchart of the transaction:
This case is practically the same as INSERT
and DELETE
, but with a particular case.
Before and Continue Always*
If we UPDATE
without changes and exists a TX Manager of type Before and Continue Always we will run this TX Manager and we will continue with the flow as if there had been a transaction (as long as the condition is met).
This case is used to set values with a call into script, if it's used in another way, it won't work.
Javascript Condition
To execute the TX Manager the javascript condition must be met, if not we will continue with the flow of the transaction as if it didn't exist.Exception
Any exception called during the flow of the transaction will cause aROLLBACK
of the connection, erasing any changes made.
1.3.4 Delete
Before and after an DELETE
you can do actions like update other tables of the database with values of the row that deleted.
This is the flowchart of the transaction:
Javascript Condition
To execute the TX Manager the javascript condition must be met, if not we will continue with the flow of the transaction as if it didn't exist.Exception
Any exception called during the flow of the transaction will cause aROLLBACK
of the connection, erasing any changes made.
1.4 Samples
Current section shows some useful examples with the most common uses of Transaction Manager
. However, this tecnology is totally open and highly expandable, so feel free for using your own implementation and not be limited by this samples.
1.4.1 Insert a row before an Insert
In this example, before an INSERT
transaction the Transaction Manager
will be called and a new row will be added before the transaction.
- trx_type: Insert
- trx_exec_when: Before and Continue
INSERT INTO studio_trx1 (field_char1) VALUES ('TRX2');
If 'field_char1' is primary key?
This is a bad implementation forTransaction Manager
because it will only work when the table is empty. After the first transaction, the Transaction Manager
will always generate an exception because there will already be a field with these values.
1.4.2 Add a log before and after a transaction
In this example, we will create some Transaction Managers
to generate Logs
from the transactions that we do in a table.
We will only define the Transaction Managers
of the UPDATE
for simplicity.
- trx_type: Update
- trx_exec_when: Before and Continue
INSERT INTO studio_log (log_message, log_char) VALUES ('Prepared to update a value.', ${field_char1});
- trx_type: Update
- trx_exec_when: After
INSERT INTO studio_log (log_message, log_id) VALUES ('Value updated!.', ${field_id});
TO DO
This section is incomplete and will be concluded as soon as possible.2 Form Actions
2.1 Introduction
2.1.1 What is it?
Form Actions
is an abstract parameterization of actions which can be triggered from the allowed components of an Axional Studio Formauto.
Actions can be triggered from different components. Let's see some examples:

Button that triggers an action

Context menu with some actions

SQL Table with column actions
executeFormAction("ACTION_EXEC_STMT");
JS function to call an action from its mnemonic
The purpose of this abstract parameterization is to unify all the ways to execute actions and prepare the framework for increasing this ways.
Even so, each form of triggering an action will have its particularities, which will be explained later.
2.1.2 What can I do?
Form actions are mainly focused on the execution of client or server actions, such as update a row of a table or show an alert on the navigator.
Its use is interesting when:
- An action has to be done to an object (with a button)
- An action has to be done to a row of a table (with an action on context menu of an SQL Table, or with a column action)
- A new window with a dynamic URL has to be opened
- And many more uses...
The best thing of form actions is that by separating the parameterization, the code will be much more efficient and less redundant, taking advantage of it much more.
2.1.3 What do I need?
In first place, Table Colorizer requires the basic Axional Studio infrastructure, which includes:
- Axional Studio Server, properly set up.
- Dictionary database
- A target database
In second place, as actions have to be triggered from buttons of Axional Studio Form Object
or context menu of rows in SQL Tables
, it is required to have at least one cataloged object.
2.2 Architecture
2.2.1 Structure
2.2.2 Dictionary tables
The creation of Form Actions
involves three parameterization tables:
- Action definition (wic_jrep_form_action)
- Action fields definition (wic_jrep_form_action_field)
- Action dynamic fields definition (wic_jrep_form_action_dynfield)
As it is explained below, Form Actions
functionalities only requires always the table wic_jrep_form_action; It will be explained when is necessary to use the other tables below.
Action definition
wic_jrep_form_action | |
---|---|
Label | Description |
Action Id | Univocally identifier of a Formauto Action parametrization in the dictionary. |
Object Code | Code of the JRepObject the action belongs to.
|
Action code | Mnemonic code which identifies the action univocally within the jRepObject. It is used when is required to have a fixed reference to the action, for example, if is called from a Javascript program. |
Description | Functional description of the action. It can be useful for explaining what this action is for, when can be executed and the consequences of its execution. |
Label | Label code associated with the action description. That is, the text to be put on the action trigger element (button, context menu, etc. associated to the action). The label code must be previously defined in the master of logic dictionary labels (wic_jdic_lbldata). Optionally, the label code could be a UEL expression. Which allow using dynamic labels, generally when use iteration actions.
|
Icon | Icon code associated with the action. That is, the icon to be put on action trigger element. The icon code must be previously defined in the master of dictionary images (wic_image_object). |
Style | Determine the action style; generally, depending on the action sensitivity: The action style is applied to the action trigger element.
|
Insert | Flag indicating whether the context where the action is applied must have INSERT permission or not. In case of the value of this flag will be zero it is not required to have the corresponding permission. Otherwise, it will be required.
|
Delete | Flag indicating whether the context where the action is applied must have DELETE permission or not. In case of the value of this flag will be zero it is not required to have the corresponding permission. Otherwise, it will be required.
|
Update | Flag indicating whether the context where the action is applied must have UPDATE permission or not. In case of the value of this flag will be zero it is not required to have the corresponding permission. Otherwise, it will be required.
|
Execute | Flag indicating whether the context where the action is applied must have EXECUTE permission or not. In case of the value of this flag will be zero it is not required to have the corresponding permission. Otherwise, it will be required.
|
Enable expr | Enabling client side UEL expression. In case of an expression is defined, the action will only be enabled when it is evaluated to TRUE.
|
Disabled style |
|
Validation function | Javascript code executed before start action execution, or before showing action form is necessary. If defined, the code will be executed, in case the code returns FALSE the action execution will be prevented. Otherwise, the action will be executed as expected. This code is useful for applying some verifications in form, such as if there are any row selected.
|
Form title | Label code associated with the fields form title. That is, the text to be put as a header of the form that appear before executing the action statement. The label code must be previously defined in the master of logic dictionary labels (wic_jdic_lbldata). |
Form size | The size of the fields Form.
|
Message stmt | SQL Statement for retrieving a message to be shown in the Action Form. That is, a text to be put at the top of the form that appear before executing the action statement. The statement must return a ResultSet of one row and one column. Otherwise, the message should not be shown properly. This message generally contains a brief description of the process that will be executed with the action, and its consequences.
|
Requires confirmation | Flag indicating if ask the user for confirmation before executing the action. In case of the value of this flag will be zero confirmation is not required. Otherwise, the user will be asked for confirmation.
|
Execution type | The execution type determines the type or language of the code defined in the execution statement (action_exec_stmt).
|
Exec stmt | Main action statement executed when confirm the action. It generally contains the action program; that is, the code executed to implement the action functionality. |
Data update mode | This flag determine how to update the data of the context the action is applied.
|
Notification type | This flag determine what type of response will be emitted after action execution. The selected type will condition the action statement response.
|
Iteration stmt | SQL Statement for implementing button iteration. Button iteration allows having dynamic buttons. In consequence, the current statement must returned a ResultSet; each row of the ResultSet will be a button.
|
Group | Group actions
|
Created by |
|
Date created |
|
Modified by |
|
Date updated |
|
Action fields definition
If the action defined has to have fields, another table will be needed to define the action fields:
wic_jrep_form_action_field | |
---|---|
Label | Description |
Action Id | Formauton Action identifier the action fields belongs to. |
Position | Determines the order of appearance of the field in form. |
Column | The column name identifies the field univocally within the Button Form. The combination of field_tabname and field_colname columns determines the field label. |
Table | Name of the table the column name belongs to. If there is not table defined, the system will consider the primary table of the main cursor as the table of the field column name. |
Default | Initial value for the field. It could be either a constant or a UEL expression. |
Type | The field type determines the entry conditions and format of the data.
|
Size | Field size determines the maximum number of characters for the field. If zero, there is not maximum number. |
Entry | Field entry is the capability of whether the field is writable or read only. If the corresponding value is zero the field is read only; otherwise, is writable.
|
Nullable | Field nullability is the capability of whether letting the field blank or not. If the corresponding value is zero the field can not be let blank; otherwise, it can. In case of letting blank any required field the Button Form can not be submitted, so the action can not be executed.
|
Lettercase | Letter case transform determines if the field text must be transformed after typing.
|
Condition disable | UEL expression which dynamically determines if the field is editable. If defined, in case of the expression is evaluated to TRUE the field will not be editable, even if the field_is_entry field is enabled. In case of the expression use Form Button fields, the field entry property might change while filling the form.
|
Filtering table | Soft Reference table identifier. In combination with field_sref_method determines the Soft Reference to apply to the field. |
Method | Soft Reference method identifier. In combination with field_sref_tabname determines the Soft Reference to apply to the field. |
SQL vars (Form:SQL) | Columns mapping from button fields to Soft Reference.
|
Column mapping (SQL:Form) | Columns mapping from Soft Reference to button fields.
|
Action dynamic fields definition
If the action has to have fields, but we want to define these fields dynamically, the following table will used :
wic_jrep_form_action_dynfield | |
---|---|
Label | Description |
Action ID | Formauton Action identifier the action fields belongs to. |
Position | The position of the field is merged with the definition of normal fields. |
Statement | Contains the statement which will return a ResultSet with the list of columns.
|
Table | Contains the name of the column in the ResultSet referencing the table the field column name belongs to. If set this attribute blank, or the value of this column in the ResultSet is NULL, the system will consider the primary table of the main cursor as the table of the field column name. |
Column | Contains the name of the column in the ResultSet referencing the field column name. The column name identifies the field univocally within the Button Form. The combination of fields_tabname and fields_colname columns determines the field label. |
Default | Contains the name of the column in the ResultSet referencing the field default value. If set this attribute blank, or the value of this column in the ResultSet is NULL, the field will not have default value. |
Type | Contains the name of the column in the ResultSet referencing the field type. If set this attribute blank, or the value of this column in the ResultSet is NULL, the field type will be CHAR. |
Size | Contains the name of the column in the ResultSet referencing the field size. Field size determine the maximum number of characters a field can hold. If zero, there is not maximum number. If set this attribute blank, or the value of this column in the ResultSet is NULL, the field size will be zero; so no maximum will be applied. |
Entry | Contains the name of the column in the ResultSet referencing the field entry type. Field entry is the capability of whether the field is writable or read only. If the corresponding value in ResultSet is zero the field is read only; otherwise, is writable. If set this attribute blank, or the value of this column in the ResultSet is NULL, the field is writeable. |
Nullable | Contains the name of the column in the ResultSet referencing the field nullability. Field nullability is the capability of whether letting the field blank or not. If the corresponding value in ResultSet is zero the field can not be let blank; otherwise, it can. If set this attribute blank, or the value of this column in the ResultSet is NULL, the field can be let blank. |
Lettercase | Contains the name of the column in the ResultSet referencing the field letter case conversion. Letter case transform determines if the field text must be transformed after typing. If set this attribute blank, or the value of this column in the ResultSet is NULL, the field text will not be converted. |
Filtering table | Contains the name of the column in the ResultSet referencing the Soft Reference table identifier. In combination with field_sref_method determines the Soft Reference to apply to the field. |
Method | Contains the name of the column in the ResultSet referencing the Soft Reference method identifier. In combination with field_sref_tabname determines the Soft Reference to apply to the field. |
SQL vars (Form:SQL) | Contains the name of the column in the ResultSet referencing the columns mapping from button fields to Soft Reference. |
Column mapping (SQL:Form) | Contains the name of the column in the ResultSet referencing the columns mapping from Soft Reference to button fields. |
2.3 Implementation
The implementation of Form Actions
is achieved by adding a defined action to an element that allow its use.
The implementation of Form Actions
is defined by one entity:
- Form actions (wic_jrep_form_action)
The former defines the action, and according to this action involve another entities like form action fields (wic_jrep_form_action_field) and/or form action dynamic fields (wic_jrep_form_action_dyn_field).
2.3.1 Form action
The form action contains all the necessary information to execute an action. Each action is identified by a unique id (action_id), and a unique code (action_code) of an object identified by a unique code (rep_code). This unique id can be use by more than one object (from a button and from a context menu, for example).
Defining a form action
To start defining our action, the following values will be indicated:
-
Identification
- Code
- Style
- Label
- Icon (not required)
- Description (not required)
-
Authorizations
- Insert
- Delete
- Update
- Execute
-
Checks
- Validation function (not required)
- Enable expression (not required)
- Disable style
-
Execution
- Type
- Update mode
- Output type
- Confirm
- Statement
-
Form options
- Title (not required)
- Size
-
Iteration
- Iteration statement (not required)
- Iteration group
- Message statement (not required)
Identification

Code
The Mnemonic Code identifies the action univocally within the object.
Style
The Style determines the action sensivility to the trigger element.
Only enabled on buttons
Action style is only applicable on buttons (wic_jrep_form_butt) and column action buttons (wic_jrep_box_sqltable_out).Label
The Label determines the text to be put on the trigger element. It could be:
- A label code defined previously on wic_jdic_lbldata
- An UEL expression (generally when iteration statement is defined)
Icon
The Icon identifies the icon code to be put on the trigger element. It is not required. It could be:
- An image code defined previously on wic_image_object
- An UEL expression (when iteration statement is defined)
Only enabled on context menu and column actions
Action icon is only applicable on context menu of SQL boxes (wic_jrep_box_celldata_action) and on SQL table column actions (wic_jrep_box_sqltable_out).Description
The Description contains the functional description of the action. It is not required.
Authorizations

Insert
The Insert flag indicates whether the context where the action is applied must have INSERT permission or not.
- False: Insert permission not required
- True: Insert permission required
The default value is true.
Disabled on SQL Tree context menu
Action can insert is not applicable on SQL Tree context menu (wic_jrep_box_celldata_action).Delete
The Delete flag indicates whether the context where the action is applied must have DELETE permission or not.
- False: Delete permission not required
- True: Delete permission required
The default value is true.
Disabled on SQL Tree context menu
Action can insert is not applicable on SQL Tree context menu (wic_jrep_box_celldata_action).Update
The Update flag indicates whether the context where the action is applied must have UPDATE permission or not.
- False: Update permission not required
- True: Update permission required
The default value is true.
Disabled on SQL Tree context menu
Action can insert is not applicable on SQL Tree context menu (wic_jrep_box_celldata_action).Execute
The Execute flag indicates whether the context where the action is applied must have EXECUTE permission or not.
- False: Execute permission not required
- True: Execute permission required
The default value is true.
Only enabled on buttons
Action style is only applicable on buttons (wic_jrep_form_butt).Checks

Validation function
The Validation function is a JS code executed before start action execution, or before showing action form if necessary. It is not required.
Enable expression
The Enable expression determines with a client side UEL expression if the action is enabled. It is not required.
Disable style
The Disable style determines if a disabled action has to be disabled or hidden.
The default value is Disabled.
Execution

Type
The execution Type determines the type or language of the code defined in the execution statement.
- Client Side (Javascript)
- Server Side (SQL, XSQL, Javascript)
The default value is Server Side.
Update mode
The Update mode flag determines how to update the context data of the action that is applied.
- No refresh
- Refresh row
- Refresh cursor
- Refresh box
The default value is No refresh.
Only enabled on Server Side
Update mode is only enabled if execution type of action is Server Side. Otherwise, the context will not be refreshed.Output type
The Output type flag determines what type of response will be issued after action execution.
- None
- Message
- Datatable
- URL Modal
- URL New window
- URL Refresh window
Only enabled on Server Side
Update mode is only enabled if execution type of action is Server Side. Otherwise, the context will not be refreshed.Confirm
The Confirm flag indicates whether the user has to confirm before the execution of the action.
- False: Confirmation is not required
- True: Confirmation is required
The default value is true.
Statement
The execution Statement determines the main action statement executed after confirm the action.
Generally contains the action program (the code executed to implement the action functionality).
Form options

Title
The form Title identifies the label code associated with the fields form title, that contains the text to be put as a header of the form that appears before the execution of the action statement.
The label code must be previously defined previously on wic_jdic_lbldata.
Size
The form Size determines the size of the fields form. There are four sizes predefined:
- Auto (Adapted to number and size of the fields)
- Small
- Medium
- Big
The default value is Auto.
Iteration
Iteration statement

The Iteration statement contains the SQL Statement for implementing action iteration. Action iteration allows having dynamic actions.
In consequence, the current statement must return a Result Set, and each row of the Result Set will be an action.
Only enabled on buttons and column actions
Action iteration is currently only applicable on buttons (wic_jrep_form_butt) and SQL Table column actions (wic_jrep_box_sqltable_out).Iteration group
The Iteration group flag determines if iteration column actions are shown compacted on a drop down list or as separated column buttons.
The default value is false.
Only enabled on column actions
Action iteration group is only applicable on column actions (wic_jrep_box_sqltable_out).Message statement

The Message statement is an SQL Statement for retrieving a message to be shown in the top of the action form.
The statement must return a Result Set of one row and one column. Otherwise, the message should not be shown properly.
Defining action fields
Actions can have fields to obtain necessary information to be executed, in this case for any necessary field to be created it will be necessary an instance of wic_jrep_form_action_field with the following values:
-
Identification
- Position
- Table (not required)
- Column
- Type
- Size
- Default (not required)
-
Input options
- Editable
- Nullable
- Lettercase
- Disable expression (not required)
-
Soft reference options
- Table (not required)
- Method (not required)
- Input mapping (not required)
- Output mapping (not required)
Identification

Position
The Position determines the order of appearance of the field in form.
Order of fields
The column field_order of the tables wic_jrep_form_action_field and wic_jrep_form_action_dynfield are related to each other.Table
The Table identifies the name of the table the column name belongs to.
If there is no table defined, the system will consider the primary table of te main cursor as the table of the field.
Column
The Column name identifies the field univocally within the button form.
The field label will be determined from the combination of field_tabname and field_colname.
Type
The Type determines the entry conditions and format of the data. It can have these values:
- CHAR
- INTEGER
- DECIMAL
- DATE
- DATETIME
The default type is CHAR.
Size
The Size determines the maximum number of characters for the field. If zero, there is no maximum number.
The default value must be 0.
Default
The Default value determines the initial value for the field.
It could be a constant or a UEL expression.
Input options

Editable
The Editable flag determines whether the field is writable or read only.
- False: Read only
- True: Writable
The default value is true.
Nullable
The Nullable flag determines whether the capability of letting the field blank or not.
- False: Can not be blank
- True: Can be blank
The default value is true.
Lettercase
The Lettercase transform determines if the field text must be transformed after typing.
- None: Do not apply any conversion
- Uppercase: Converts the value to uppercase letters
- Lowercase: Converts the value to lowercase letters
The default value is None.
Disable expression
The Disable expression is an UEL expression which dynamically determines if the field is editable or not.
- True: The field will not be editable
- False: The field will be editable
In case of the expression use action fields, the field entry property might change while filling the form.
Soft reference options

Table
The Table identifies the soft reference table identifier.
In combination with field_sref_method determines the soft reference to apply to the field.
Method
The Method identifies the soft reference identifier.
In combination with field_sref_tabname determines the soft reference to apply to the field.
Input mapping
The Input mapping contains the columns mapping from action fields to soft reference.
Output mapping
The Output mapping contains the columns mapping from soft reference to action fields.
Defining fields dynamically
Action fields can also be created dynamically.
In this case it is necessary to create instances of wic_jrep_form_action_dynfield with the statement that will return the result set with the information of the fields.

The columns of wic_jrep_form_action_dynfield are practically the same as the columns of wic_jrep_form_action_field (except field order), with the difference than for dynamic fields the mapping column of the statement is set, because the result set will contain the information to generate the fields.
To obtain this information the fields_stmt has to be set, like here:
<select> <columns>*</columns> <from table='studio_form_action_dynfields' /> <where>dyn_action = 'ACTION_1300'</where> <order>dyn_order</order> </select>
Then, use the columns of the statement to set the mapping to generate the fields.
Order of fields
The column field_order of the tables wic_jrep_form_action_field and wic_jrep_form_action_dynfield are related to each other.2.3.2 Action triggers
A Form Action can be triggered from different elements within a Form:
- Form Buttons (wic_jrep_form_butt)
- SQL Boxes Context Menu (wic_jrep_box_celldata_action)
- SQL Boxes Columns (wic_jrep_box_sqltable_out)
- Client side Javascript call
While Form Buttons, SQL Boxes Context Menu and SQL Boxes Columns are used on server side, the JS call from a function will be explained in the Client Side section.
Form Buttons
Dictionary
wic_jrep_form_butt | |
---|---|
Label | Description |
Identifier | Internal ID Button |
box_id | Box identifier |
Code of the object | Object Code
|
Action Id | Action Identifier |
Position | Button Position |
Type | Type of sentence to execute.
|
Name | Button name
|
Head | Window Name
|
Width | Window Width |
Height | Window Height |
Style | Button style
|
If canInsert | If can Insert
|
If canDelete | If can Delete
|
If canUpdate | If can Update
|
If canExecute | If can Execute
|
If isRowSelected |
|
If existsParent |
|
Confirm | If needs confirm before execute action button
|
Validate function / condition | Function / condition to validate before execute (if false no execute) |
Host condition (JS) | Condition javascript
|
butt_message | Message
|
butt_message_backup | Message backup |
Server condition (UEL/SQL) | JavaScript or SQL statement that determines the button
|
butt_when_backup | When backup |
Cache | Cache SQL sentence condition to active button
|
Comments | Comments of the button |
Iterate cursor | Cursor iteration, for each record it creates a button
|
butt_foreach_backup | Foreach backup |
SQL / XSQL sentence / Javascript | SQL / XSQL sentence or Javascript
|
butt_stmt_backup | Statement backup |
Created by |
|
Date created |
|
Modified by |
|
Date updated | Updated date
|
Defining a button

To start defining a button, the following values will be indicated:
- Action Id
- Position
- If row selected
- If parent
- Enable condition
- Cache
- Script event (deprecated)
Action Id
The Action Id identifies univocally the referenced action in the dictionary.
Action constraint
Only actions of the current JRep Object can be executed.Position
The Position indicates the order of the action on form/box.
If row selected
The If row selected flag indicates if the button is enabled or not depending on reset.
- True: The button will be enabled only if there is some register in the cursor.
- False: The button will appear always.
If parent
The If parent flag indicates if the button is enabled or not depending on object parent.
- True: The button will appear only if the current object has parent.
- False: The button will appear independently of the object parent.
Enable condition
The Enable condition indicates if the button is enabled from an UEL/SQL expression. It is not required (in this case the button will be enabled).
- True: The button will be enabled.
- False: The button will be disabled.
Cache
The Cache flag indicates if the enable condition of the button will be saved on the cache to avoid to execute again the sentence.
Script event (Deprecated)
The Script event is a JS function to trap and modify initial vdata.
Deprecated
This function is deprecated. Use dynamic fields or a UEL expression as default value on wic_jrep_form_action.SQL Boxes Context Menu
Dictionary
wic_jrep_box_celldata_action | |
---|---|
Label | Description |
Menu ID | |
Box ID | Box identifier |
Action Id | Action Identifier |
Order | |
Activation condition | If condition is true, menu will be activated
|
Label | Label to show in menu |
Icon | Icon to display in menu |
Confirm | Indicates if confirmation is needed before the Execute Action button
|
Type | Type of execution
|
Size form |
|
SQL / XSQL statement / JavaScript | SQL / XSQL statement or JavaScript
|
Created by |
|
Date created |
|
Modified by |
|
Date updated |
|
Define a context menu

To start defining a context menu, the following values will be indicated:
- Action Id
- Position
Action Id
The Action Id identifies univocally the referenced action in the dictionary.
Action constraint
Only actions of the current JRep Object can be executed.Position
The Position indicates the order of the action on context menu.
SQL Boxes Columns
Dictionary
wic_jrep_box_sqltable_out | |
---|---|
Label | Description |
Box identifier | |
Order | Output order |
Table | Table column |
Column | |
Group | Columns tree grouping
|
Header group | Label header group |
Tooltip | Description column showed as tooltip |
Hide | Hide the expression
|
Decimals | Number of decimals showed (numeric values)
|
Datasum | Shows column add up
|
Searchable | Indicates if is a searchable column
|
Input | Indicates if columns is editable
|
Object | |
Enable expression | Link activation expression |
Condition / js function | |
Color palette | |
Action | Action code |
Define a column action

To start defining a column action of a column defined in a sqltable, the following values of this column will be indicated:
- Action Id
Action Id
The Action Id identifies univocally the referenced action in the dictionary.
Action constraint
Only actions of the current JRep Object can be executed.Action label
An idiomatically dynamic label can be displayed using a virtual table with its language-defined tags.Diagram of use (according to trigger object)
According to the object that triggers the action, some implementations of form actions will be enabled or disabled. Below is a diagram indicating which columns of wic_jrep_form_action are used according to the trigger object of the action:
Buttons wic_jrep_form_butt |
SQL Table Context Menu wic_jrep_box_celldata_action |
SQL Tree Context Menu wic_jrep_box_celldata_action |
SQL Table Columns wic_jrep_box_sqltable_out |
Form JS Function executeFormAction |
|
Label action_label |
|||||
Icon action_icon |
|||||
Style action_style |
|||||
Can insert action_can_insert |
|||||
Can delete action_can_delete |
|||||
Can update action_can_update |
|||||
Can execute action_can_execute |
|||||
Enable expression action_enable_expression |
|||||
Disable style action_enable_style |
|||||
Before eval action_before_eval |
|||||
Form title action_form_title |
|||||
Form size action_form_size |
|||||
Form message action_form_message |
|||||
Confirm action_exec_confirm |
|||||
Execution type action_exec_type |
|||||
Execution statement action_exec_stmt |
|||||
Data update action_data_update |
|||||
Output type action_output_type |
|||||
Iteration action_iteration |
|||||
Iteration group action_iteration_group |
2.4 Samples
The following section presents a set of samples with some interesting cases of uses of Axional Studio Form Actions
implementations:
2.4.1 Button to update the state of a transactional object (applying iteration statement)
Introduction
This sample shows how to implement a defined Form Action in a JRep Object that can be triggered from a button.
This sample will depend on a table from wic_studio called studio_actions_flow with the information of the iteration flow of the action. It will contain this data:
Action | Next action | Description of action |
---|---|---|
0 | 1 | Init task |
1 | 0 | Reset |
1 | 2 | Process |
2 | 0 | Reset |
2 | 3 | To revision |
2 | 4 | Accept |
3 | 0 | Reset |
3 | 1 | Deny |
3 | 4 | Accept |
4 | 0 | Reset |
Defining a form action
The form action parameterization for that case consists of:
Column | Value |
---|---|
Label | ${description} |
Style | Default |
Can Insert | false |
Can Delete | false |
Can Update | false |
Can Execute | false |
Execution type | Server Side |
Update mode | Refresh row |
Output type | Auto |
Confirm | false |
Execution statement |
Copy
<script> var p_serial = Ax.context.adapter.action_index; var p_next = Ax.db.executeGet( "SELECT next FROM studio_actions_flow WHERE description = ? AND action = ?", Ax.context.field.reason, Ax.context.adapter.action_state ); Ax.db.update("studio_actions_iteration", {action_index: p_serial, action_state: p_next}); </script> |
Iteration statement |
Copy
<select> <columns> action, next, description </columns> <from table='studio_actions_flow' /> <where> action = ${action_state} </where> </select> |

Defining action fields
The action created before will have a field to indicate the action to do, and will be parameterized this way:
Column | Value |
---|---|
Position | 0 |
Table | virtualfoodmart |
Column | reason |
Type | CHAR |
Size | 10 |
Default | #description |
Entry | true |
Nullable | false |
Lettercase | None |
Condition disable | action != 3 || next != 1 |

Defining a button
Finally, the form button has to be parameterized to have a trigger to execute the action. In that case consists of:
Column | Value |
---|---|
Position | 0 |
Action Id | The Id of the action created before |
If row selected | true |
Cache | false |

Execution
Once form action is defined and assigned to a button, when the object is called will appear the button in the bottom of the navigator.

Considering that the instance of the object where the cursor is located has action_state = 0, this will be the appearance of the displayed object:

When the button is clicked, a form with the paramaterized field before will appear:

Then, after confirm the action will be executed and the row will be refreshed like it was parameterized before. Now, the appearance of the displayed object will be this:

2.4.2 Context menu with action to delete a row of an SQL table
Introduction
This sample shows how to implement a defined Form Action in a JRep Object that have to be triggered from the context menu of a SQL Table (the context menu will know the data of the row clicked).
Defining a form action
The form action parameterization for that case consists of:
Column | Value |
---|---|
Label | ACTION_REMOVE_NODE |
Style | Default |
Icon | REMOVE |
Can Insert | false |
Can Delete | false |
Can Update | false |
Can Execute | false |
Execution type | Server Side |
Update mode | Refresh row |
Output type | Message |
Confirm | true |
Execution statement |
Copy
<script> var p_serial = Ax.context.data.serial_auto; Ax.db.delete("studio_trx1", {serial_auto: p_serial}); return 'Row with serial_auto = ' + p_serial + ' deleted correctly!'; </script> |
Message statement |
Copy
<script> var p_serial = Ax.context.data.serial_auto; return 'Do you want to delete the row with serial auto = ' + p_serial + '?'; </script> |

Defining a context menu
Finally, the context menu of the SQL Table has to be parameterized to have a trigger to execute the action. In that case consists of:
Column | Value |
---|---|
Position | 0 |
Action Id | The Id of the action created before |

Execution
Once form action is defined and assigned to a context menu, when a SQL Table row is clicked the context menu will appear with the created action.

When the action is clicked, a form with a message will appear:

Then, after confirm the message received in the form, another confirmation will appear (the Confirm flag is set to true):

Then, after confirm the action will be executed and the row will be deleted, finally a message will appear and the SQL Table will be refreshed. Now, the appearance of the displayed object will be this:
