Wednesday, August 22, 2012

A little Magic history...

In my webinar broadcast today on "what's new in Magic xpa 2" we spoke for a bit on the history of changes in  the Magic application platform in the various versions since Magic 8 (which goes back more than 15 years.) I thought it might be interesting to post the details relating to the bullet points I mentioned. If you read through this entire list, it incorporates most of the enhancements since the year 2000.

Table of Enhancements:
eDeveloper 9, eDeveloper 10, uniPaaS and Magic xpa


A brief summary of the main enhancements that were introduced from version 8 to version 9.
Support for the use of Web Services from within applications have been added.
A new method for creating web applications that run inside of a browser was introduced.
Capability to create reusable components was created.
Enhancements providing for event driven programming capabilities were added. Logic can be triggered or executed conditionally based on system, program and user events.
A number of data handling improvements were introduced including capabilities for Deferred Transactions, maintenance of Referential Integrity and the use of a Where Clause.
Capability for the developer to define their own error handling routines.
Allows for simultaneous execution of processor threads in support of the same application. Greatly increasing scalability and performance efficiency.

A number of GUI enhancements, most of which have been supplanted by subsequent GUI enhancements, were provided.
Numerous efficiencies in writing and maintaining programs were introduced. The concept of models allows a developer to define commonly used types and reuse them in various places within an application. Numerous other enhancements such as Cross Referencing were also introduced.
Wizards that guide developers through multi-step development tasks were introduced.
New or significantly improved support for connectivity to several technologies was initiated, including: LDAP Support, Java Integration, COM Support, XML Support, Web Service Support, SNMP Support, Message Queuing Support, Mail, Clipboard and HTTP functions.

This new eDeveloper version provides enhanced engine behavior, application development, version control, and debugging features, which let you develop in a robust rapid application development and deployment environment.
eDeveloper 10 supports project-based development. A project is a unit that contains objects related to your application. An application can be a single project or a collection of projects.
When you define a new project, a folder with your project name is created, XML files are generated inside the folder representing the objects in your project, such as components, helps, menus, programs, and data sources. The project file (.edp) is the project definition file that opens your project.
eDeveloper lets you display a list of recent projects for quick access, and also provides a project navigator for all related projects, so that you can see your project hierarchy and navigate easily from project to project.
A project is saved as a cabinet file (.ecf) when it is deployed. You cannot view or modify a cabinet file in the eDeveloper Studio environment.
In eDeveloper 10, the data view and task logic operations have been separated. The task is defined by three main layers: the Data View, Logic, and Form Editors, which are described below.
This tab lets you define the task's logic segments, such as task level handlers, event handlers, control handlers, and functions.
This tab lets you define the form display for the task.
Enhancements to the Expression Editor are described below.

