Table Details

Fields

An entity-method-table may use more than one db_table_name if the data is joined from multiple tables. select o.order_no, od.order_detail_id from orders o, order_detail od where o.order_no = od.order_no -- in the above query order_no is available at two tables o and od. The retruned table have two columns from two db tables. The entity-methd-table is populated with response from this query The entity may have two fields like "OrderNo", "OrderDetailId" To reverse lookup the "OrderNo" as what db table it reprsents, it important to distinguish between o or od.. In other words, the prefix o. or od. should be stored. This is stored in table_fields.db_table_name. db_column_name is the column_name of the db_table_name. This can be potentially used in automated stored procedure generation in the CUD method appropriately.

Field's Description

  • Has Error? This is internal field. If there is any inconsistency/improper in the setting of the entity/entity table/entity field, or if the steps that need to be followed in creating the entity is not followed, then “Has Error” will be highlighted in red color. Clicking it will provide the details of what that error was, with suggestions to fixing the error.

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Field Name For Request table case, need to add all the input parameter fields that what the entity method expects.
    And for the Response table case, need to add the fields that are returned by the entity method.

  • Field Cluster Name

    Note: This feature is currently under development.
    This option is used to show the set of fields under a particular group, in the UI side.
    When the page having plenty of fields, it will be little difficult for the end user, if the fields are not get grouped under different categories or topics.

    To overcome this issue, developer need to create “Field Clusters” and then assign the table fields to that particular field cluster. Then the UI engine will render the controls accordingly.

  • Field Sequence

    Need to specify the order sequence in which the fields need to be returned back from server. It should be a unique integer value.
    Though any value could be specified, it is suggested to follow that, for the first field enter field sequence as 10, second field 20, third field 30 like that. In increment of 10. This is because, when there was a need to add a new field name between the existing fields one and two, for this newly added field, you could enter field sequence as 11. If you used field sequence as 1, 2, 3…, when adding new field, in between already existing field, you would need to change the field sequence for all other fields.

  • Field Label This field label text will be inherited from what it is set at Field level. So, no need to provide it unless, a different value is needed to be shown for this Method.

  • Db Table Name DB table name from where the field is from. This is internal field.

  • Db Column Name

    Need to select the database column name from the dropdown.

  • Db Data Type Need to enter the correct data type of database column name. This need to match correctly with the data type of the parameter (request table case) / output (response table case). Otherwise, Entity validation error will be get shown. For example, if that field returned from database is of varchar(256), you cannot set the “Db Data Type” as varchar(250).

  • Editor Type

    Need to select the editor type that need to be used for that table field in the UI.
    The following is the list of Editor type representing a broad classification of UI controls.

    Editor Type Description
    Button Button
    CheckBox Binary Use this if the field value should be of either true or false, and null should not be allowed.
    Default value is false.
    CheckBox Tristate Use this if the field value can be of NULL or true or false.
    Default value is null.
    CheckBox List Check box with multiple select option.
    CodeEditor A full-fledged code editor UI control.
    ColorPicker Color picker editor.
    DatePicker Editor that allows to pick a date.
    DateTimePicker Editor that allows to pick a date with time.
    DropDownList Dropdown list control.
    Editor A full-fledged HTML editor control that allows formatting of text, adding image, Etc.
    FileBrowser A full-fledged control to be used to list the folders, files in a particular path. It allows to add/delete/download files.
    Image Control that need to be used to place image in UI.
    Label Used for showing label text.
    Link Used for showing a hyperlink text.
    MaskedTextBox Used for formatted textbox.
    MemoEditor Used for memo editor control.
    NumericTextbox Allows numbers only.
    Password Password control textbox.
    RadioButtonList Control for radio button list.
    Switch Toggle switch control. Currently not in use.
    TextArea Used for getting larger multi-line text.
    TextBox Using for single line text.
    TimePicker Editor that allows to pick time only.
    Upload Control that need to be used to add file attachments.

  • Lookup Name For a table field, if a dropdown control needs to be used, then use this option to select the lookup name. Available lookup names will be shown in a dropdown list.

  • Allow Clearing? This option is used, when the field’s editor type is set as DropDownList or RadioButtonList. For DropDownList it should default to true. And for RadioButtonList it should default to false.

  • Auto End Of Day Applies only for Datetime fields when used with DateTimePicker. Default is false

  • Validator Name Need to pick the validation from the dropdown list. If the value entered/selected for that table field need to be validated, then create Validation, then use that validation using this option.

  • Multi Select Format

    This option is used to set the format in which the value needs to be stored, when multi select of items is enabled for this field. If mclsys.fields.field_name has array_of_base_field_name not null, then this field represents an array of values. so it can be used to read/write the data. Following are the available various options:

    • JSON Data
    • Text Data
    • XML Data
    • Bitwise Data

  • Multi Select Delimiter Need to specify the delimiter character that need to be used, when multi select of items is enabled for this field.

  • Disable Field Level Lookup ?

  • Field Description A short explanation of what that Entity object is created for, what it will do.

  • Default Value Lookup Name

    default_value_lookup is used for run-time computation of default values.
    For example, when we need to show the current database datetime on a field, SQL server’s getdate() cannot be used directly. This has to be computed at the time of loading page/table.
    Computed Default value is implemented similar to a lookup method. A lookup method is specified in default_value_lookup field. The lookup method should return a scalar value. If the method returns more than one or row or column, row[0], column[0] is used as default value.
    default_value_lookup should be restricted to use for the following scenarios:

    A request table field If the method specified in default_value_lookup has a request table, values from other request fields will be used as parameters.
    A computed default value on a field of a new record (of a response table) If the method specified in default_value_lookup has a request table, fields from parent method’s request table will be used as parameters, whereby providing dynamic values based on values of other fields.

     

    Note: default_value_lookup is not relevant to for editing existing record.
    In Entity Methods (ef.entity_methods) - all methods that are specified as default_value_method(s) - must be set with has_internal_parameters=true, to prevent using cached data. As an example, current datetime must be computed every time the page is loaded. Without setting has_internal_parameters=true, the current datetime will give previously cached datetime.

  • Default Value Lookup Data Field

  • Default Value Lookup Method Parameters

  • KeyField

    This is internal field. Value for this field get set from the values added from “Key” Tab. When a field name is set as Key field, it will be get shown in Table fields grid.
    You can set whether it is a Primary Key, Partial Key.
    If it is a composite primary key, you can add what are all those fields for that.
    In a normal case, for an Entity Table, set an entity field name as Key field. It will help the entity engine to set the keys properly and fetching/processing of data from database will be easier.

    So, it is very important to set Key field for the data table.

  • Is Identity ? This is the application expected identity field. Entity model creates an identity field "Sequence". Since there can be only one identity field in a table, the value generated in Sequence field will be copied to this field.By default this option is false.

  • Is Computed ? If Yes, this is a computed value based on other fields, and cannot be entered. The computed values may have to be displayed or sent as response after any CU operation.

  • Search Required ? The value must be specified as default value or user entered value. Applicable only for request tables.

  • Searchable ? A field is marked as searchable, if search for pattern is allowed, either in simple search or detailed search. Binary, image fields may be blocked from search.

  • Simple Search ? Setting this field to true, provides simple (quick) search. Any search text is matched to any occurrence in this field. This is meant to operate like google search. Searchable must be set to true, for simple search to work.

  • Is Computed Response ?

    This value is relevant on a response table in any non-read (Create/Update/Delete/Execute) operation.

    The returned value will be updated back in Read method’s response table.

    When an entity is read first, and then CUE or any non-read operations are made, there will be new computed values generated in the database, such as:  identity values, SQL server computed computed. These values will have to updated back in "read response" table, so that the values can be set in server dataset (and made visible in UI).

    When response data is returned by a method in more than one table, the responses (generally from CUD methods) may be required to be updated in the originally read tables. If there is only one table either in read-response or in non-read-response, the field name may be automatically used to update the read-response tables, if the field is marked as "response_for_update=true".

    When there are more than one table on either side, there is need to unambiguously specify which read response table should be updated.  In addition, when there are multiple read methods, and depending what read method is used, appropriate table(s) should be updated.  For these conditions, additional data is specified in table EF.non_read_response_read_response_table_relations. This table specifies for a “non_read_method_name”, mapping between “non_read_response_table_name” and “read_response_table_name”, assuming field names are identical. When field names differ, use fields “non_read_response_field_name” and “read_field_name” to map only the fields where names are different.

    Note: This setting needs to be added using the options available in “Table Non-Read Target Method” tab.

    In non-read methods, when there is multi-row response, sequence # should be output to join the read, response tables.  Non-entity compliant SPs, methods will not output sequence #. In that case, key fields will be used to update the read-response tables.  When there are no key fields/sequence # fields are present, response cannot be updated.

    The response fields are pipelined for two purposes - a) to update the read (dataset) table for connected operations.  b) send data back to caller.

    By default, this option is false.

    Note: See also description in response_to_request.

  • Response To Request? The response fields are pipelined for two purposes - a) to update the read (dataset) table for connected operations(See also description in response_for_update). b) send data back to caller. By setting the value to true for this field, the data will be send back to the method caller as response.

  • Read Only?

    When a field is set as read only, in the UI it will be rendered as disabled. User will not be able to make any changes to the value.
    On the request side, if both read only and required is set as true, then default value must be provided.
    By default, this option is false.

  • Hidden Value for this field is computed automatically by entity engine. On the request side, if both hidden and required is set as true, then default value must be provided.

  • Hidden Read? Hidden for reading the data. A field may be hidden for a) for business confidentiality reasons b) internal fields such as identity and key values, that may not be not useful for end user.

  • Hidden Update? Hide the field for Update operation

  • Hidden Create? Hidden in the Create operation when creating a new record

  • Is Abstract?

    A field may be defined as abstract field, which requires further definition by the (UI) developer or during setup time for a customer installation. This is one of the areas, where a partial abstract entity will be defined fully by the developer/customer specific setup.

    This is needed for the purposes of dynamic fields.  Dynamic field will be treated as "base_field_name" and there could be 0 or more occurrence of the base fields. The occurrence limit will be defined in min_occurs, max_occurs.

    Note: See generic field for explanation. By default, this option is false.

  • Is Choose Field? This is application specific choose field, and should not confused with system "choose" field,( with the name "choose"). Only one field can be flagged as choose_field in a table(?). When rows are selected the system "choose" field will be checked/unchecked, as the records are chosen. The value from "choose" field will be copied to the field marked as choose_field, for application use.

  • Is Response Nullable?

    Note: This option is for Response Table only. Not used for Request Table.

    This column "is_response_nullable" is used to denote, if the response provided by underlying methods return nullable value or not.

    If the underlying method is method_type = 1 (database table or view), it is a direct representation of the table column is_nullable setting, and can (should) be auto computed.

    if the underlying method is a SP/query/DLL, it should be specified here

  • Is Entity Nullable? Specifies whether entity model allows null value for this field or not. This can be set to true ONLY if target_nullable is set to false. If target (table, sp, DLL) does not allow nulls, entity cannot overrride and allow null, as the target would eventually fail any operation. is_target_nullable - is_entity_nullable 0 - 0 1 - 0 or 1

  • Is Target Nullable? Specifies whether target (db table/SP/function or DLL method) allows null or not. If set to false (not nullable), the "is_entity_nullable" value must also be false. is_target_nullable - is_entity_nullable 0 - 0 1 - 0 or 1 if manually entered, must match with nullability specified in the underlying target. Or this should be read from underlying target and stored, and not be allowed to be modified in entity settings.

  • Is EntityDefault Value Null? This is the default value defined by the entity. It may be different/overriden from the value specified in target_default_value, which are: table default value, SP parameter default value, DLL method default value.

  • Is Target Default Value Null?

    These are defined from underlying target methods, which are: table default value, SP parameter default value, DLL method default value. These default values, if manually entered, must match with value specified in the underlying target. Or this should be read from underlying target and stored, and not be allowed to be modified in entity setup.

    Note : See also "entity_default_value".

  • Entity Default Value This is the default value defined by the entity. It may be different/overriden from the value specified in target_default_value, which are: table default value, SP parameter default value, DLL method default value.

  • Target Default Vaue

    These are defined from underlying target methods, which are: table default value, SP parameter default value, DLL method default value. These default values, if manually entered, must match with value specified in the underlying target. Or this should be read from underlying target and stored, and not be allowed to be modified in entity setup.

    Note : See also "entity_default_value".

  • EF Validation Default Value

    If default value is NULL for a request table-field of a method, the validations takes a lot of time. If the method considers NULL as equivalent to consider all records, and if the response returned large number of records.

    For validation purposes, any non-null value - even such value does not exist in the application tables and if the method returns 0 response records - is good enough to prevent validating all records.

     Example values:

    0 for numeric fields.
    Any valid date for date fields.
    Any text for non-numeric or date fields.

    Specify a non-null value for this field should be limited to only fields, where NULL is treated as equivalent to consider all records.

  • Descriptive Field Name Some integer fields are identifier fields (e.g. AddressFormatId) which has description stored in master tables (e.g.AddressFormat). The name of the descriptive field is stored here. On any read request, the descriptive value will be taken from the master table (which should be indicated as root_table_name for the descriptive field) and sent as additional fields (if such fields are not natively present) in the read response.

  • Min For numeric fileds, Minimum value allowed for the field

  • Max For numeric fileds, Maximum value allowed for the field

  • Decimals Number of decimals for the Numeric field. By default we will be able to compute decimals from db_data_type (int, numeric fields). But we can still override in these fields. We will rarely set these values

  • Format Format to display for Numeric fields (output)

  • Mask Mask to be used when inputting https://demos.telerik.com/kendo-ui/maskedtextbox/index

  • HTML Encode ?

  • PlaceHolder This option can be used to show small help text inside the textbox control, in the UI.

  • Comments A little longer explanation of what that Entity object will do.

  • Pattern Not yet Implemented.

  • Data Transfer Table Name If this field is populated, the value in the field_name represents a table name. db_data_type must be (n)varchar datatype. The name of a table should be selected from "method_tables" with data_transfer_table = true.

  • Method Execution Only?

    This field is used only as a parameter for executing a method.  This is parameter for "program code path". It is not application data. Depending on the value in this parameter, method will execute differently and different results will be produced.

    It is used within the method, and is not part of read response table.

    In CUDE methods, these fields will not be mapped to read response(dataset) fields.  In the pipeline from response table to CUDE methods, these fields will be added to read response tables, the data input in these fields will be available for the session, and will not be permanently stored.

    In use with Read methods, this field will serve as dynamic parameter for executing the read method.  A default value provided in this field will serve as default parameter or constant to executing the read method. However, multiple read requests can be made with different parameter value for each request. A single UI page can have multiple data tables generated using single entity-table definition.  Each data table will have different request value for this field.

    Example:

    [Agents].[get_agent_account_assignment] is a SP with 3 parameters. The parameter @commision_opt has 3 possible values - 1,2,3

    --@commission_opt values

    --1=recurring(one_time=0)

    --2=one time but not paid(one_time=1 and one_time_invoice_no is null)

    --3=one time but paid(one_time=1 and one_time_invoice_no is not null)

    @commisison_opt is a parameter as how the SP is executed. Depending on the value in this parameter, SP will execute differently and different results will be produced.

  • Not Applicable Condition

    A conditional applicability of a field.  A field is "not-applicable" for a row of data, depending on the data of other fields.

    Following JSON provides an ability to define the conditions for "not applicability" of a field per row.

    ConditionMethodName (not yet implemented) provides implementation of complex conditions. The method’s request fields will be filled with values of the record’s fields (and possibly parent record fields).

    A simple value-based condition can be set in "ConditionFields". One or more fields and its values can be specified as condition(s). If more than one condition is specified, it will be "AND" condition.  Any "OR" or other if/else condition should be implemented in the method specified at ConditionMethodName.

    All conditions will be treated as “OR” condition if MatchAllConditions = false or null or not specified.

    All conditions will be treated as “AND” condition if MatchAllConditions = true.

    Not applicable field will not be shown when ShowValue = false.

    Not Applicable field will be read-only(disabled) when ShowValue = true.

    When a field is “not applicable” – you will see the following behavior.

    • The field will be grayed in the grid’s row (when AddressTypeId > 10 or AddressTypeId <=5)
    • In Edit window, when the AddressTypeId changes, if the “not applicable” condition is met, the field will be automatically hidden (“not applicable” condition is NOT met, the field will be shown).

    For the sample, AddressTypeDescription is not all appliable when (AddressTypeId > 10  OR AddressTypeId <=5)

    Example 1: Simple  one level sample, with one field

     Condition -  (address_type_id > 10 or address_type_id <= 5)

     [

      {

        "ConditionMethodName": null,

        "ConditionFields": [

          {

            "ConditionFieldName": "AddressTypeId",

            "ConditionFieldValue": "10",

            "ConditionOperator": ">"

          },

          {

            "ConditionFieldName": "AddressTypeId",

            "ConditionFieldValue": "5",

            "ConditionOperator": "<="

          }

        ],

        "MatchAllConditions": false,

        "ShowValue": false

      }

    ]

     Example 2: Two level with conditions on second level only, conditions on one field (AddressTypeId) only

     Condition  -  ( (address_type_id >= 5 and address_type_id <= 10) or (address_type_id = 15 or address_type_id = 20))

     [

       {

          "ConditionMethodName":null,

          "ConditionFields":[

             {

                "ConditionFields":[

                   {

                      "ConditionFieldName":"AddressTypeId",

                      "ConditionFieldValue":"5",

                      "ConditionOperator":">="

                   },

                   {

                      "ConditionFieldName":"AddressTypeId",

                      "ConditionFieldValue":"10",

                      "ConditionOperator":"<="

                   }

                ],

                "MatchAllConditions":true

             },

             {

                "ConditionFields":[

                   {

                      "ConditionFieldName":"AddressTypeId",

                      "ConditionFieldValue":"15",

                      "ConditionOperator":"="

                   },

                   {

                      "ConditionFieldName":"AddressTypeId",

                      "ConditionFieldValue":"20",

                      "ConditionOperator":"="

                   }

                ],

                "MatchAllConditions":false

             }

          ],

          "MatchAllConditions":false,

          "ShowValue":true

       }

    ]

     Example 3: Two level with conditions on each level, with two fields (AddressTypeAddressDomain, AddressTypeId)

     Condition -  (([address_domain]=’Customer’)) AND (([address_type_id]>=5 AND [address_type_id]<=10 OR  [address_type_id]=15 OR  [address_type_id]=20))

     [

      {

        "ConditionMethodName": null,

        "ConditionFields": [

          {

            "ConditionFieldName": "AddressTypeAddressDomain",

            "ConditionFieldValue": "Customer",

            "ConditionOperator": "="

          },

          {

            "ConditionFields": [

              {

                "ConditionFields": [

                  {

                    "ConditionFieldName": "AddressTypeId",

                    "ConditionFieldValue": "5",

                    "ConditionOperator": ">="

                  },

                  {

                    "ConditionFieldName": "AddressTypeId",

                    "ConditionFieldValue": "10",

                    "ConditionOperator": "<="

                  }

                ],

                "MatchAllConditions": true

              },

              {

                "ConditionFields": [

                  {

                    "ConditionFieldName": "AddressTypeId",

                    "ConditionFieldValue": "15",

                    "ConditionOperator": "="

                  },

                  {

                    "ConditionFieldName": "AddressTypeId",

                    "ConditionFieldValue": "20",

                    "ConditionOperator": "="

                  }

                ],

                "MatchAllConditions": false

              }

            ],

            "MatchAllConditions": false

          }

        ],

        "MatchAllConditions": true,

           "ShowValue": true

      }

    ]

    See more about Not Applicable Condition.

  • Required Condition Conditionally set the field to be required or not, based on values available on other fields. The rules are specified in JSON format, similar to "Not Applicable Condition"

  • Db Column Name Alias Not implemented.

  • MinOccurs This option is used with is_abstract, and when value of is_abstract option is set as true. This min_occurs and max_occurs represent minimum number of rows and maximum number of rows that are possible for a request/response table. Generally, but not always, input (request) table will have single row for various parameters of an input to a method (Ex. a WCF method for sql server function). Sometimes, the response from method could also be restricted from one to many rows. e.g. A scalar SQL function can return only one row with one field value. There are also several TVF examples of uni-row (one row with multiple fields).

  • MaxOccurs Is used with is_abstract, and when value of is_abstract = true.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

  • Alternate Label Internal Field.

  • Dependent Field Names The Entity field is dependent on the field(s) specified here. An array of one or more fields is specified in json array format [DependentFieldName1, DependenetFieldName2, …]. A field value will change based on one or more dependent fields. Field value of the current row’s field automatically changes when the fields specified in the array of "dependent fields" changes, for Create or Update operations as specfied in the json dependent_fiel_sources.dependent_field_operations. The new value comes from one of the methods specified in dependent_field_data_sources.

  • Dependent Field DataSources A json of [{DependentDatasource, Sequence, Condition}, ...]. The sequence provides the order of execution of the DependentDatasource. The Condition will have the same json structure as “Not Applicable” condition, and will be used to conditionally use the DependentDatasource. Condition=NULL will mean unconditionally use the method. All specified data sources will be executed until a sequence returns a non-null value.

  • Is Response Table?

  • Is CUDE Response Table

  • Aggregate Operators If pivot_field_type = Aggregate(4), choose one or more of (Bitwise CheckboxList): 1 ’sum’, 2 ’min’, 4 ’max’, 8 ’avg’, 16 ’count’, 32 ’count distinct’, 64 ’count_null’

  • Lookup Method Parameters

  • Is Multi Select Sorted List?

  • Lookup Response Filters

