Oracle

Build apps from Oracle or DB2 iSeries databases and manage pages in the App Studio tools.

Labels
AJAX(112) App Studio(7) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(177) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(183) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(2) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Oracle
Thursday, June 6, 2024PrintSubscribe
ODP.NET, DB2 iSeries, Pages in Studio

Code On Time release 8.9.43.0 introduces embedded data providers, the enhanced TreeView, and the initial implementation of the Pages hierarchy in the App Studio.

Embedded Data Providers

The code generation library now includes the redistributable ADO.NET providers for Oracle and IBM DB2 iSeries.

Oracle ODP.NET

Oracle ODP.NET Managed Driver is a high-performance, scalable, and reliable ADO.NET provider for Oracle databases. It offers features like connection pooling, batching, asynchronous I/O, transaction support, connection failover, and data encryption. Designed for ease of use, it provides a consistent programming interface for accessing Oracle databases from .NET applications and supports all Oracle database features, including SQL, PL/SQL, and Oracle objects.

The app builder and its generated applications leverage the built-in Oracle ODP.NET Managed Driver for communicating with Oracle databases. Neither the development environment nor the deployment server needs additional software installations because all necessary managed driver components are included. With the knowledge of the Oracle database server's address and a valid username and password combination, building exceptional offline-capable online applications is made possible. These applications also provide a REST Level 3 API enhanced with hypermedia.

The app builder assists in adding the standard membership system to manage users and roles. Developers may also enhance their Oracle-based applications with the built-in content management system to keep track of the runtime configuration data, such as the user avatars, external identity providers, RESTful authorization data, and more.

IBM .NET DB2 iSeries

IBM DB2 iSeries is a reliable, scalable, and high-performance relational database management system (RDBMS) developed by IBM for use on its iSeries and System i servers. It supports both SQL and non-SQL access. DB2 iSeries is designed to provide high availability, even in the event of a hardware failure, and can scale to meet the needs of large organizations. It is known for its performance, even on large databases, and uses techniques such as in-memory caching and query optimization to achieve this.

The app builder now includes the IBM.Data.DB2.iSeries data provider, which enables database connections to IBM DB2 iSeries systems. However, to utilize the provider, the associated client connectivity software from IBM must be installed on both the workstation used for development and the server designated for production.

There is not built-in support for the membership management or content management system. Developers can put together their own user/role manager when needed.

Pages in App Studio

In the App Studio, developers have direct access to the application pages' hierarchy. To ensure that nothing is missing, check the navigation menu of your applications. Please keep in mind that the properties aren't saved yet. Pages with a single dataview don't show a separate container with a dataview node. Instead, the page's "controller" and "view" attributes can be accessed directly. The studio has categorized pages into "Content," "Data," "Link," and "Menu Item."

The User Controls of the legacy Project Designer are displayed under the Sippets node, which is available as the last node in the Pages hierarchy.

image1.png

More functionality will be added to the Pages hierarchy in the upcoming releases.

Miscellaneous

The following bug fixes and product enhancements are included in this release:

  • (MetaBuilder) The following Oracle-specific system schemas are excluded from the app metadata: XDB, SYSTEM, MDSYS, APEX_, CTXSYS, GSMADMIN_INTERNAL, WMSYS, ORDSYS, ORDDATA, OLAPSYS, LBACSYS.
  • (OAuth2) The OAuth 2.0 handler will handle the situations when there is no response from the authorization server while trying to exchange the authorization code for an access token. Previously a cryptic error message was displayed in the browser. If the app is running on the "localhost" address, then the stack trace is also rendered.
  • (ODP) Users will not be able to enter the associated detail records when creating a new master on the "offline" page, if the primary key of the master does not have a value. Offline Sync assigns automatic primary key values to the new record if the primary is an auto-incremental or Guid column. Users will be able to enter details in this case.
  • (Model Builder) Capitalized table and column names are transformed to Camel notation when the models are created automatically.
  • (OAuth) The read-only fields Auth Uri and Access Token Uri are displayed in the OAuth Identity Consumer form with the Protocol set to 'OAuth 2.0'..
  • Integrated the Oracle ODP.NET in the code generation library. Now apps can be built for Oracle databases without installing any client software.
  • (App Builder) IBD.Data.DB2.iSeries data provider is integrated in the app generator library. The DB2 driver v. 7.1.0 requires additional client components to allow connection to IBM DB2 iSeries databases. The ODP.NET allows connecting to any Oracle database including Oracle i23.
  • (App Studio) The studio runtime recognizes project data requests with hypermedia parameters.
  • (RESTful) The implementation of $app.restful will use the "query" parameters of the hypermedia segment when specified. Previously, only the non-hypermedia requests allowed specifying the query parameters.
  • (TreeView) Adding of the template-based nodes inserts new nodes before the "placeholder" node to ensure correct sequence when multiple "iterate" responses are being added to the parent.
  • (TreeView) Enhanced the node cloning with the option to define the property overrides. For example, the page hierarchy in the App Studio is using the cloned root page with an overridden "iterate" hypermedia path.
  • (TreeView) Expansion of a node that has the pending dynamically loaded children will not remove the "collapse/expand" toggle from the node unless all nodes are resolved and there are no children.
  • (Framework) The empty ResultSet returned by the data controller will not cause an exception when a filter is applied and the field names are not known.
  • (TreeView) The node without 'iterate' definition will have its data inherited from the parent node if its 'inherited' key is set to true.
  • (TreeView) Only a valid icon is assigned to the TreeView nodes. This included material-icon material-symbol or alta-numeric class names are supported.
  • (TreeView) The node definition marked with the dynamic "terminal" expression will prevent the node from being displayed as expandable or replicate the node if the expression evaluates to "true". This allows creating hierarchies that do not require users to expand a node to find out if there are children.
  • (RESTful) The engine adds the ?count=true parameter to the "children-" hypermedia controls.
  • (RESTful) The engine uses the customizable "root" key instead of the hard-coded "root" in the path of the corresponding hypermedia control.
  • (Framework) Filtering expressions are quoted if the expressions consist of the alpha-numeric characters only to avoid conflict of field names with the reserved words of the data engine.
  • (RESTful) The "root-SELF_REFERRING_LOOKUP_FIELD hypermedia is added on any depth of the API. Previously only the root entry had this hypermedia control. Now the "root-" control is added on the first level of the hierarchy in the path.
  • (Framework) Data controllers based on complex custom SELECT statements with the WHERE clause will not cause the app to produce an invalid SQL when the dynamic access control rules are specified or when the user is filtering a many-to-many field.