Lets eDeveloper auto complete the function name by pressing CTRL+[SPACEBAR] after you type the first letters of the function. If a single function matches the typed letters, it will be automatically completed or a list box will display the function list locating the first function that corresponds to the typed letters.
An expression can be formatted using white blanks.
The full expression is displayed in a colored display.
The function types available are:
• Numeric
• String
• Basic
• Date and Time
• Variables (except the VarSet function)
If an end user tries to use functions that are not in one of the groups mentioned above, an error message appears.
In eDeveloper 10, you specify the Tab order of controls from the Form Editor for an online task using the Automatic Tab Order mode. This instructs eDeveloper to generate tabbing identifiers for all the controls on the current form. You can click the Automatic Tab Order button under Order in the Drawing menu to deactivate the Automatic Tab Order mode.
The Automatic Tab Order mode creates tabbing identifiers for every control on the form of an online task, maintaining a consecutive sequence from 1 to the last supported control, regardless of whether or not the control lets the user park. For a browser task, the Automatic Tab Order command is not active.
Every control has a Tab Order Control property that displays the Tab order number. This control lets you enter a four-digit tab identifier for the selected control when the Automatic Tab Order mode is not active. When the Automatic Tab Order mode is active, this property becomes a read-only field, displaying the automatically generated tab identifier.
The Allow Parking and Allow Direction properties for online and browser controls determine whether the cursor could be parked on a control and designates the flow order.
Unlike previous versions that supported a combined toolkit and runtime engine, eDeveloper 10 separates the Studio (toolkit) and runtime engines. The advantages of separating the two engines are described below:
• A project that crashes in runtime does not close the Studio environment.
• You can abort the runtime process execution without closing the Studio engine.
• The Studio client area is available to display flow or debugging information while the project is running.
• A project can be executed by using the multi-threaded background engine.
You can change the mode of the runtime engine while in the Studio.
eDeveloper’s Debugger tool has been enhanced for V10, providing new debugging features and enhancing existing features as follows:
• Conditional breakpoints: You can include conditions to determine whether a breakpoint should be activated.
• Watch points: You can create a list that includes selected variables that should be watched.
• Viewing and modifying variable content: eDeveloper 10 lets you update variable values during debugging.
• The eDeveloper 10 Debugger lets you view the call stack.
• You can dynamically handle logs by using the new Logging function.
Environment settings that require the engine to be reloaded take effect only in the next session or by using the Reset Runtime Engine event to reset the environment settings and to clear the runtime engine context.
eDeveloper 10 supports Version Control (VC) of your project development. VC support is provided for third-party VC products that implement the SCC API V1.01, such as Visual SourceSafe® and PVCS®.
Version Control means that the most up-to-date source files reside in a central location. The central location is a Version Control project that protects the source files.
eDeveloper 10's Version Control feature means that your project can be developed in a multi-developer environment. Each developer works on their own copy of the project source files and is responsible for synchronizing their own copy with the centrally located version.
In eDeveloper 10, interface enhancements mean that you can now add menus to a selected program, designate Radio buttons, Check boxes, and Tabs as Windows controls, and define Multiple Document Interfaces (MDI) and Single Document Interfaces (SDI).
eDeveloper 10 provides many new features and enhancements to raise your GUI to a whole new level. eDeveloper 10 provides full support for classic Windows and Windows XP style graphical user interfaces. XP support is provided by the activation of a new setting in the Preferences tab: Use Windows XP Theme. If the setting is set to Yes, any control you use that is assigned with Windows as the control’s style will use the current XP styles.
In eDeveloper 10, the properties for the Check Box, Radio Button, and Tab controls have been updated to give you the option of selecting control characteristics that adhere to standard Windows controls.
The Tab control adheres to the style and behavior of a Windows Tab control, when you select the Windows 3D option of the Style control property. This option lets you:
• Specify the name of a picture file that contains images to be displayed on the tabs. The picture file depends on a comma-delimited numeric string of image tokens.
• Automatically highlight a tab when the mouse cursor passes over it.
The 2D and 3D Sunken Style property values have been modified to display the standard Window’s style check box. The 3D Raised Style option remains an owner-drawn control as provided in previous Magic versions. When 2D and 3D Sunken Style property values are selected, you can:
• Determine the appearance of this control as either a box or a button.
• Support a Three State display - True (selected), False (not selected), or Null (selected but grayed out).
• Specify multiple lines so that long text strings wrap around and continue on additional lines according to the width of the control.
• Determine the check box’s vertical alignment.
• Assign an image file for the check box by either selecting an image or by setting an expression that selects an image when the task is computed at runtime.
The 2D style and the 3D-Sunken Style property values have been modified to behave as a standard Windows Radio Button control. When you select 2D style and 3D-Sunken style, you can:
• Determine the appearance of the Radio Button control as either a radio or a button.
• Specify multiple lines so that long text strings wrap around and continue on additional lines according to the width of the control.
• Determine the Radio Button’s vertical alignment.
Although normally you cannot set the same variable for different controls, eDeveloper now lets you assign the same variable to different radio buttons. When switching radio button values, eDeveloper handles different collection values with the same variable as a single collection.
Radio buttons assigned with the same variable share the same properties. If a shared property is modified in one radio button, it will be modified to the same value in all other radio buttons in the same form.
eDeveloper 10 provides new automatic functionality that preserves graphical user interface modifications made by the end user. In this way any change to the location or size for example will be saved. The next time the end user accesses the form, the dimensions previously set will be used.
The Table control in this new eDeveloper version has been enhanced providing an improved look-and-feel. By default, Table controls will have a new style setting activated: Windows. This style means that the Table control is a Windows and offers functionality, such as column reordering and hot-tracking.
Parallel task execution in Background mode was supported in previous versions. eDeveloper now provides you with the ability to carry out parallel task execution in Online mode. This is made available by the MDI/SDI functionality, which is described in the section below.
eDeveloper 10 lets you define Multiple Document Interfaces (MDI) as well as Single Document Interfaces (SDI).
The MDI lets you open more than one document at the same time. The MDI has a parent window, and any number of child windows. The child windows usually share various parts of the parent window's interface, including the menu bar, toolbar and status bar. Therefore, an MDI is constrained to the parent window. The child window automatically closes when you close the parent window.
The SDI opens each document in its own primary window. Each window has its own menu, toolbar, and entry in the task bar. Therefore, an SDI is not constrained to a parent window.
The MDI and SDI functionality lets an application open and concurrently run several tasks. It enables a program to be opened concurrently without the need to open a new instance of eDeveloper.
In eDeveloper, concurrent execution is implemented using contexts. When a program is run concurrently, a new context is opened. The new context will have its own Main Program. This Main Program and context are independent of the other contexts running under this process.
eDeveloper 10 provides you with the ability to add menus that are specific to a particular program and its sub programs. In addition, you can also provide a specific context menu for a control and not have the same context menu for all controls on the form.
A menu is a collection of menu entries and whether the menu is a context menu or a dropdown menu, is defined in the context in which it is used.
A series of functions are available that allow you to define which menus a program will use.
In eDeveloper 10 you can use a set of wizards that let you easily create components, including Web Service, DLL and Stored Procedure components. You can also define application objects as components.
Exporting components lets you share resources among eDeveloper applications and also facilitates the distribution of application revisions. You can also expose eDeveloper applications to the outside world by using component interface builders.
Components are listed in the Composite Resource Repository (CRR). The interface displays the application objects that can be shared with other applications.
From the CRR, you can:
• Reload a component interface or load a new component. When an MCI file is loaded or reloaded, eDeveloper checks the component type defined in the interface and changes the Type property of the CRR accordingly.
• Invoke a wizard that will both create a component that connects to an external resource and create the component’s interface.
• Add your own wizard.
• SOAP 1.1
• SOAP 1.2
• SOAP Attachments
• WS-Security
This latest Magic version supports Extensible Markup Language (XML), providing a flexible standards-based format, which enables you to easily share data on the Internet, Intranets, and other networks.
eDeveloper 10 provides you with the ability to use XML files as a standard data source. When using an XML data source, you can create eDeveloper tasks (batch and online) that use XML files as their view.
In the DBMS repository there is an XML File entry and in the Database repository there is a Default XML Database entry, which let you work with XML data sources.
You can define an XML data source in the Data repository and define a task to manipulate and handle the XML file.
You can load an XML schema using the Get Definition command.
You can check that the XML task is compatible with the XML schema by using the new XMLValidate and XMLValidationError functions.
You can create subviews of an XML schema to display selected compound elements and selected simple elements and attributes.
This new eDeveloper version now includes across-the-board Unicode support within the product. Support for Unicode is provided in addition to existing support for both the ANSI and OEM standards.
Unicode support in eDeveloper 10 means that you can:
• Read from and write to Unicode database fields
• Input and output Unicode data to various Input and Output files.
• Create program logic for Unicode data
• Perform read and write operations on Unicode files
• Send and receive Unicode data to and from external systems
• Use Unicode definitions in expressions, functions, and form properties
eDeveloper 10’s implicit casting mechanism lets you select the code pages you want to use for conversion to and from Unicode. If you don’t select the code pages, eDeveloper uses its own default code page.
For purposes of explicit casting, there are two new functions:
• UnicodeFromANSI
• UnicodeToANSI
• UnicodeCHR - Converts a numeric value to a corresponding Unicode character
• UnicodeVal - Converts a Unicode character to a corresponding numeric value
eDeveloper includes utilities that help you convert data from Unicode to ANSI and from ANSI to Unicode. The utilities let you define the input and output files as well as the code page to use, if you don’t want to use the default code page.
In eDeveloper 10 you can use various RADD enhancement features to define subforms, create user-defined functions, and provide open directory functionality.
You can use subforms to integrate a task form into the online form of a parent task, while maintaining the subform's task data handling and record cycle activities as independent from the parent task.
The main advantage of using subforms is that you can park on the line of a parent task and see the details from the subtask, for a one-to-many task relation. eDeveloper automatically refreshes the Subform data view according to the parent task when passing parameters, and retains your last position in the Subform data view when you leave and reenter.
The SubformExecMode function provides information that is required to let the developer condition the logic of the subform task to the mode of execution.
The Subform Refresh event lets you refresh the subtask when:
• The Automatic Refresh property is set to No.
• The task value has not changed to cause the runtime engine to refresh the subtask.
User-defined functions have the following behavior:
• They are constructed with an explicit name, parameters, operations, and a returned value. They are recognized by eDeveloper as an internal function and are evaluated at runtime like regular functions. Function syntax is executed in a manner similar to the execution of a synchronous event handler. User-defined functions can also be published as part of a component.
• When defined for a Main Program, these functions are available to the entire application. If Scope is set to Global, these functions can be available from a component.
The DirDlg function opens the system’s directory selection dialog box and returns the selected directory. For example DirDlg:\my documents’) displays c:\my documents in the Open Project File Name field.
This latest version of eDeveloper provides enhanced event handling features that let you define control handlers on the fly, declare event data attributes to the engine, determine when to execute event handlers in the record cycle, and handle changing variable values.
A user event can be set with declarative parameters. By using these declarative parameters, the Raise Event operation provides argument matching. When creating a handler for the event, the actual parameters can be set automatically in the handler.
For Control handlers in eDeveloper 10, you can select an existing control name from the Control list or enter a new control name. In eDeveloper 9, you could only select a defined control name from the Control list. The advantage of using a control name is that you can now define control handlers on the fly, meaning that you can:
• Create a control-specific handler before the control is created.
• Create a handler for controls of the same name in different online class forms.
• Keep the control reference even if the control is recreated.
When the Variable Change event is created, eDeveloper prompts you to create the following parameters:
• Chg_<variable name>_ stores the reason why the engine entered the handler, as expressed by two numeric values: 0 for an interactive change or 1 for a non-interactive change.
• Chg_Prv_ stores the previous value of the variable.
Force Record Exit Enhancement
The Force Exit option of a record in previous versions is now called Pre Record Update. This option instructs the engine to exit the record and execute the event handler just before the record is updated in the database.
A new option called Post Record Update instructs the engine to exit the record, update the record in the database, re-enter the record, and then execute the event handler.
This new eDeveloper version lets you recompute Link operations quickly for data controls in a browser application table by setting the table as a resident, as described below.
You can cache an application table by using the Immediate and on Browser option in the Resident property in the Data Source Properties dialog box. When the Immediate and on Browser option is selected, the data object table is designated as a resident table and is loaded on the client with the application. Every Link operation to the resident table is recomputed locally on the client, which means that eDeveloper saves time that would normally be used to recompute the Link operations for an application table located on the server.
eDeveloper will not cache a data object table that has links that require server-side recomputation. Cached tables for a browser task are permitted only when the task’s Link operations are not related to the server. These links are referred to as Client Side links.
Modern databases usually support a variation of a Datetime field. This kind of field contains a combination of a date and time, which provides an exact time stamp, such as May 3rd, 10:00 PM. eDeveloper now provides functionality to combine the Date and Time fields to the same SQL or ISAM iSeries database field.
The Part of Datetime property value is a reference to the Time field in the same database table, which together with the Date field combines the Datetime value in the SQL or ISAM iSeries database. The Part of Datetime field is not available for regular ISAM files.
The AddDateTime function adds a time interval to a Datetime value, which is represented by eDeveloper Date and Time fields. The specified amount of years, months, days, hours, minutes, and seconds are added to the current value of Date and Time, which is stored back into those two variables.
The DifDateTime function calculates the difference between two Datetime values. The second Datetime value is subtracted from the first Datetime value. The result is represented by the number of whole days between the two Datetime values and the number of seconds of the remaining part of the day.
 The runtime report generator may be enabled by the developer for any end user data view. End users may then generate user defined queries, reports and charts based on data in the view.