Fields used as key in Entity Table

Field's Description

  • Table Name Here it is internal field to store as primary and foreign key.

  • Unique Key Instance Need to provide the instance of the unique key.

  • Field Name Fields that are available for that entity table will be shown in a dropdown list. Pick the field which need to be set as Key field.
    When there are more than one key field, add additional rows.

  • Field Order Need to specify the order of the key fields.
    Example: for the first field (row) give value as 0 and for the second as 1.

  • Is Key Field Nullable?

    This field is currently internal field.

    In a unique key with one or more fields, some fields are nullable. Primary key columns are NOT nullable. This boolean value specifies if the field is nullable.

    Example:  In a (AccountNo-SubAccountNo-InstrumentId) combination, SubAccountNo is nullable; InstrumentId can exist without SubAccountNo. In other words, InstrumentId can be direct child of Account.

    This flag helps in the hierarchy computation, that an instrument can be placed either under an account or a sub-account. Without this flag, instrument_id must exist under a sub-account.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

Field Cluster

Field Clusters is an approach to group some fields together for a business purpose. (The name cluster is used to avoid conflict with group word used in data groupings) .An entity table can have zero or more field clusters. A field is associated with either 0 or one cluster. So, if field cluster(s) exist for a table, show the clusters in the order of FieldClusterOrder, and the fields within a cluster (FieldClusterName) in the order of FieldSequence. Fields without cluster will be shown as a first (Cluster 0) in the page.
Note: Currently this is under development.