Friday, October 27, 2017PrintSubscribe
User Roles in SQL Business Rules

Code On Time release 8.6.8.0 introduces ability to test user roles in SQL Business Rules and fixes several remaining issues related to the recent change to the folder structure of projects in the preparation to the Native App generation.

Testing Roles in SQL Business Rules

Developers can now access parameter @BusinessRules_UserRoles in the code of SQL Business Rules and test user roles for conditional processing.

For example, create a Transact-SQL business rule in Products data controller may look as follows:

if @UnitPrice > 30 AND CHARINDEX('Administrators', @BusinessRules_UserRoles) = 0
    set @Result_Error = 'Only admin can set a high price!'

Set Command Name of the rule to Insert|Update and Phase to Before. Run the app, login with a non-administrative account, and try to update a product with a price higher than $30.

SQL business rules tests user Roles to prevent data input in an app created with Code On Time app generator.

Use the corresponding “contains” function and parameter marker in front of “BusinessRules_UserRoles” when working with the database engines other than Microsoft SQL Server.

Bug Fixes

The following fixes are also included in the project.

  • Project Builder removes resources under bin folder.
  • Web App Factory marks js, css files as content.
  • File  ~/js/_ignore.txt is now marked as embeddedResource to allow compiler to build Visual Basic projects.
  • Removed "ToUniversalTime" in value converter to fix datetime shifting issue in ASPX apps.
Wednesday, May 13, 2015PrintSubscribe
Action Bar, See All, 250 Icons, Desktop Master-Detail Enhancements, Metadata Compression

Code On Time release 8.5.2.0 significantly improves the speed of loading of complex master-detail pages in Desktop UI and introduces new user interface options in Touch UI. Both presentation modes can now take advantage of more than 250 icons  from Bootstrap library  integrated in the generated apps. Meta-data compression reduces the size of JSON responses for requests to read data by more than 60%.

Master-Detail Pages in Desktop UI

Desktop applications with complex master-detail pages will see immediate increase in speed of initial page loading and refreshing of selected master rows and linked children. We have recently discovered that a large number of data views may lead to degradation of page rendering. One customer has close to 40 data views connected in various master-detail configurations on a single page. Application essentially uses data views to create an electronic data record giving a comprehensive understanding of a business process at a glance. Application has been created two years ago and has performed very well. Recent modifications have uncovered that the same page is rather slow when produced with newer releases of Code On Time. We have corrected the issue – the page with 40 data views loads fluidly and rapidly.

Touch UI Enhancements

This release brings the action bar to Touch UI. Compare the screenshots of Products screen presented in two different interfaces.

image

image

User interface components of Touch UI look almost identical to the Desktop presentation. If the promoted actions are turned “off” in settings then the floating “+” button will disappear and New Products action will migrate back to the action bar.

Summary views now display “See All” button with the count of records when only a subset of records is visible. Summary views also keep track of the current selection.

image