In addition to all the new features related to Rich Internet Applications, uniPaaS 1.5 includes a long list of general platform enhancements.
It is straightforward to make your applications Event driven by utilizing the new Record Main Converter. The Record Main Converter locates all of the Record Main based logic of a uniPaaS application and automatically converts it to Event based logic while keeping the entire functionality of the application intact. So there is no complex conversion process and definitely calling it a migration would be a complete misnomer.
Making your applications completely Event driven enables you to utilize new features, such as Subforms and Explicit Tabbing order of controls that are not available in tasks that have the Record Main Compatible logic unit.
A new property called "Layer List" has been added to the Tab control. This property defines the tab layers that will be seen at Runtime, and allows you to dynamically show, hide or re-order the tabs.
You can now define image types in client-server and rich client applications that include transparencies and animations since controls that enable image display will now show transparent and animated images.
The expression editor, which utilizes functions, has been enhanced significantly. First, the description and syntax of the functions have been added to the function selection list to make it easier for the developer to know the purpose of the function. Second, a dynamic tooltip displaying the function syntax has been added to the expression editor. The tooltip explains the function and its arguments and saves the time of looking for it in the help. The tooltip is automatically opened after writing or selecting a function, but it can also be opened manually by pressing ctrl+space after the function’s left parenthesis.
To make variable type instantly recognizable, the variables in the variable selection list are colored according to their type (virtual, parameter, or column).
With uniPaaS 1.5, a tooltip was added to the operations’ text areas to show the full text of the operation.