Field's Description

  • Table Name Here it is internal field to store as primary and foreign key.

  • Field Cluster Name Need to provide the name of the field cluster for this entity table.
    Field cluster name should be unique for this entity table.

  • Field Cluster Label Need to provide the field cluster label text. This text will be used to show as header text in the field group control.

  • Field Cluster Order Need to provide the order in which this field cluster need to be rendered in the UI.

  • Field Cluster Descritpion A short description of this field cluster usage.

  • Created Date Date in which Entity object was created.

  • Created User User who created that Entity object.

  • Updated Date Date in which Entity object was last modified.

  • Updated User User who updated that Entity object lastly.

  • Row Identifier Internal field.

Row Filter

A view setting for an ability to horizontally partition a table with a where condition.

This is also one of the useful features that is in NF, where the developer can use it, wherever it is needed.

When the data that will be fetched from database, using an entity method need to be filtered per some conditions, then one or more row filters can be created for that entity table. During the execution of that method, these filters will be get used to filter the rows that is returned.

By using row filter, developer can avoid creating several entity methods and tables. Can create the method to return data without any conditions and just create the needed row filter with the conditions.

Field's Description

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Row Filter Name Need to provide a unique row filter name for this entity table. Give a proper name that identifies the use of this filter.

  • Is Default ? This identifies that this setting should be the default one for this entity table. There can be only one item, that can be set as default for that entity table.
    By default, this option is false.

  • View Filter Description A short description of this view filter usage.

  • TableCondition

    Need to provide the SQL condition that need to be used for this row filter.

    For example, for the “Account” Response Table, to filter the rows that are of “AccountTypeId” 2, then can give the condition as “account_type_id=2”

  • Request Table Name If the provided condition for the row filter need to use a request table, that can be selected from this dropdown list.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

