Oracle Forms 12

Transcription

Oracle Forms 12cNew Features – Rev. 3ORACLE WHITE PAPER SEPTEMBER 2019

DisclaimerThe following is intended to outline our general product direction. It is intended for informationpurposes only, and may not be incorporated into any contract. It is not a commitment to deliver anymaterial, code, or functionality, and should not be relied upon in making purchasing decisions. Thedevelopment, release, and timing of any features or functionality described for Oracle’s productsremains at the sole discretion of Oracle.ORACLE FORMS 12C - NEW FEATURES

Table of ContentsDisclaimer1Introduction1Forms Runtime and Administration Features2Oracle BI-Publisher Integration2Forms Websocket Java Script Integration (WJSI)4System Events5Client-Idle (SYSTEM CLIENT IDLE)5DB-Idle (SYSTEM DB IDLE)6Single-Sign-Off (SYSTEM SINGLE SIGN OFF)6EM Notification (SYSTEM NOTIFICATION)6Media Completion (SYSTEM MEDIA COMPLETION)7Refer to the new Environments Variables table for information about the newvariable, FORMS SYSTEM EVENT NAVIGATION.7Audio Playback7Single Sign-out8On Demand8On-Exit8Single Sign-out Event8Client Deployment8Embedded JNLP9Java Web Start9Forms Standalone Launcher (FSAL)9ORACLE FORMS 12C - NEW FEATURES

Custom Text on Logon and Password Change Dialogs10Tab Labels with Images10Record Counter11Row Banding11Gradient Canvas Colors12Smartbar (toolbar) Size and Scaling12Improved Canvas Background Image Support13Image Item Sizing Style Property14Item Level Mouse Cursor (Pointer)14Setting Max Event Wait Programmatically15Client IP Address15Form Query-Only Mode16Oracle Diagnostic Logging and Forms MESSAGE Built-in16JVM Controller16Child JVM Management17Load Balancing17Logging17Fusion Middleware Control Advanced Configuration18Custom Color Schemes18New Applet/Servlet Parameters19New Environment Variables23Record Manager27Support for DATA VALUE IS NULL Property27Oracle Platform Security Services (OPSS) Integration27ORACLE FORMS 12C - NEW FEATURES

Remote Access Descriptor Administration28Forms Application Deployment Services29Servlet Administration Test Mode30Forms Helper Script30Forms Builder Features31Builder Preferences31General Tab31Runtime Tab31Module Converter31Product Documentation and Community32Java Developer API (JDAPI)32WebUtil32WebUtil without OLE32File Last Modified Date33Extend WEBUTIL SEPARATE FRAME Package33File Upload/Download Transfer33ConclusionORACLE FORMS 12C - NEW FEATURES34

IntroductionThis document is intended to outline some of the many new features found in Oracle Forms 12c(12.2.1). This document alone does not represent a complete collection of all the new features andenhancements introduced into this new release. Features that are included herein represent acumulative catalog of features from all minor versions in the 12c (12.2.1) family. It is assumed thatreaders will be using the latest product version and therefore can take advantage of any featurediscussed.This high level document is only for reference and an introduction to some of the new features.Complete details are available in the product documentation, including the Form Builder Help.For a more information and usage details on these and other new features, refer to the Oracle FormsDocumentation Library and Oracle Form Builder Help.1 ORACLE FORMS 12C - NEW FEATURES

Forms Runtime and Administration FeaturesOracle BI-Publisher IntegrationIn previous versions, Oracle Forms offered integration with Oracle Reports. In this release, Oracle Forms includesintegration with Oracle BI-Publisher. Developers can choose between using one or both reporting tools.The integration with Oracle BI-Publisher has been designed to closely resemble the integration provided previouslyfor Oracle Reports. A new property named REPORT OBJECT TYPE will be used to identify if the referencedREPORT OBJECT is intended for Oracle Reports (OraReports) or Oracle BI-Publisher (OraBIP). This can only beset at design-time. Most other related built-ins will remain the same as they were for Oracle Reports. Newproperties have been added to accommodate BI-Publisher. Refer to the Form Builder Help topic“SET REPORT OBJECT PROPERTY” for a complete list of new properties and their descriptions.The following assumes Oracle BI-Publisher has already been installed, configured, and is accessible from theinstallation hosting Oracle Forms. Refer to the BI-Publisher documentation for information on its installation andconfiguration.To integrate with BI-Publisher, the following basic steps are necessary.1. In the Form Builder Object Navigator, create a Report object.2. Access the properties for this new object in the Property Palette.3. Set the Report Type property to OraBIP.4. In the Property Palette, set the required and desired optional properties. (Refer to the Builder Help for details)5. Create the desired trigger or program unit that will be used to make the call to BI-Publisher.The BI-Publisher username and password must be passed programmatically in order for the request to succeed.DECLAREbi usernamevarchar2(20);bi passwordvarchar2(20);repidREPORT OBJECT;v repvarchar2(256);rep statusvarchar2(256);-- Because Forms calls BIP with Java, we want to trap any Java errors that may occur.exora java.jobject;ex msg varchar2(255);BEGIN-- Identify the Report Object.repid : find report object ('BI EMP');-- Before reaching this point be sure to obtain the username and password for BI-Pub.2 ORACLE FORMS 12C - NEW FEATURES