In uniPaaS 1.5, the push button control now has the added ability to define the arguments sent to an event that is raised from a push button.
Push button controls of hypertext style were enhanced with both horizontal alignment support and new color properties to allow full control over the colors per control.
The text in the column header of "windows" style tables has been improved and will now be word wrapped if the vertical alignment is set to "top". If there is still no room for the entire text, then an ellipsis (...) Will be displayed at the end of the displayed text.
Modify in query has proven to be useful. So now, the modify in query option has been added to the edit and check box controls as well.
You can now create a new task directly from the task list that is opened by zooming from the prg/tsk num property of a subform control.
A new "control modify" event has been added. This will be raised any time a control is modified. This will enable you to write logic to be executed after a control value was changed, even before the caret has left the control. To get the new value of the control you can use the editget() function.
Magic decided to enhance the verify operation by giving you several new abilities. With uniPaaS 1.5 enhanced verify operation you can now: define the title of the message box; select the image to be displayed in the message box; choose the button types to be displayed in the message box; and define whether the text will appear in the error log.
With the enhanced uniPaaS studio, you have the ability to jump into a program defined in a call operation. This will enhance the rad productivity as you will not be required to leave the current program and jump to another one by typing its number. This functionality is enabled by pressing ctrl+f5 on a program. After jumping to a called program, you can also jump back to the original location in the caller program by pressing ctrl+shift+f5. And of course, for keyboard averse programmers, these options were also added to the options menu.
The default printer for the current session is now changed according to the printer selected by the developer in the print dialog box. Any print jobs from uniPaaS will now use this printer as the default printer, and thus will save the end user from the need to select the printer each time.
A new optional parameter (ecf filename) has been added to the open application event. This parameter allows you to switch between applications at runtime without the need for user intervention in selecting the required application.
A new optional parameter (keep user sort) has been added to the view refresh event. This parameter allows you to perform a view refresh while keeping the user sort.
A new optional parameter (info type) has been added to the dbname() function in order to return additional table information, such as the uniPaaS name and database name.
The conversion utility has also been updated and it now returns the uniPaaS name when used while converting a link validate to a handler. The table name will now appear the same as in edeveloper v9.4.
A new function (fileinfo) has been added to allow you to view the system information of a file, such as the file creation and update date, path, and attribute.
A new function (cabinetunload) has been added to allow you to unload a component at runtime.
The applications' caption property now supports logical names, so you can define the required caption in the magic.ini file.
The preload view property has been enhanced to support the selection of an expression. This expression will be computed prior to fetching the records.
The studio has been enhanced and will now allow zooming into the expression editor from an expression even when entering a task in read-only mode (such as in debug mode, or using version control and not checking in the task).
The Debugger will show the variable value as a tooltip when placing the mouse over the: Entire line of the variable definition (Data View tab).
Control that has a variable attached to it (Form Editor).
The Placement dialog box has been redesigned so that it’s clearer to the developer what each option does.
The APG dialog box enables the selection of an index prior to executing the APG.
This is mostly required when executing the APG to browse the table records using a non-default index.
The Checker has been enhanced to show a warning message when performed on a program whose size is larger than a certain value. The program size can be specified by a new special setting called "SpecialProgXMLSizeWarning".
This warning can be disabled by specifying a value of zero or via the Checker Messages entry in the Environment settings.
The Print Data wizard allows the creation of a header line for text file output and allows the removal of the header line for HTML file output.
The value in the Web Service Endpoint property is now re-evaluated before each call to the Web server. This gives you the ability to change the value of the endpoint by updating a logical name.
The Broker Monitor has been enhanced to:
Show the entire call path of a program / handler.
Keep the changes in the column layouts made by the user.
Terminate Runtime Engines During Shutdown
The broker has been enhanced and can now terminate an engine (after a period of time defined in the ShutdownTimeout keyword) even if the engine does not shut down gracefully. This can be completed by defining the Mgrbi.ini’s new keyword called TerminateEnginesDuringShutdown with a value of Y.
The Web requester can now return errors into an XML file. The current Mgreq.ini keyword named DefHtml was replaced with DefError (DefHtml is still supported). This keyword can now accept the additional values of XML or filename.xml.
A new option has been added to the conversion utility which allows you to define whether the variable added due to the conversion of Link Validate to Link Query will be added before the link or last in the task.
The Database login screen, which appears when failing to connect to a database, will no longer be shown at runtime, since in most cases the end user should not change the connection settings.
A special setting called "SpecialShowDBLogin" was added to support the old functionality.
In eDeveloper V9.4 and below, when exporting a range of programs with references between them and then importing them to the same project, the number of references remained the same. In uniPaaS this is changed and the import will keep the reference between them, so it will not matter where they will be added. A new special setting called "SpecialRelativeImport" was added to support the old behavior.
uniPaaS officially supports the latest Windows 7 operating system. This release has further improved this support and made uniPaaS more compatible with the requirements of Windows 7. In this release the installation process properly performs the settings required for the IIS7 (Windows 7 Internet Information Server – i.e. Web Server). Moreover, the uniPaaS executable files are automatically set to run under the administrator user.
uniPaaS 1.9e supports a new type of database called SQLite.
SQLite, as its name suggests, is a very light DBMS that is targeted for single user purposes. This database can be used for single user deployments or for local data handling (per client) in multi-user deployment.
The SQLite database content reside in a simple file which can be easily transported from one machine to another, making it a good option for developers to pre-pack their applications with ready-made content.
There is no additional installation required for using SQLite. SQLite capabilities are embedded in the product, thus are available upon uniPaaS installation completion..
REST stands for Representational State Transfer and it is a way of providing in consuming services over the web (over HTTP) in a way that is much simpler than the elaborated standard of Web Services.
With the introduction of a new function called HTTPCall we enable our customers to properly consume and interact with REST based services.
You can read more about REST here:
We have upgraded uniPaaS’ Web Services infrastructure to the latest Systinet 6.6 which requires a newer version of the Java framework – Java 1.6.
On Installating uniPaaS 1.9e it will install the new Systinet modules and the required Java Runtime Engine (JRE 1.6).
Some internal changes were made to reduce the size of the ECF file and improve the performance of loading objects from it.
Although your old ECF files will still work with this version, it is highly recommended to recreate them in order to enjoy this improvement.
The decimal separator used to communicate with the database is now taken from the uniPaaS environment settings (as it was in eDeveloper V9) instead of from the regional settings.
In previous versions, using the Logon() function in a task only affected that task, and the user was reverted once the task was closed. This behavior was changed and now the new user will be used even after the task termination.
If you need to have the old functionality, you should perform an additional logon before closing the task.
The value of the ‘TempDir’ and ‘WorkingDir’ internal logical names can now be changed using command line parameters. This ability allows you to configure a different value for these settings per each user or engine startup.
In addition to the existing form of calling and consuming Web services using Systinet, uniPaaS now supports an additional form for calling and consuming Web services that does not require Systinet and the Java virtual machine in deployment.
This new form of calling a Web service is available using an Invoke operation option called ‘Web S. Lite’. This option is similar to the Call Web Service operation that was available in eDeveloper V9.4.
Note that the newly introduced Invoke Web S. Lite operation is a simpler way of calling Web services and it does not support some of the functionality and the security features that are supported by Systinet and that are available through the Invoke Web S. operation.
Refer to the uniPaaS Help for information about migrating a project with Web Service calls.
The SpecialAffinity keyword used to force the current process to use only one CPU was improved and can now accept the CPU number.
Browser Client is compatible to work on Internet Explorer 8.
A new management screen was added to show all the data sources (similar to the eDeveloper V9 screen).
This screen also includes data sources defined for selection controls.
You can access this screen from the Task pulldown menu or the Ctrl+D shortcut.
In addition to the current source control mechanism, in which all the files are stored and used locally, a new source control strategy was added and you can now choose to store only the checked out objects locally while using the rest of the source files from a common place.
To use this strategy, your Source Control Server should support shadow folders, and this folder must be defined in uniPaaS when you create a new project or open a project from the server.
Performing Check-in to several objects simultaneously will now load them to the source control server in a single operation. If your source control server supports ChangeSets, then you will be able to see, in the object source control properties, which files were checked in with your object.
The Activity Monitor screen now displays a table with multiple columns. Saving this data will generate an XML file with this information.
This change adds more information for the activities and enables easier task flow monitoring.
The following functions were added to allow dynamic execution of Range, Locate and Sort: RangeAdd(), RangeReset(), LocateAdd(), LocateReset(), SortAdd(), SortReset().
When using these functions, the new Range/Locate/Sort criteria are stored in the memory, and will be executed when a View Refresh is performed.
This functionality provides the ability to easily write a Range/Locate/Sort interface to be used by the end user
A component (and its source code) that uses the new dynamic range and locate functions is available. This component can be used to replace the built-in functionality of Range, Locate and Sort that is provided with the uniPaaS installation. The component includes interfaces for both Online and Rich Client tasks.
The 'Part of DataView' property was added to the field model, so you can now define it in the model level and inherit it in the task.
A new event was added to allow you to catch the column click and write specific logic that will be executed when the user clicks on a column.
A new function was added to return the task type.
This function will allow you to write specific logic for Online, Batch or Rich Client tasks.
A new function was added to return the task instance ID.
The task instance is a unique ID for the current execution of a task. If a task is re-opened, it will have a new instance ID.
This function will allow you to save persistence data per the task instance.
uniPaaS will now auto complete the DotNet expression prefix in the Expression Editor.
uniPaaS now allows the user to control whether fonts will be embedded within PDF files.
When the fonts are embedded, the PDF size increases.
You can control the print behavior via a new option in the environment settings.
uniPaaS now supports creating compressed PDF files.
Compressing the PDF will reduce the PDF size.
You can govern the print behavior via a new option in the environment settings.
The DATE and TIME data types added to SQLServer 2008 are now supported in uniPaaS.