Default Sort

Using the Default Sort option, developer can add sorting on one or more fields for that entity table. It will not be needed to make changes to the underlying SP or SQL query used for that method. This can be added at the table level itself.

Note: If that entity table have Primary key, by default, NF will return data in ascending, though the underlying SP/query used for that method is set to return the data in descending. So, if the data that get rendered in the UI need to be shown in descending, developer need to use this “Default Sort” option.

Field's Description

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Field Name Field Name is a unique business element. For example, AccountNo is unique representation of Customer Account across Cadebill. This appear in different database tables as primary and foreign keys. The goal here is to uniquely identify such business elements. Name of the field is referenced from EF.fields table.

    When adding new field name, developer need to follow the proper naming conventions. It should always start with an alphabet.

    There should not be any spaces, underscore in the field name. Should use camel case. Like AccoutNo, AccountTypeId.

    Avoid special characters, reserved key words.

  • Is Descending ? If the sorting on that field should be done on descending, then set this option to true.
    By default, this option is false.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

  • Sort Order Need to provide the sort order in integer value. If value is not provided, it will use default as 1.

Hierarchy

For an entity table, when the fields in it are of related like parent-child, the returned data can be shown in UI, as hierarchy. This will be useful for the user to identify the relation between the returned data of that entity table.

For this to make it working, need to set the settings properly in Entity Field level itself.