-- Pass in the username and password. This is required.SET REPORT OBJECT PROPERTY (repid, BIP USER, bi username);SET REPORT OBJECT PROPERTY (repid, BIP PASSWORD, bi password);-- Ask BIP to run the report.v rep : RUN REPORT OBJECT(repid);/* DO SOMETHING ABOUT CHECKING STATUS HEREThe call to BIP is asynchronous. Therefore, it will be necessary to check on its status periodically ifnotifying the user is desired. The report object status built-in can be used for that check.Likely a timer would be used to periodically check the status. Using a loop is not recommended.Example: rep status : report object status(v rep);*/EXCEPTIONWHEN ora java.exception thrown THENex : Exception .new(ora java.last exception);BEGINex msg : Exception .toString(ex);message('Java Exception occurred: ' ex msg);ora java.clear exception;EXCEPTIONWHEN ora java.java error THENmessage('Unable to call out to Java, ' ora java.last error);END;END;If passing parameters is necessary, the SET REPORT OBJECT PROPERTY built-in can be used. This should beset prior to making the call to RUN REPORT OBJECT. To pass a single parameter you would do something likethe example below. Note that the parameter is case sensitive in BI-Publisher. So if the parameter created in BIPublisher was created with upper case characters then the string passed from Forms must all be all upper case, asseen below with the parameter “P DEPTNO”.SET REPORT OBJECT PROPERTY (repid, BIP REPORT PARAMETERS, 'P DEPTNO 30');If passing more than one parameter, each parameter value pair must be separated by CHR(10).SET REPORT OBJECT PROPERTY (repid, BIP REPORT PARAMETERS, 'P DEPTNO 30' chr(10) 'P ENAME WARD');Information about using BI-Publisher can be found in the BI-Publisher 2213/bip3 ORACLE FORMS 12C - NEW FEATURES

Forms Websocket Java Script Integration (WJSI)This feature requires the use of Eclipse/Jetty version 9.4.5 or newer, a third party Java jar file. This Java jar filemust signed with a trusted and known certificate. Refer to the Java documentation for more information aboutsigning Java jar files. At the time of this document writing, the needed Jetty file can be downloaded from etty/aggregate/jetty-allAs a result of changes in the industry, some browser vendors have decided to stop supporting plug-in technologies,including the Java Plug-in. In order to overcome this loss of browser support, Forms 12c delivered two browser-lessdeployment options (Java Web Start and Forms Standalone Launcher) which are described elsewhere in thisdocument. Because the configurations are browser-less there is no way to communicate with an HTML pagerunning in a browser and thus the standard Forms-Java Script integration does not work in those configurations.Forms Websocket Java Script integration aims to alleviate this limitation.Using the Eclipse/Jetty server, a running Forms application can communicate to an HTML page through the Jettyserver. The Jetty server is an extremely lightweight application server that has built-in support for Websockettechnology and hosts a special intermediate application that assists in the communication between browser andForms application. This lightweight server is delivered to the user’s machine during application startup.The implementation of this feature allows for the reuse of most existing Forms Java Script Integration code. Toconvert an existing application’s Java Script integration do the following:» Locate websocketJSI.pll which is provided in the \forms directory and generate it into a PLX.» In the Form Builder, open an existing module and open websocketJSI.olb (found in the \forms directory).» Copy or subclass the WEBSOCKETJSI group found in the Object Library into the application.» Attach websocketJSI.pll to the module.» Perform a Find/Replace PL/SQL in the application. Search for web.javascript and replace it withwebsocketJSI.javascript Here is an example:Before:web.javascript eval expr(:block1.JSEXPR);After:websocketJSI.javascript eval expr(:block1.JSEXPR);» Generate a new FMX.In order for the HTML page to send and receive data, it must include a reference to frmwebsocketjsi.js. This file isprovided in the \forms\java directory. This file should not be relocated or altered. In the HEAD of the HTML pageadd the following: script type "text/javascript" src "/forms/java/frmwebsocketjsi.js" /script Applet parameters associated with this feature are listed in the Applet parameter and Environment Variable tableslater in this document.For more information on how to use this feature refer to the Working with Oracle Forms Guide.4 ORACLE FORMS 12C - NEW FEATURES