A new special setting named SpecialTrimParamDSQL was added to define whether or not parameters sent to Direct SQL statements will be trimmed.
The location of where the data of the Form State Persistency and Preferred Events was changed from: ‘C:\Documents and Settings\<user>\Local Settings\Application Data\MSE’ to: ‘C:\Documents and Settings\<user>\\Application Data\MSE’
When dragging multiple files into an edit field, the separator character between the file names is now the pipe char (|) instead of a comma. This will allow you to properly handle file names that contain a comma in their name.
When Preload View=No, the DBViewSize() function will now return 0 and not the number of records that were fetched so far.
A new parameter was added to the function to determine if the blocked engine will be terminated when it no longer serves any users.
A new option was added to define the Checker behavior when unused expressions are found. You can define whether to skip them, delete them, or open a dialog box (as it did before).
You can select the desired behavior by updating the ‘Checker behavior for unused expressions’ setting in the Preferences tab of the Environment settings screen.
The Checker results can now be saved to a file.
You can define the result file in the ‘Checker output file’ setting in the External tab of the Environment settings screen.
When running a program from the Studio that is defined with Input Password = Yes and Deployment mode = Background, the Runtime engine will now use the Studio user name and password and will not open the Logon screen.
When consuming an RPC Web service with complex types, the Complex elements are now sent as-is and are not escaped.
The uniPaaS installation wizard now allows the end user to decide whether to install the 32-bit or 64-bit version of the requesters when it is run on a 64-bit operating system.
The Certification document was renamed to Compatibility Guide.
The default value of the AutoLoopBack property in the Mgreq.ini file was changed to ‘Y’.
uniPaaS will now install the dll files required to support Korean and Traditional Chinese characters.
The uniPaaS Help was enhanced and it now contains information from various documents, such as the Mastering uniPaaS PDF, Technical Notes, and documentation about servers.
When searching for a string in the uniPaaS Help, details from all of these sources will appear. You can see the source of the result in the Location column.

uniPaaS provides a comprehensive solution for a Rich Internet Applications (RIA). uniPaaS is a platform for developing and deploying RIA business applications serving remote and distributed users.
uniPaaS Rich Internet Applications may be remotely accessed, provide a fully interactive experience, and allow for automatic logic partitioning between clients and servers. User experiences are enhanced through an enhanced look and feel and accessibility of client-side resources in a browser free solution.
Developers benefit from a single unified IDE and development paradigm, performance-aware optimization during development and automated management of partitioning, communication and technical layers.
The resulting reduced Total Cost of Ownership (TCO) occurs because: there is no need for application-specific setups to access and run a Rich Client application; there is no need to manage the end-user's machine to accommodate application maintenance; and there is no need to install client-side software, such as Database-client and special printer drivers.
You can create a Rich Client task with full transparent runtime functionality by defining a task as a Rich Client task type in the Task property sheet.
The Rich Client deployment mode allows for Server-Side Functions; Client-Side functions and Functions that can be executed on either the client or the server.
uniPaaS supports expressions on either the client-side or server-side. Developer functions are also supported on either client side or server side.  However a single expression or function may not combine operations on both sides. Supported client side expressions include add, modify, delete, query, properties, etc. Server side expressions include Range, Locate, SQL Where, etc. A number of neutral expressions and operations are also provided for.
uniPaaS supports a wide variety of internal events including 67 client side events and 5 server side events in Rich Client mode.
In Rich Client tasks, uniPaaS supports several handling modes for handlers, operations, and functions. Some handlers, operations and functions may be executed in only one of these modes, while others may be set by the developer. The main modes are Client-side handling; Server-side handling; and Mixed mode handling where the operation will be performed on both the client and the server.
Several Rich Client programs can run simultaneously by using the Parallel Execution task property. For example, one program for employee management, and another for finance, all from a single entry point, without having to repeat authentication for each parallel program.
In Rich Client tasks, the server side can be debugged using the Activity Monitor. The client-side entries are added to the Activity Monitor when the next event is processed.
The floating license features enables customers to share a pool of license between several server processes in a dynamic fashion (as opposed to a static consumption where each server process is given part of the license capacity and that part cannot be changed as the process runs).
This ability to of dynamic consumption of license capacity was supported for threads based licenses (i.e. iBOLT server, or uniPaaS Enterprise Server). With this release, this ability is supported also for RIA server licenses which are user based.
The Init property now supports server-side expressions.
Although such expressions will be executed properly, they will reduce the performance when browsing through the records and hence it is not recommended to use them.
The Checker will show a recommendation message when using server-side expressions in the Init property.
The loading performance of RIA applications on mobile devices has been improved. The application is now automatically loaded upon device startup and is kept open in the background when the end user closes it. This enhancement reduces the load time of the application.
Note that this is the default behavior and can be disabled by raising an ‘Exit System’ event from the application or changing the ‘AutoStart’ property in the Execution.Properties file.
The ‘Client Network Recovery Interval’ property is now also supported for mobile devices.
Radio Button and Subform controls are now supported in Rich Client tasks running on a mobile device.
Support for .NET events was added for some of the external .NET controls of the .NET Compact Framework used by mobile devices.
For more information, refer to the uniPaaS Help.
The .NET Code editor that is available from the Invoke .NET operation was improved with the following features:
• A new code editor, including coloring, indentation, auto-complete, IntelliSense, etc.
• VB.NET code support
• Code compilation for mobile devices
A Rich Client project that uses .NET objects does not require that a .NET framework is installed on the server.
There is no longer a need to set public names for RIA programs that are not the entry point of the application.
To simplify the deployment and increase the security of the web server, the RIAModules alias is no longer required.
The Rich Client Deployment Builder will now copy the RIA modules and resources into the published application folder.
To simplify the uniPaaS Studio upgrades, the old RIA Modules will now be overwritten with the updated files. (The subfolder with the RIA version was removed). This means that you no longer have to manually update the ClientModulesPath parameter in any external ini files used.
MDI is now supported for Rich Client applications.
The declaration of the MDI properties is done by defining a Rich Client MDI form in the Main program and checking the ‘Open Rich Client MDI Frame’ check box, which exists in the Interface tab in the Main program’s task properties.
Refer to the uniPaaS Help for information about working with MDI in Rich Client.
A new option was added to define whether a window will be automatically closed when clicking on a parent window. This ability provides compatibility to the Online window behavior.
You can define this behavior in the Preferences tab of the environment settings.
A new property was added to the Image control to define whether the image file will be loaded from the server or the client. If the image refers to a server file, uniPaaS will automatically transfer the image file to the client and show it. This means that you no longer have to expose the images on the Web server or manually transfer them to the client side in order to show them to the user.
Objects other than images that refer to an external resource file (such as wallpaper images and Tab control images), will now regard the file as a server file and uniPaaS will automatically transfer the file to the client and display it. This means that you no longer have to expose the resources on the Web server or manually transfer them to the client side in order to show them to the user.
When running a Rich Client application from a mobile device or directly by running the uniRC.exe (without using ClickOnce), the Rich Client modules on the client machine will automatically be updated if the server version is different from the client version.
The ability to run a program or task in a subform using the Call operation was enhanced and you can now choose a subform that is defined in a parent task form.
Form state persistency is now supported for Rich Client applications.
This behavior is governed by the new ‘Persistent form state’ form property.
The FormStateClear() function is supported for Rich Client as well.
Incremental locate is now supported in Rich Client tasks.
Horizontal and Vertical alignment are now fully supported for Rich Client Push Button controls.
The Debugger functionality is now supported for server-side operations in Rich Client tasks.
The ClientFileOpenDlg() and ClientFileSaveDlg() functions were enhanced and will show the filename specified in the path property as the default file name.
The following function were changed to be neutral-side functions: DbViewSize(), DbViewRowIdx(), INIGet(), INIPut() and ProjectDir(), Term(), User().
The following functions are now supported as client-side functions: CtrlHWND() and WinHWND().
Two new functions named ServerFileToClient() and ClientFileToServer() were added to allow you to easily transfer files between the client machine and the server machine.
The DefError keyword, which is used to customize the error screen, is now supported for Rich Client applications.
The drag-and-drop functionality is now supported in Rich Client tasks and Rich Client forms for Edit controls only.
The User Functionality component mentioned above also contains a Rich Client program that implements the Online Print Data capabilities.
You can use this component if you need to provide the Print Data capabilities to the end user from a Rich Client program.