Take for example, in the application you have fields ProductId, ParentProductId.

In a table you have both these fields and ParentProductId value is of ProductId, then for “ParentProductId” field (under NF Fields), developer need to set the “Base Field Name” as “ProductId” and “Is Parent Of Base Field” to true.

When the above setting is done, and when an entity table is having both these fields, you will able to add Hierarchy here.

Field's Description

  • Hierarchy Instance ID Internal, identity, and primary key field.

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Hierarchy Name When the above mentioned setting was added for the field, hierarchy relation will be get formed automatically and those relations will be get shown in a dropdown list. User need to pick an item from the dropdown list. It will be get used as hierarchy name.

  • Display On Field Name From the entity fields dropdown list, need to pick the field name in which the hierarchy relation have to be shown.

  • Is Expanded? Need to pick option whether the hierarchy data shown in UI, should be of expanded or collapsed. If needed to be shown as expanded, set this option to true, else as false. In the UI, user have the option to expand and collapse the data.
    By default, this option is false.

  • Is Default ? This identifies that this setting should be the default one for this entity table. There can be only one item, that can be set as default for that entity table.
    By default, this option is false.

  • View Name Views in Nebula Framework are similar to Views in database.When using views, the number of entity methods and entity tables, in an application will be greatly reduced. So, need to use it wherever it can be useful.

  • Entity Name Name of the Entity. It should be unique for that module (database).

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

Pivot

Note Pivot table/grid settings in EF is under current development.

Field's Description

  • Pivot Id A stored Pivot Id

  • PivotName

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • PivotDescription

  • IsTranspose

  • TransposeFieldName

  • RowFilter 0, null - all rows 1. chosen rows 2. filtered rows datasource from the data grid, entity_table_name

Pivot Fields

Field's Description

  • Pivot Id A stored Pivot Id

  • Field Source A pivot field may be taken as is from data source or computed with an expression. Additionally, it may be grouped by a Date Interval such as Daily, Weekly, Monthly, Quarterly, Annual. The values possible are: Original (or null), Split, DateInterval, Computed

  • Field Name Field Name is a unique business element. For example, AccountNo is unique representation of Customer Account across Cadebill. This appear in different database tables as primary and foreign keys. The goal here is to uniquely identify such business elements. Name of the field is referenced from EF.fields table.

    When adding new field name, developer need to follow the proper naming conventions. It should always start with an alphabet.

    There should not be any spaces, underscore in the field name. Should use camel case. Like AccoutNo, AccountTypeId.

    Avoid special characters, reserved key words.

  • Pivot Field Type Row(2), Column(3), Aggregate(4)

  • Computation Expression If field_source = Computed, user can specify computation expression. If field_source = Split, a child table is shown.

  • Date Interval Type If field_source: = DateInterval, then choose ONE of the datepart (radio button list): daily(1), weekly(2), monthly(3), quarterly(4), yearly(5)

  • Date Interval Format When field_source = DateInterval, many fields are generated as per data values and DateIntervalType. Provide a format as {datepart}{space/_/string} combinations.

  • Aggregate Operators If pivot_field_type = Aggregate(4), choose one or more of (Bitwise CheckboxList): 1 ’sum’, 2 ’min’, 4 ’max’, 8 ’avg’, 16 ’count’, 32 ’count distinct’, 64 ’count_null’

  • Field Order Order of the Row or Column Field displayed, per pivot id. It is not relevant for pivot_field_type=Aggregate

  • Computed From Fields This is applicable only for field_source = DateInterval, Computed. Computed fields may have one or more fields separated by comma. DateInterval field will have only field, a date field.