Also note that the page title is not displayed anymore on the toolbar if there is enough space to display at least three menu options. The title will reappear in the toolbar on devices with narrows screens. The navigation menu migrates under “menu” button on the left-hand side of application toolbar.

image

We are committed to transforming Touch UI in a true replacement for the legacy Desktop user interface of generated apps. Future releases will allow displaying all levels of master-detail relationships on the pages in Summary mode. This release finally introduces complete support for cascading lookups in Touch UI. We now support dynamic lookups for Drop Down List, List Box, Radio Button List, and Check Box List with full processing of Context Fields.

Icons in Actions

It is now possible to use glyphicons from Bootstrap library as icons of actions in Desktop and Touch user interface. Touch UI also supports a dedicated set of icons from jQuery Mobile. See sample icons at http://demo.codeontime.com/northwind/touch/icons.html.  Follow the link to see configuration instructions. The screenshot below shows a custom glyphicon-leaf icon in configuration of New Products action.

image

image

Miscellaneous Enhancements

Here is the list of fixes included in this release:

  • Annotations are disabled in Touch UI. Multiple file upload will be implemented in the future instead of "one note" + "one file" at a time in Desktop UI.
     
  • New drag & drop file upload works with annotations in Desktop UI.
     
  • Desktop UI shows summary on first selection of a master row when a child view with "Show In Summary" = true is placed on a different tab.
     
  • Touch UI supports creating new lookup values with context filter based on the current field values.
     
  • Cascading lookup works with Drop Down List, Radio Button List, Check Box List, and List Box.
     
  • Dedicated login page issue on iPad has been resolved in Touch UI.
     
  • Pivot API: Quarter calculation fixed.
     
  • Minifier now adds ";" to every script file as a fix for DNN script compression.
     
  • Fixed transparency issues on iOS and made enhancements to the keyboard input on android.
     
  • Charts: Added ICU Decimal Format support with "pivot1-val1-format:'##'" tags. Supported .NET-compatible formats are “c”, “C”, “d”, “D”, “e”, “E”, “f”, “F”, “n”, “N”, “p”, “P”, “x”, “X”.  Example of Orders chart:
  • EmployeeID Tag: pivot1-row1-column

    Freight Tag: pivot1-val1-sum-format:'c' 

  • It is now possible to use $row.FieldName and $master.FieldName syntax in business rules and various expressions instead of old syntax ([FieldName] and [master.FieldName]).
     
  • Dates are correctly processed in JavaScript business rules in Touch UI.
     
  • Enhanced error reporting when compiling JavaScript business rules.
     
  • Data access objects correctly convert dates to Universal Time when using PageRequest to retrieve data.
     
  • MySQL will hide string primary key fields of length 36 (GUID).
  • Bug with "Remember Me Checked" in HTML page implementation has been fixed.
  • MySQL Session State Provider will use mediumblob instead of longblob.
     
  • Embedded ASP.NET membership provider for Oracle is now generated if membership feature is enabled.
     
  • Membership business rules correctly handle representation of GUIDs and "bool" in Oracle databases.
     
  • Synchronization command wraps primary key field names in "quotes" specific to the database engine.
     
  • Membership bar extender uses "_invoke" as a path for service requests in SPA applications.
     
  • Adding a GUID parameter to an SqlText or SqlProcedure will perform automatic conversion from Guid to byte[].
     
  • Partial implementation of ApplicationServices class allows overriding of UserSessionStart, UserSessionEnd, InstanceStart, InstanceStop, and HandleError methods to handle session-level and application-level events. Delete ~/global.asax file to ensure that the new code is being engaged if you plan to use any of these methods.
     
  • Custom Session State provider is now generated in Azure Factory, Mobile Factory, Web App Factory, and Web Site Factory projects if installed on database connection settings page of Project Wizard. Use session state provider if application is deployed in  multi-server configuration.
     
  • It is now possible to have a "root" page when CMS is enabled. Give it a name “index” with blank path.
  •  Dynamic Controller Customization in CMS now supports When-SQL and When-Test to allow data-driven customization of controllers
     
  • Application framework now support VirtualControllerConditionally method. Developers can call SelectFieldValue method to inspect values of the current row when virtualizing form views.
     
  • Added data view tags view-style-charts-disabled, view-style-grid-disabled, view-style-list-disabled, view-style-cards-disabled, and view-style-map-disabled to allow disablement of specific view styles.
     
  • Fixed bug in Firefox and IE10 of chart context menu not opening.
  • Data views can now be configures with the property "Tags" and "data-tags" instead of Tag and "data-tag".
     
  • Site content is not visible if Role or User exceptions are detected. Previously, both "Role Exceptions" and "User Exceptions" would have enabled access to content instead.
     
  • If a site content page exists in CMS and it is visible to the user then it will override the "design time" page definition. Previous implementation has been using the application-defined page even if a site content page is available.