The Report Generator can now be executed from a Rich Client task.
You can now minimize your application from any task using the WinMinimize() function. This will hide the application and move it to the background. Running the application again or using the WinMaximize() function will return the task to the exact state from which the application was minimized.
The Rich Client Deployment Builder was enhanced with the ability to define the application splash screen for your mobile application, so that you can use your own graphics.
You can also customize the mobile application icon by manually updating the following resource file with the required icon: Add_On\Builders\Templates\MobileResource.dll.
The Rich Client Mobile module was enhanced with the ability to integrate with the .NET assemblies from the .NET Compact Framework 3.5.
If you need to interact with these assemblies, your mobile device should have the .NET Compact Framework 3.5 installed, and you should use the V3.5 deployment package created with the Rich Client Deployment Builder.
The Rich Client Deployment Builder will now be installed on server installations. This allows you to run it on the deployment site without having the uniPaaS Studio installed.



The Magic uniPaaS Application Platform 2.x was introduced in 2011. In addition to all the new features related to Rich Internet Applications, uniPaaS 2 includes a long list of general platform enhancements.

Native .NET Deployment

The uniPaaS 2.0 deployment engine supports native .NET deployment of uniPaaS 2.0-based applications as native .NET applications. The new uniPaaS 2 engine uses the Windows Forms .NET library as the GUI front-end for applications, resulting in a richer user experience. This fundamental new basis for the client side container provides full integration with the Microsoft .NET framework to significantly enhance application design, functionality, interoperability, and overall user experience regardless of the underlying server operating system (Windows, Linux, UNIX, or IBM i). uniPaaS 2 provides the Magic, .NET, and Java composite application functionality all from a single highly productive and easy-to-maintain platform. Both the Magic uniPaaS Application Platform desktop deployment client and the Magic uniPaaS Application Platform RIA deployment client are fully native .NET based applications. For .NET applications, the uniPaaS 2 deployment engine is a native .NET client, and all uniPaaS applications that are deployed using it qualify as standard .NET applications.


The Magic uniPaaS Application Platform 2.x introduces multi-device smartphone support making Magic fit the category of solutions called Mobile Enterprise Application Platforms (MEAP) by analyst organizations. As a MEAP platform, Magic supports multiple target smartphone clients from a single application platform for development and deployment. As of March 2012, supported smartphone clients include those that run on RIM BlackBerry OS, Android OS, Apple iPhone iOS, and Windows Mobile.


A new Magic uniPaaS BlackBerry Client is included to enable Magic applications to run on devices supporting BlackBerry OS. The BlackBerry Client supports the native look and feel of the BlackBerry OS.


The new Magic uniPaaS BlackBerry Client supports applicative interaction with the camera on BlackBerry smartphones.


As of March 2012, a new Magic uniPaaS iPhone Client is included to enable Magic applications to run on devices supporting Apple iOS. The iPhone Client supports the native look and feel of the iPhone on iOS.


As of March 2012, a new Magic uniPaaS Android Client is included to enable Magic applications to run on devices supporting different versions of Android OS. The Android Client supports the native look and feel of various Android devices running on Android OS.


Magic uniPaaS Application Platform 2.x offers seamless integration with third-party .NET modules, controls, and services to significantly enhance the overall user experience of applications.


Automated procedures have been enhanced and improved for the conversion of a Magic uniPaaS Desktop Client application to a Magic uniPaaS RIA Client application.  The technological gap between client/server and RIA deployment modes has been dramatically reduced, making the migration from client/server to RIA simpler and shorter than ever before.


The following sample projects were added to uniPaaS and are installed in the SampleProjects folder:
•     Rich Internet Demo: The project of the live RIA demo, which is available at and
•     Online Samples: A set of online (client/server) examples for multiple client/server ‘how to’ scenarios that are described in the book: Mastering uniPaaS.
•     Rich Internet Samples:  A set of Rich Internet examples for many rich client ‘how to’ scenarios that are described in the book: Mastering uniPaaS.
•     Mobile Web Samples:  Web templates based on HTML Merge technology for mobile devices.
•     .NET Tutorial: A short tutorial with examples explaining how to use .NET in uniPaaS.
All the projects are available with their source code, so you can use them in your applications.


The handling of the MDI form in client/server applications has been improved by consolidating all its properties and settings into a new MDI form entry in the main program.

 Magic xpa Application Platform 2.x