Field Splits

A row will be inserted in this table, when the pivot_fields.field_source = Split.

Field's Description

  • Pivot Id A stored Pivot Id

  • Field Name Field Name is a unique business element. For example, AccountNo is unique representation of Customer Account across Cadebill. This appear in different database tables as primary and foreign keys. The goal here is to uniquely identify such business elements. Name of the field is referenced from EF.fields table.

    When adding new field name, developer need to follow the proper naming conventions. It should always start with an alphabet.

    There should not be any spaces, underscore in the field name. Should use camel case. Like AccoutNo, AccountTypeId.

    Avoid special characters, reserved key words.

  • Split FieldName A field_name is specified to represent the split_expression value

  • Split Expression A scalar expression to compute an aggregate value using one or more fields from the data source of the pivot. For example, total population can be split into Male or Female based on sex field.

  • Split Order

Row Footers

Field's Description

  • PivotRowFootersId

  • Pivot Id A stored Pivot Id

  • Row Footer Field Names The field name will be specfified by the user when FieldSource = Computed. Otherwise, it will be one of the fields in the datasource, table_name. The fields that are not specified here for a pivot_id, are hidden and ignored for the Pivot.

  • Aggregate Field Name

  • Aggregate Operator If pivot_field_type = Aggregate(4), choose one or more of (Bitwise CheckboxList): 1 ’sum’, 2 ’min’, 4 ’max’, 8 ’avg’, 16 ’count’, 32 ’count distinct’, 64 ’count_null’

  • Is Footer Needed

  • RowFooter Fields Checksum

Column Footers

Field's Description

  • PivotColumnFootersId

  • Pivot Id A stored Pivot Id

  • Column Footer FieldNames The field name will be specfified by the user when FieldSource = Computed. Otherwise, it will be one of the fields in the datasource, table_name. The fields that are not specified here for a pivot_id, are hidden and ignored for the Pivot.

  • Aggregate Field Name

  • Aggregate Operator If pivot_field_type = Aggregate(4), choose one or more of (Bitwise CheckboxList): 1 ’sum’, 2 ’min’, 4 ’max’, 8 ’avg’, 16 ’count’, 32 ’count distinct’, 64 ’count_null’

  • Is Footer Needed

  • Column Footer Fields Checksum

Table Read Target method

READ operations can be defined at table level, instead of cumulative method level. CUD operations is always defined table level. This table lists all the methods for CRUD operations. For read at table level, method_type & target_method_source are defined here instead of entity_methods. For read - method_name represents foreign key of entity_method.method_name For CUD operations, method_name is pointer to other CUD methods.

Under Entity Method Table, this tab will be get shown, when the entity method of that selected entity table is a “Read” method type. And it will be shown when the Response table of that Read method is selected.

Developer can set the value of “target method source” here under “Table Read Target Method”, instead of doing it in entity method level.

Field's Description

  • Method Name Here it is internal (primary and foreign key) field.

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Method Type This specifies type for the db_method_name_core. The following types are possible

    0: System

    1: Table

    2: Sql

    3: SP (Non-Entity Compliant)

    4: SP (Entity Compliant)

    5: WCF URL

    6 : DLL

    Method Type:

     

    Table Type Description Notes
    0 System Reserved, do not use
    1 Table Method where database table is directly used.
    2 SQL Method is specified as SQL Statements. SQL may or may not have parameters
    3 SP (non-Entity Compliant) All SQL Server stored procedure (SP) methods. SP may or may not have parameters
    4 SP (Entity Compliant) It is only used few areas now. Do not use this method
    5 WCF URL Not implemented, do not use
    6 DLL For all DLL methods

     

     

  • Target Method Source

    Read Methods

    Cumulative Read Method: Read methods specified at method level for all response tables

    Non-Cumulative Read Method:  Read methods specified at each table level

     

     

    Request Tables for Read Methods:

     

    Request table is specified when there are parameters in SP or query or DLL methods (Method Type 2,3, 4, 6).

     

    In the query method below, @order_no is a parameter

    select * from order_detail where order_no = @order_no

     

    There are no parameters in the query method below. No request table is specified.

    select * from order_detail

    Request table can also be specified for Table Method (Method Type 1).  Its use is illustrated below.

     

    Target_method_source =  order_detail

    Request Table = OrderRequest, that has one field OrderNo whose db_column_name = order_no

     

    When the entity engine sees a request table specified, it is converted to a query like below

    select * from order_detail where order_no = @order_no

     

    This is useful when selecting just the records for particular order, instead reading the whole table.

     

    Deferred read

     

    Deferred read is applicable only to non-cumulative methods. It means the records are read, by execute the method, on navigating to the parent record for the first time.  Taking an example of a non-cumulative method, with two tables (parent-child). The child table records are read only when needed. On navigating to a specific parent record, child table records are fetched using parent table’s key.

     

    On non-cumulative methods, Deferred Read is set on child tables, as stated in table below.

    Method Type Request Tables specified Deferred Read Comments
    Query/SP Yes Yes If there is a request table, it means child table’s read method has parameters that uses parent table’s row value(s).
    Query/SP No No If there is no request table, the child table’s read method fetches data only once.
     
     
    Query is executed only once and all records are read
    Table Not Applicable Yes For any child table’s, whose read method is a non-cumulative method and has method_type = 1, it always set as deferred method.

     

    When to use Deferred Methods?

     

    Deferred Read fetches the child records as needed, and is required to execute the method on parent record navigation.  The fetch is performed only when navigating the parent for the first time, reused when the parent record is re-navigated.

     

    Non-deferred Read fetches all child records along with parent table. All child table records are read into memory (temp tables). On parent record navigation appropriate child records are filtered using parent key.

    Deferred read should be used when child tables are large (1000’s of records).  Non-Deferred will be useful when all of the child table records are a small (less few hundred records).   When child table records are small the non-deferred read method performance will be higher than deferred read method.

  • Derived Method Field Name The fields - derived_method_field_name and derived_method_field_mapping are used for polymorphism implementation. See further description in the field - dervice_method_field_mapping

  • Derived Method Field Mapping

    Entity Method Polymorphism implementation

    NF will follow the C# polymorphic method, as in URL: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/polymorphism.

    Base classes may define and implement virtual methods, and derived classes can override them, which means they provide their own definition and implementation. At run-time, when client code calls the method, the CLR looks up the run-time type of the object, and invokes that override of the virtual method. Thus, in your source code you can call a method on a base class, and cause a derived class’s version of the method to be executed.

    In OO languages, look up of the run-time type of the object, is the basis of polymorphism. In Nebula Framework, the lookup will be based on the value of data in one or more specified field(s) on each row of the request table.  Here we use only one field for implementing polymorphism. Values from multiple fields and/or any calculation using multiple fields are not available and implemented now.

    Example methods

    Generic Property - Base Method - abstract/virtual  

    Account Property, Instrument Property … - Derived Method - Actual Method(s)     

    mclsys.entity_methods table - will have these 2 new fields: derived_method_field_name   derived_method_field_mapping  - a json of

    [

      {

        value(of derived_method_field_name): 1,

        method_name: "AccountPropertyRead"

      },

      {

        value(of derived_method_field_name): 2,

        method_name: "InstrumentPropertyRead"

      }

    ]

    If derived_method_field_mapping is null OR if no method is specified for a value, then the base method (method specified in column method_name) acts as the default method (as if the base method is the virtual method, and no overridden method exist)

  • Comments A little longer explanation of what that Entity object will do.

  • Id Internal, identity, and primary key field.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