System EventsSystem Events allow developers to develop applications that can react to actions that occur relative to the runningapplication. In order to use System Events, you must create the desired event object in your form. Only one eventper type can be included in any one form.Figure 1 : Creating a System Event in the Form BuilderThe new System Events include the following.Client-Idle (SYSTEM CLIENT IDLE)This event will be raised when the end-user has not performed any actions in the associated applicationsession for the amount of time configured. The maximum idle time will be configurable using either a newapplet parameter idleTimeout or using a new SET APPLICATION PROPERTY argumentCLIENT IDLE TIME. Setting the value to 0 will disable idle time monitoring. The configured values will be inseconds. The values set for this event may not exactly represent the time specified. For example, an idle timesetting of 60 seconds may not immediately raise the event until 61 seconds have elapsed. Therefore, this eventshould not be used for critical time conditions. Also, idle time will be ignored while the running form isdisplaying modal content (e.g. Alert or error dialogs, etc). If it is preferred that even when a modal window isopen, the associated event fires, the environment variable FORMS ON MODAL DETECT IDLE set to TRUE(or 1) will cause the trigger to fire immediately upon returning from the modal state and completing the currenttrigger processing.Here is an example of how to use the SYSTEM CLIENT IDLE event.First, either set the Forms applet parameter idleTimeout (in seconds) or set the application propertyCLIENT IDLE TIME (in seconds) to enable the monitoring of client interactivity idle time in the form.-- Set CLIENT IDLE TIME to 10 minutesSET APPLICATION PROPERTY (CLIENT IDLE TIME, 600);Next, in a WHEN-EVENT-RAISED trigger add something like the following.DECLAREal button Number;BEGINIf :SYSTEM.LAST EVENT 'SYSTEM CLIENT IDLE' Thenal button : SHOW ALERT ('CLIENT IDLE ALERT');End if;END;5 ORACLE FORMS 12C - NEW FEATURES

