If this is your first look at DataFlex 2014 - be sure to read "Working with a New Release".
DataFlex 2014 continues the evolution of the Web Framework, expansion of Studio capabilities, integration of data dictionaries with SQL data sources and many other refinements and fixes. If you have existing DataFlex 17.1 Web Applications, see this important note for Existing Web Applications. Also pay close attention to the new controls for the Windows Framework in DataFlex 18.0.
We have a vision of a single, complete, high-productivity software platform for developing and deploying web, Windows and mobile business applications. The recently released Web Framework is a significant part of fulfilling that vision. Our Windows framework is robust and mature, and the DataFlex Web Framework provides complimentary Windows-like capabilities for browser-based business applications on a common technology core. The new framework also forms the foundation for evolving mobile application capabilities to come.
With the technology of our vision fulfilled by the new framework, we believe that the opportunity for the growth of our products and our company is better than ever. A capable development environment using a single language for rapidly building and deploying web, Windows and mobile business applications is both compelling and competitive among the complicated multi-technology alternatives in today's marketplace.
Part of embracing the full opportunity before us is strengthening our brand recognition and creating a clear market perception of our products, company, and community. To accomplish those objectives, we are executing a re-branding campaign that will be realized in various forms over the next several months. You will be seeing new graphics, a new web site and, very soon, the beginning of a new, familiar brand identity for all of our products: DataFlex.
This release of our flagship development and deployment suite is DataFlex 2014 - 18.0 and the "Visual DataFlex" identity you are accustomed to has been replaced with the new "DataFlex" branding nomenclature.
Here are some of the changes you will see as part of the new branding:
DataFlex consistently used in the installation
DataFlex consistently used in the development and deployment components
DataFlex consistently used in the documentation (except when referring to items that still use "visual" or "vdf" nomenclature - see below)
New default locations for the main programs, examples and projects
New registry branches
There are also some things that have not changed:
There are some commands, classes and methods that have been in the product for many years and we have chosen not to attempt to remove the "visual" or "vdf" nomenclature from them. This is part of our traditionally strong commitment to backwards compatibility.
Some of the file names of components are also based on "visual" or "vdf" nomenclature (for instance vdfvm18.dll) and we have chosen not to change those at this time.
As the DataFlex brand moves forward we may revisit the items we have not changed to see if the benefits of making those changes are strong enough to outweigh the costs.
As part of a multi-release initiative to optimize DataFlex's use with SQL database servers, DataFlex 18.0 introduces features and enhancements that touch every level of the product; including the drivers, data dictionaries, Web framework classes and the Studio. These features put more of the power of SQL in developers hands and enable them to deliver higher-performance and easier-to-use applications to their end users.
See New DD SQL Filter Methods, Suggestion Form, Native SQL Column Type Modeling and Connectivity in 18.0 for more information.
The DataFlex 18.0 Studio includes many exciting new capabilities designed to increase developer efficiency, provide more seamless integration between major components, further simplify web development and take even better advantage of SQL databases.
Some key Windows controls have been updated or added.
• Button class - supports better images and text, drop-downs and windows shield
• cSplitButton class - new button class
• cCommandLinkButton class - new button class
• TreeView class - support explorer style appearance with pbExplorerStyle
• dbSuggestionForm class - new auto-suggest class for dbForm
• View/dbView class - support for invoking as modal views using Popup_Modal
We've added many new controls and features to the Web Framework, including the following:
The grid control is taken to a next level with new styling options and a set of extra grid columns. These allow developers to include links, buttons, images and date pickers within their grids easily.
See List & Grid Enhancements for more information.
An easy to use (only DataFlex Code) file upload control is available in two flavors. It is built using modern HTML5 technology supporting multi-file upload, drag & drop and progress display. It also includes proper fallback to HTML4 technology for older browsers.
See File Upload Control for more information.
The new suggestion form is a dynamic list of items shown while typing. It represents a completely new style of selecting records compared to the regular prompt lists. The control is fully customizable and contains optimizations for SQL using the new SQL Data Dictionary filters.
See Suggestion Form for more information.
If you have existing DataFlex 17.1 Web Applications, see this important note for Existing Web Applications before migrating them to 18.0.
The DataDictionary class now provides direct support for setting SQL filters. When using a compliant SQL database driver you can set SQL filters in a DD object that apply only to finds directed to that object. This means you can set SQL filters for a particular view or dialog without worrying about how it effects the rest of your application. This can be used to create more flexible SQL search criteria and it can greatly improve record finding performance. These filters are maintained via several new properties. DD SQL filters can be used in place of, or, in conjunction with any existing global table SQL filters you might have set. DDO constraints have not changed and they are applied after the server has done the filtering.
Additional DataDictionary interfaces have been created that allows you obtain information about a DDO's current constraint set. New methods allow you to obtain all information about each constraint in a DDO's set. In addition, information is available about how a constraint set will perform with your different indexes. For any index you can now see if an index's find supports jump-in, supports jump-out and when the constraint evaluations occurs (e.g., before relate or after relate). This can be used to optimize finding and can be a great debug tool.
Various changes have been made in the DD debug dialog (dd_debug.dg). Most significantly a new tab page has been created that provides information about your current constraints. Add the dd_debug.dg dialog is to your application and press Ctrl+D within view or dialog and you get information about a DDO's constraint set and you can see optimization information for each index. In addition, you can see information about any DD SQL filter you might have in place. For testing purposes, you can even dynamically change the SQL filter. Apart from its debugging value, this is going to be a great learning tool.
The XML classes have added a new property pvNodeValue which can be used to get/set XML node values directly from/to a variant string (BSTR). This has the advantage that data of any size can be used and there is no translation between Unicode and OEM. This is an advanced feature and has its limitations but it will allows the experienced developer to handle special XML needs that were previously not possible.
A new class cCharTranslate has been created that provides a number of helper functions that allow better handling of advanced character encoding/translation needs. While DataFlex string processing remains OEM based this will make it easier access and translate data in other formats. Methods will allow you to convert string data to and from OEM, ANSI, UTF-8 and UTF-16. Many of these functions operate on memory buffers. While this does not provide the ease of use of DataFlex strings it allows you to work with data in any format of any length. In addition, this class provides additional Base64 encoding functions that allow you to encode/decode to strings and variant strings. Variant strings have no size limit and they can be used to read or write to xml nodes using pvNodeValue.
Another new class, cSeqFileHelper makes it easier to work with sequential files in different formats (binary, OEM, ANSI, UTF-8, UTF-16). For example you can use this to read or write a UTF-8 file from or to a variant string, allowing you to process your data internally in OEM while accessing or writing it in Unicode (UTF-8 or some other format).
These classes make complicated character encoding tasks a little bit easier.
The changes made in client web service handling required changes in the Studio's client web service class generator and changes in the cClientWebService class. It is our intention that changes in cClientWebService are backwards compatible and the client class generated by prior Studios will still work. When a class is regenerated using the new Studio the generated class's interface might change. For example, nullable simple datatypes will use a struct instead of a simple type (tNString instead of string). To use these classes you will need to make changes in your code. Alternately, the Web Service Client class generator now has a number of checkboxes that allows you to generate your classes legacy style. The visual interface for this will probably change before release.
The client web service class and the Studio's WSDL parser have received a major overhaul. While there are numerous changes the two most significant are better support for nullable/nillable data types and better generation of struct names.
It seems that more and more web-services are expecting that optional parameters (null values) will not be passed in the SOAP document. When the data is passed (even when technically allowed by the service description) the service raises an error. A mechanism has been created that allows you to specify variables, both simple and complex, as null. When you do this, the web service class can use this information to not pass empty data. This allows you to access web-services that have this requirement. Previously you would have to perform low level customizations to alter the XML (complicated) or you would not use the service at all. Now this is much easier.
Complex web-services often generate complex struct definitions. In some cases, these struct names would require special name "mangling" to ensure that the name is unique for the service. This resulted in names with suffixes consisting of mixes of underscores, numbers and letters. We've taken another look at this and have come up with a better strategy for creating these names. Now most names having no special characters resulting in classes that are much easier to read and therefore much easier to use.
Better Naming of Data Types and other Web Service Components
Better Handling of Arrays when Used Directly in Parameter Definitions
Better Handling and Support for Bare Requests and Bare Responses
See Additional Changes for more information.
Migrating Workspaces to DataFlex 2014
Suggestions Implemented in DataFlex 18.0