Request Table

This table is used to specify method request tables for table level CRUDE methods.

A "DataSet" is a collection of one or more tables, is output by a read method. The read method may be a single method that outputs many tables (cumulative read method) or collection built one table at a time with multiple table level read methods (or by one or more cumulative inter/intra read methods).

Similarly, the DataSet may be updated with a table level method for each table. (cumulative CUDE methods do not exist yet).

For entity table level CRUDE method(s), the request_table_name required for the method is stored here.

The read methods of an entity can be got with following query.

--get all read response tables for an entity
--run this in the target database

declare @entity_name varchar(256) = ’AddressType’
select distinct mt.table_name, em.crud_operation
from mclsys.method_tables mt, mclsys.entity_methods em
where em.entity_name =  @entity_name and em.method_name = mt.method_name 
and mt.response_table = 1 and em.crud_operation like ’%[R]%’
order by 1,2

-------------

For each of the read response tables, find/add all possible request tables for all (CRUDE) methods. The available request tables for the entity can be found by:

--get all CUDE request tables

declare @entity_name varchar(256) = ’AddressType’
select  distinct mt.table_name, em.crud_operation
from mclsys.method_tables mt, mclsys.entity_methods em
where em.entity_name =  @entity_name and em.method_name = mt.method_name 
and mt.request_table = 1 and em.crud_operation like ’%[CRUDE]%’
order by 1,2

if the table_name is a read method response table, and when method_type & targe_method_source is not null, then the following is the query to check:

select table_name from mclsys.method_tables mt where method_name =@method_name  and response_table = 1
and  exists (select * from mclsys.entity_methods em where em.crud_operation = ’R’ and em.method_name = mt.method_name )
/*and method_type is not null and target_method_source is not null */

The commented portion is also needed for final validation. That is, method_type and target_method_source must be filled when read_request_tables is filled or vice versa.

If the above query is true, zero or more READ request table(s) may be specified, by using combo query as below.

select table_name from mclsys.method_tables mt where method_name = @method_name and request_table = 1
and  exists (select * from mclsys.entity_methods em where em.crud_operation = ’R’ and em.method_name = mt.method_name )

This field can store more than one table_name and is stored as comma separated values.

 

Field's Description

  • Method Name Here it is internal (primary and foreign key) field.

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Request Table Name Need to select the correct request table name that is shown in the dropdown list.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

Table Non-Read Target Method

Under Entity Method Table, this tab will be get shown, when the entity method of that selected entity table is a “Read” method type. And it will be shown when the Response table of that Read method is selected.

For a Read method, if there is a corresponding method that performs Create or Update or Delete operation, then the developer needs to select that method and its request/response tables. Then only the CUD operation will work correctly.

Field's Description

  • Id Internal, identity, and primary key field.

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Method Name

    As explained above, developer need to select the Create, Update, Delete method names. If single method is used for the CUD operation, then need to select that method. If separate methods are used for that CUD operation, then need to select each of them

    Note : need to add 3 rows.

  • Comments A little longer explanation of what that Entity object will do.

Request Table

This table is used to specify method request tables for table level CRUDE methods.

A "DataSet" is a collection of one or more tables, is output by a read method. The read method may be a single method that outputs many tables (cumulative read method) or collection built one table at a time with multiple table level read methods (or by one or more cumulative inter/intra read methods).

Similarly, the DataSet may be updated with a table level method for each table. (cumulative CUDE methods do not exist yet).

For entity table level CRUDE method(s), the request_table_name required for the method is stored here.

The read methods of an entity can be got with following query.

--get all read response tables for an entity
--run this in the target database

declare @entity_name varchar(256) = ’AddressType’
select distinct mt.table_name, em.crud_operation
from mclsys.method_tables mt, mclsys.entity_methods em
where em.entity_name =  @entity_name and em.method_name = mt.method_name 
and mt.response_table = 1 and em.crud_operation like ’%[R]%’
order by 1,2

-------------

For each of the read response tables, find/add all possible request tables for all (CRUDE) methods. The available request tables for the entity can be found by:

--get all CUDE request tables

declare @entity_name varchar(256) = ’AddressType’
select  distinct mt.table_name, em.crud_operation
from mclsys.method_tables mt, mclsys.entity_methods em
where em.entity_name =  @entity_name and em.method_name = mt.method_name 
and mt.request_table = 1 and em.crud_operation like ’%[CRUDE]%’
order by 1,2