Magics Company Rebranding: A New Look for a New Age of Magic

Magic is launching its rebranding as a proactive strategic move to reflect the exciting changes that we are undergoing as a company and the major developments in our product offering.

Magics rebranding highlights our company values, the set of beliefs that guide and inspire us at every level throughout our organization.

For  our  brand  architecture—the  framework  that  defines  the  relationship  between  the corporate brand and the product portfolio—we have chosen to use the 'master brand' model, focusing more on our company brand (Magic) rather than on the branding assigned to our different products and services. This emphasizes that Magics different products are all instances of the same unified technology stack and the same fresh approach to enterprise software.

Accordingly, we have renamed our products as follows:

      uniPaaS is now named Magic xpa Application Platform

      iBOLT is now named Magic xpi Integration Platform

Magic's rebranding aims to illustrate that all our corporate activities and communications are infused with our core values, differentiating us from competitors, strengthening our relationships with customers, and increasing the popularity of our products and services.

New Features, Feature Enhancements and
Behavior Changes

Renaming of Product Executables

As part of the rebranding process, some of the product files were renamed, including:

      uniStudio.exe, which is now called MgxpaStudio.exe

      uniRTE.exe, which is now called MgxpaRuntime.exe

      uniRQBroker.exe, which is now called MgBroker.exe

      uniRQMonitor.exe, which is now called MgBrokerMonitor.exe

 Dependency in MSHTML.DLL in Rich Client Tasks

The MSHTML.DLL file is no longer required to run Rich Client tasks.

If your RIA application needs to use the BrowserScriptExecute() function, then it should include a reference in the CRR to this dll file.

Additional Functions Supported in Rich Client Tasks

The SubformExecMode, MnuRemove and MnuReset functions are now also supported in
Rich Client tasks.

Status Bar Panes in Rich Client Tasks

The  task  mode,  wide  and  zoom  indications can be  seen  in  the  status bar  of a RIA
application using a new special setting named SpecialShowStatusBarPanes.

Spanish Language Support

Magic xpa now supports a Spanish Language Studio.

The new language was added to the Language list in the installation wizard.

Android™ Support

The Android client was enhanced with the following features:

      Simpler customization methodology

      Repackaging script

      Support device location (GPS)

      Accessing the mobile devicescapabilities (telephone, text messages, emails)

      Support of the Row Highlight Color property for the Table control

Refer to the RIA for Mobile Devices PDF or to the RIA for Mobile Devices concept paper available in the Magic xpa Help.

iOS™ Support

The iOS client was enhanced with the following features:

      Support of the Row Highlight Color property for the Table control

      Support of the Subform control (Beta feature)

Refer to the RIA for Mobile Devices PDF or to the RIA for Mobile Devices concept paper available in the Magic xpa Help.

BlackBerry™ Support

The BlackBerry client is now available as part of the installation.
In addition, the BlackBerry client was enhanced with the following features:

      Support of the Line and Group controls

      Support of the Wallpaper form property

      Support  encryption  of  messages  between  the  client  and  the  server  (The
SpecialClientSecureMessages=N is no longer required.)

Change of behavior:

      Forms with a Floating window type will now open as a popup window. The Title Bar property, which previously defined if the window opened as a popup window, is now supported for full and popup windows and defines whether a title bar will be shown.

      The forms will be automatically scaled according to the devices DPI.

Refer to the RIA for Mobile Devices PDF or to the RIA for Mobile Devices concept paper available in the Magic xpa Help.

BlackBerry PlayBook Support

Magic xpa RIA client can run on the BlackBerry PlayBook tablet using the PlayBooks
BlackBerry Runtime for Android appscapabilities.
The script for repackaging an Android 2.3.3 RIA application to BAR file format, which is the compatible file format required for an application to run on the BlackBerry Tablet OS, is available as part of the installation.

Network Installation

The .NET runtime security policy (by default) disables code from running if it exists on a network drive. To run Magic xpa from a network drive you need to adjust your security policy.

This can be done via the Microsoft .NET Configuration tool or by running the following command:

c:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe -machine
-addgroup All_Code -strong -file <path>MagicxpaRuntime.exe -noname
-noversion FullTrust -name Magicxpa_Assemblies_Access -description
"Code group granting trust to Magic xpa assemblies"
This command needs to be executed only once in each of the computers. You can also add a –silent key for a silent installation.

Mobile Application Samples

A sample project named Mobile Demo was added to demonstrate how you can write mobile applications using the mobile device capabilities of Magic xpa’s RIA technology.

uniPaaS 2.1 – New Features, Feature
Enhancements and Behavior Changes

Android and iOS Support

The uniPaaS RIA client is now capable of running on Android™ and iOS™ devices.

As for the Windows Mobile and BlackBerry, the Magic RIA client for Android and iOS is a native operating system (OS) application implementing the Magic RIA client protocol. Using the Magic RIA client for the different mobile devices, developers can deploy enterprise connected, highly interactive RIA applications on the different mobile devices.

Note that the RIA client for Android is a Beta version.

Refer to the RIA for Mobile Devices PDF or to the RIA for Mobile Devices concept paper available in the uniPaaS Help.

Call to a Destination Subform or Frame in Online Tasks

The  Call  operation  in  Online  programs  was  enhanced  with  a  new  property  called
‘Destination’. This property provides the ability to dynamically call a program or a task and run it in a subform or a frame (similar to Rich Client).

Retain Focus in Online Tasks

The Call operation in Online programs was enhanced with a new property called Retain Focus’. This property defines whether the focus will remain on the current control or be moved to the first control of the called program or task after executing the Call operation.

This property is enabled when performing the call from a logic unit other than the Task, Record, or Control logic units to a destination subform or frame using the Destination property.

Parallel Execution in Online Tasks

Parallel execution is now supported for Online tasks.
The Application Modal window type was removed and the Modal window type will behave as the old Application Modal.
The Window menu and window-related events are still not supported.

View Refresh in Rich Client Tasks

The View Refresh behavior in Rich Client tasks was enhanced. After performing a view refresh with Relocate Mode=0’, the position of the current record now remains as-is (and is not changed to be the first record).

Row Placement Property in a Table Control

A new property was added to support the fixed number of table records.
Setting this property value to Yes means that the row’s height will be resized according to the table’s height, thus keeping the same number of records as designed in the Studio.

Default Location of Forms

A new option named Windows Default Location was added to the forms Startup Position property. When using this option, the form is positioned at the Windows default location and has the dimensions specified in the form’s size.
The Default option in which the form is positioned at the Windows default location and has the bounds determined by the Windows default was renamed to Windows Default Bounds.

.NET Data Binding

It is now easier than ever to use uniPaaS data variables with .NET controls.

Two new properties were added to the .NET control model so that you can define the .NET control property to which you want to bind the data and the event that will be the trigger for the data update.