DB-Idle (SYSTEM DB IDLE)This event will be raised when database interactions have not occurred in the associated application sessionfor the amount of time configured. The maximum idle time will be configurable using either a new environmentvariable FORMS DB IDLE TIME or using a new SET APPLICATION PROPERTY argumentDB IDLE TIME. Setting the value to 0 will disable idle time monitoring. Once this event is raised, it will notreset/restart until another database action occurs. To enable continued monitoring, set DB IDLE REPEAT toTRUE (SET APPLICATION PROPERTY (DB IDLE REPEAT, PROPERTY TRUE). This behavior differsfrom CLIENT IDLE, which monitors continually once enabled. The configured values will be in seconds. Thevalues set for this event may not exactly represent the time specified. For example, an idle time setting of 60seconds may not immediately raise the event until 61 seconds have elapsed. Therefore, this event should notbe used for critical time conditions. Idle time monitoring will not begin until a value has been set forDB IDLE TIME and the first database action has occurred (e.g. database query, etc). Here is an example ofhow to use the SYSTEM DB IDLE.First, either set the Forms environment variable FORMS DB IDLE TIME (in seconds) or set the applicationproperty DB IDLE TIME (in seconds) to enable the monitoring of database interactivity idle time in the form.Next, in a WHEN-EVENT-RAISED trigger add something like the following:BEGINIf :SYSTEM.LAST EVENT 'SYSTEM DB IDLE' Then-- Turn off DB Idle monitor so the logout action doesn’t-- cause the idle monitor to fire again. Then logout.SET APPLICATION PROPERTY (DB IDLE TIME, 0);Logout;END;Single-Sign-Off (SYSTEM SINGLE SIGN OFF)This event will be raised when single sign-off has occurred. The application developer can decide how theapplication should respond to a logout condition. The Forms Server will not be notified of this event until thenext exchange from client to server (e.g. heartBeat, maxEventWait, user action, etc). Single Sign-out featuresare not available when using Java Web Start or the Forms Standalone Launcher (FSAL). Here is an exampleof how to use SYSTEM SINGLE SIGN OFF.If :SYSTEM.LAST EVENT 'SYSTEM SINGLE SIGN OFF' ThenEXIT FORM (NO VALIDATE);End if;EM Notification (SYSTEM NOTIFICATION)This event will be raised when a notification has been received from Fusion Middleware Control (FMC). FMCwill be able to send one of five notification levels to any or all of the running Forms sessions from the FormsUser Sessions page. The application developer will code the desired action for each notification level.Notification levels can be determined using the new System variable :SYSTEM.NOTIFICATION VALUE. Hereis an example of how to use the SYSTEM NOTIFICATION event.6 ORACLE FORMS 12C - NEW FEATURES

DECLAREnotification levelvarchar2(1);BEGIN-- NOTIFICATION VALUE is the value/number sent from Fusion Middleware Controlnotification level : :SYSTEM.NOTIFICATION VALUE;If :SYSTEM.LAST EVENT 'SYSTEM NOTIFICATION' ThenCASE notification level-- Each message should be customized as needed.-- Customize these actions as needed.WHEN '1' THEN MESSAGE ('Received Notification #1 from Fusion Middleware Control.');WHEN '2' THEN MESSAGE ('Received Notification #2 from Fusion Middleware Control.');WHEN '3' THEN MESSAGE ('Received Notification #3 from Fusion Middleware Control.');WHEN '4' THEN MESSAGE ('Received Notification #4 from Fusion Middleware Control.');WHEN '5' THEN MESSAGE ('Received Notification #5 from Fusion Middleware Control.');END CASE;End if;END;Media Completion (SYSTEM MEDIA COMPLETION)This event will be raised when a media (audio) file, started with the PLAY AUDIO built-in, has reached the endof its play time. This will allow developers to programmatically react to this completion. Here is an example ofhow to use the SYSTEM MEDIA COMPLETION event.If :SYSTEM.LAST EVENT 'SYSTEM MEDIA COMPLETION' ThenMESSAGE ('Thank you for playing this audio file');End if;Refer to the new Environments Variables table for information about the new variable,FORMS SYSTEM EVENT NAVIGATION.Audio PlaybackOracle Forms application will now be able to play audio files. This feature is not fully supported when using earlyversions of Java 7 on the client tier. Therefore, using Java 8 is recommended. Java 11 is supported with FSALbeginning with 12.2.1.4, however to enable audio support with Java 11, JavaFX is required. Refer to the UsingForms Standalone Launcher paper or the Working with Forms Guide for more information. The feature provides anew built-in called PLAY AUDIO and will offer various arguments. Valid arguments include the following:» audio file name » ACTION PAUSE» ACTION STOP» ACTION RESUME» ACTION TOGGLE MUTE7 ORACLE FORMS 12C - NEW FEATURES

Audio files will be accessible via a properly signed jar file (recommended) or URL. Using a URL may result in Javasecurity warnings being presented to the end-user. Audio files will be stored on the server’s local file system (e.g.middle tier); similar to how images for iconic buttons might be stored. Supported formats will include the following:» MP3» AIFF containing uncompressed PCM» WAV containing uncompressed PCM» MPEG-4 multimedia container with Advanced Audio Coding (AAC) audio-- Begin playing the welcome audio file.PLAY AUDIO (‘welcome.mp3’);Single Sign-outSupport for single sign-out and its detection are included with these variations; on demand (programmatic), on-exit,and a new System Event (for detection of logout occurrences). The System Event will allow applications to react toa single sign-out occurrence or explicit sign-out when commanded. Single Sign-out features are not supportedwhen using Java Web Start or the Forms Standalone Launcher (FSAL).On DemandOn demand single sign-out provides a new built-in, LOGOUT SSO, which allows the developer toprogrammatically cause single sign-out to occur. Executing this built-in will cause a new web browserwindow/tab to open briefly and call the SSO logout API, similar to what would occur in a full SSO partnerapplication.On-ExitOn-exit single sign-out is activated using a new applet parameter, ssoLogout. Setting this parameter to TRUEin the Forms Web Configuration (formsweb.cfg) will cause cleanly exiting forms to terminate the current SSOsession, if one exists. The applet parameter ssoLogoutRedirect can be used to redirect the browser to a targetURL upon successful SSO logout. The ssoLogoutRedirect parameter only works when used in conjunctionwith ssoLogout and when an SSO session exists.Single Sign-out EventThe Single Sign-out event, described in detail above, allows developers to design applications that can react toa single sign-out action occurring.Client DeploymentTraditional Oracle Forms web applications ran embedded in a parent web browser, using the Java Plug-in. HTMLsent to the client from the Forms Servlet included the appropriate applet tags, which caused the Java Plug-in to loadand launch the Forms applet. Unfortunately, this method of deployment came with problems and limitations. Someof those limitations included insufficient display space, accidental navigation away from the running Formsapplication, extra overhead of supporting the browser, limited support for the Java Plug-in, and compatibility issuesbetween browser version and Plug-in version.8 ORACLE FORMS 12C - NEW FEATURES

New client deployment options include Java Web Start, embedded JNLP, and Standalone. Traditional HTML willcontinue to be supported and configured as the default. Configuration examples are provided in the Forms WebConfiguration (e.g. formsweb.cfg).Embedded JNLPEmbedded JNLP is a hybrid of traditional HTML and Java Web Start. As with traditional HTML, the FormsS

1. In the Form Builder Object Navigator, create a Report object. 2. Access the properties for this new object in the Property Palette. 3. Set the Report Type property to OraBIP. 4. In the Property Palette, set the required and desired optional properties. (R