if the table_name is a read method response table, and when method_type & targe_method_source is not null, then the following is the query to check:

select table_name from mclsys.method_tables mt where method_name =@method_name  and response_table = 1
and  exists (select * from mclsys.entity_methods em where em.crud_operation = ’R’ and em.method_name = mt.method_name )
/*and method_type is not null and target_method_source is not null */

The commented portion is also needed for final validation. That is, method_type and target_method_source must be filled when read_request_tables is filled or vice versa.

If the above query is true, zero or more READ request table(s) may be specified, by using combo query as below.

select table_name from mclsys.method_tables mt where method_name = @method_name and request_table = 1
and  exists (select * from mclsys.entity_methods em where em.crud_operation = ’R’ and em.method_name = mt.method_name )

This field can store more than one table_name and is stored as comma separated values.

 

Field's Description

  • Method Name Here it is internal (primary and foreign key) field.

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Request Table Name Need to select the correct request table name that is shown in the dropdown list.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

Response Table

Field's Description

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Method Name Here it is internal (primary and foreign key) field.

  • Response Table Name Need to select the correct response table name that is shown in the dropdown list.

  • Row Identifier Internal field.

  • Created Date Date in which Entity object was created.

  • Created User User who created that Entity object.

  • Updated Date Date in which Entity object was last modified.

  • Updated User User who updated that Entity object lastly.

Key

Here, the developer is expected to set the Key(s) for the Entity Method table.

It is mandatory to set the key(s) properly, so that the CRUD operations work correctly.

If the entity table do not have key, developer need to set “Has No Key=true”, for that entity table.

Field's Description

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • Unique Key Instance Need to provide the instance of the unique key.

  • Is Primary Key? If that Key is of Primary Key type, then check this “Is Primary Key?” option.

  • Is Partial Key? Partial key is a new concept that denotes the fields specified represents a partial key. The value specified in the partial key fields (in table_unique_key_fields ) is not unique. It will be used with new "Range key" concept where (partial key + range key) will be the primary key. In all tables with start_dt, end_dt columns - these represent a range key. In a table, partial key can be defined only in combination with range key. The partial key is unique within a range key. For example, in campaign_rates table, for a range key (start_dt, end_dt), the partial key (intl_cam_no, country_code, city_code) is unique. In other words, rate is unique within a range of time for (intl_cam_no, country_code, city_code) combination. In all tables with start_dt, end_dt columns - these represent a range key. The partial key is unique within this range. In a table partial key can be be defined only in combination with range key.

  • Unique Key Name Can add a name to that unique key.

  • Unique Key Description Can add some details for that unique key.

  • Comments A little longer explanation of what that Entity object will do.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

Views

Developers can create one or more Views for an Entity table.

Views in Entity Framework are similar to Views in database.

Views under Entity Framework is of very great use for the developers.

When using views, the number of entity methods and entity tables, in an application will be greatly reduced. So, need to use it wherever it can be useful.

If a table is returning large number of columns and we want only some columns to be displayed, then in such cases we can create a VIEW containing those set of columns on a TABLE.

The underlying source (target method source), need not to be a SQL table or a SQL query. Target method source can be of SP, DLL method.

Field's Description

  • Table Name

    Represents the Entity table name under which the Table Fields are get added. Here it is internal (primary and foreign key) field.

    Need to provide the name of the entity table. It should be a unique name for that application.While creating new entity table, need to follow some naming procedures.

    Name should reflect for what entity / entity method it is going to be used for.

    If the table is going to be a Request table, then suffix the name with “Request”. Example as AccountTypeRequest.

    If the table is going to be used for Read purpose, then no need to any suffix. Example as AccountType.

    If the table is going to be used for Lookup control, then can name it like AccountTypeLookup.

    If the table is going to be used for CUD operation, then can name it like AccountTypeCUD.

  • View Name Views in Nebula Framework are similar to Views in database.When using views, the number of entity methods and entity tables, in an application will be greatly reduced. So, need to use it wherever it can be useful.

  • View Description A short description on usage of this View.

  • Is Default? This identifies that this setting should be the default one for this entity table. There can be only one item, that can be set as default for that entity table. By default, this option is false.

  • Is Distinct

    If is_distinct is true, distinct values of the view columns is used for selecting the rows.
    By default, this option is false.

    The underlying query will be formed like this:

    select distinct List mclsys.view_fields.field_name from table_name

    This is useful to get any subset of (key) columns from the base table, with distinct records.

  • Is Readonly View If create/update/delete operations should not be allowed in this entity table view, then set this option to true.
    By default, this option is false.

  • Requery Every Page? In the #response temp tables, Primary keys only are stored. And at each page request, the data is queried from underlying tables for every page, by joining the primary keys from #response temp table. When this setting is added at the table level, it will be overridden with value set at the table_views level. When the setting is added at the view level, it overrides any value set at the method_tables level.
    By default this option is false.

  • Comments A little longer explanation of what that Entity object will do.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.

View Fields in View

Here the developer needs to add the fields that were need to be used for that View.

Field's Description

  • View Name Here it is internal (primary and foreign key) field.

  • Field Name Developer need to select the field from the dropdown that need to be added for that View.

  • Field Sequence

    Need to specify the order sequence in which the fields need to be returned back from server. It should be a unique integer value.
    Though any value could be specified, it is suggested to follow that, for the first field enter field sequence as 10, second field 20, third field 30 like that. In increment of 10. This is because, when there was a need to add a new field name between the existing fields one and two, for this newly added field, you could enter field sequence as 11. If you used field sequence as 1, 2, 3…, when adding new field, in between already existing field, you would need to change the field sequence for all other fields.

  • Row Identifier Internal field.

  • Created User User who created that Entity object.

  • Created Date Date in which Entity object was created.

  • Updated User User who updated that Entity object lastly.

  • Updated Date Date in which Entity object was last modified.