After these properties are defined, you can use the .NET control in the same way as you use any uniPaaS built-in control. You simply need to attach your data variable to the .NET control’s Data property.
The previous functionality of assigning a .NET variable to the .NET control is still supported and can be done by using the .NET Object property in the .NET control.
For more information on how to use .NET data binding, see the .NET Tutorial sample installed with uniPaaS.

.NET – DataViewToDNDataTable() Function

A new function was added to create a .NET DataTable object out of the task’s data view. The .NET DataTable objects can then be used as the data source of other .NET objects.

.NET Controls – Change of Behavior

When clicking on a .NET control defined with Allow Parking = No, the focus will not leave the current control or record.

Requester and Broker Logs – Default File Names

The default value for the requester and broker logs were changed as follows:

mrb_event.log => BrokerActivity.log, mrb.log => Broker.log, req.log => Requester.log

Mobile Devices – Additional Information

A new property was added to allow maximum flexibility with mobile device properties. This property will be used to send specific pre-defined information to the mobile devices.

Mobile Devices – Press Event

A new event was added to handle the long press on a control in mobile devices. At this stage, this event is supported for BlackBerry only.

.NET 3rd Party Samples

A new sample project was added to demonstrate how you can use 3rd party .NET objects and controls in your application to improve the functionality and user interface.
The 3rd party assemblies are not included with this package and should be downloaded from the 3rd party vendor site as described in the sample programs.
Note:  If your 3rd party package version is different than the one used in the samples, you will have to replace the assemblies defined in the CRR with the ones from your version.

uniPaaS 2.0a – New Features, Feature
Enhancements and Behavior Changes

MDI Frame Color

A new color was added to the default color file with the value corresponding to an MDI Frame background.
This color is used as the MDI Form color in newly created projects (and can be changed in the proper ties of the Main Program form).

End-User Functionality Component

The End-User Functionality component is now added by default to newly created projects.

A new option was added in the migration wizard, which lets you select whether to also add this component to the migrated project.
Note that if you want to use both this component and the Report Generator, then the Report Generator component should be defined above the End-User Functionality component.

Subform Behavior

A new property named Refresh When Hidden was added to the Subform control in Online tasks.
This property provides the ability to load and refresh the task running in the Subform control the same way it was done in uniPaaS 1.9.
A value of Yes means that the subform tasks will be called for the first time after the Record Prefix of the host and again after each refresh of the subform. (This is similar to the behavior in uniPaaS 1.9 when the subform was attached to a container control and the container control was hidden.)
A value of No means that the subform tasks will be called only if the subform is visible. (This  is  similar  to  the  behavior  in  uniPaaS  V1.9  when  the  subform  had  a  Visible expression.)
For nested subforms defined with a value of No, if the parent subform has a value of Yes at runtime, then the nested subform wi ll also be executed with a value of Yes.
The migration from uniPaaS 1.x will set the value of this property as follows:

      No – When the subform is attached to a container control.

      Yes – When the subform has a Visible expression.

      Exp When the subform is attached to a container control and also has a Visible expression. The expression is the expression of the Visible property.
In addition, up until this version, when clicking on a Subform control, the Control Prefix and Control Suffix of the first control were always executed. This is now fixed, so only the Control Prefix of the clicked control will be executed.

EDP File Structure

The EDP file was changed a bit to prevent opening a uniPaaS 2.0 project in previous versions, in order to maintain the integrity of the sources.

 uniPaaS 2.0 – New Features, Feature
Enhancements and Behavior Changes


uniPaaS is a native .NET application, so in order to run uniPaaS on your machine, you must have .NET framework installed on your machine with one of the following configurations:

      Both .NET Framework V2.0 SP1 and Microsoft Visual C++ 2008 Redistributable.
You can install them by running the NetFx20SP1_x86.exe and VCRedist_x86.exe files from the Scripts\RIA folder.
       .NET Framework V3.5 (or above)

Network Installation

The .NET runtime security policy (by default) disables code from running if it exists on a network drive. To run uniPaaS from a network drive you need to adjust your security policy.
This can be done via the Microsoft .NET Configuration tool or by running the following command:
c:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe  -machine  -addgroup All_Code -strong -file <path>uniRTE.exe -noname -noversion FullTrust -name uniPaaS_Assemblies_Access description "Code group granting trust to uniPaaS assemblies"
This command needs to be executed only once in each of the computers. You can also add a silent key for a silent installation.

Online Changes

In uniPaaS 2.0, the Online GUI is based on the .NET framework instead of Win32.
The .NET framework does not support all the appearances and control behaviors that were supported in previous versions, so there is a change in the uniPaaS Runtime appearance as well.
For a full list of changes, refer to the What's Different in uniPaaS 2.0 help topic. Some of the major enhancements are described below.

.NET Integration in Online and Batch Tasks

.NET Integration was introduced to RIA applications in uniPaaS V1.8.

With  this  release  you  can  enhance  your  Client/Server     application  offering  by  easily embedding and integrating any .NET control or assembly in your Online and Batch tasks.
For more information on how to add and manipulate .NET modules, see the .NET Tutorial sample installed with uniPaaS.

Online MDI

The Online Runtime MDI Frame is now defined as any other form in the Main Program
(similar to the Rich Client MDI Frame).

The benefit of this change is the centralizing of all the form properties from the different locations they were once defined in, into a single location.
The MDI can be disabled by defining Open Task Window = No in the Main Program properties.

Online Frameset

Splitter forms are now defined using a frameset form for an Online task (as in Rich Client tasks) instead of using a Splitter form.

User State Persistency in Online Tasks

The Online tasks form state persistency is now defined as a simple Yes/No property.

This change makes it simpler to use the form state persistency since you now do not need to define and maintain a list of unique identifier names for your forms.

Rich Client – Hebrew Support

The Logical() and Visual() functions are supported.

Rich Client – Forms

All UOM types (dialog units, centimeters, inches) are supported.

Rich Client – Drag and Drop

1.   Drag & drop is supported for all of the controls.
2.   User-defined format is supported.

3.   DragSetCrsr() function is supported.

Rich Client – Post Refresh by Parent Event

A new internal event was added to execute logic every time the subform is refreshed.
This event is raised before the Record Prefix in the subform task when the subform is refreshed by the parent. The event is raised when one of the following occurs:
1.   The subform is defined with Auto Refresh=Y and a variable sent to the subform as a parameter is changed.
2.   The Subform Refresh event is raised.

3.   The subform is executed for the first time.

The event is not raised when a ‘View Refresh’ is raised in the subform task.

Sample Projects

Additional sample programs were added to the Online Samples and Rich Internet Samples projects. The new sample programs are for some of the uniPaaS functions and for connectivity to Google Calendar, Google Blogger, Facebook, LinkedIn and Twitter.