“If you don’t have a Mobile Strategy you don’t have a Strategy!”(Grant Ronald, Oracle)

With this quote Grant Ronald starts his presentations for over a year now. And it turned clear that it is very prophetic.

evolutin to mobile

The demand for Mobile Applications is rising, because most end users are used to have an app for almost everything like checking train schedules, monitoring their fitness, keeping in touch with friends and family and so on. They now wish to have that flexibility also at work.
Customers like information about products, sales and marketing needs instant data about products and clients, support teams request mobile interfaces instead of paper check list and executives need an overview about the business not only when they are in front of a desktop computer.
In addition current handheld devices for warehouses and stores are expensive compared to modern smartphones and tablets with iOS and Android.

Challenge for Oracle Customers

The major challenge for Oracle Customers that run E-Business Suite, Oracle Retail or custom developed Oracle Forms Applications is to deploy the same functionality they have developed in the module on an Mobile Application.
A process is needed to extract the Business Case, or in Agile Words – User Story.

Oracle Mobile Cloud Service

mobile cloud

Oracles Mobile Cloud Service was designed to support development teams to create apps quick and easy. It simplifies and optimizes the development process and securely connects to back end systems and services. Mobile Client Developers get out of the box services that every Mobile Application requires. This frees the resources to build beautiful and engaging apps. An interface for custom services are also provided, so custom business cases or user stories can be deploy in the cloud. (https://cloud.oracle.com/mobile)

Pitss Process to Mobile Cloud Service

Most business applications based on Oracle Technology today are deployed on desktop computers. Especially when the software is written in Oracle Forms like E-Business Suite, Retail it is not possible to access the Business Logic without breaking the architecture.

To support a clean architecture Pitss create a process that includes the following steps:

  1. Identification of the Business Case (User Story) and all dependent objects

    The recording process allows the end user or business analyst to show which Business Cases should be part of a Mobile Application. In almost every case not all functionality of the desktop application is in need for a mobile interface. In this step only the User Stories and dependent objects are identified that needs to be mobile.

  2. Extraction of Business Case

    Pitss created a tool (Pitss.Con) supported process to extract the dependent objects and separate it from the user interface. This step makes the User Story technology independent.

  3. Building Web Services

    On top of the now extracted User Story a Web Service can be build. Web Services enable the consumption of Business Logic by any technology that provide an interface to the web (intra- or internet).

  4. Deployment to Oracle Mobile Cloud Service

    This Web Service can now be deployed in a Oracle Mobile Cloud Service and the mobile app developer can now build an application in a simple and easy manner that is supported by Oracles Development Cloud.

Go Mobile fast and simple

record_ext_build_deploy

The Pitss process of RECORD – EXTRACT – BUILD – DEPLOY preserves the existing Business Logic of an current application.

The use of Oracles Mobile Cloud Service has the advantage of a Mobile Platform that already provides a wide range of out of the box services like

  • secure connectors to customer back end
  • push notification
  • mapping a device to a user in back end system
  • accessing Oracle Cloud Database
  • synchronizing offline data
  • defining mobile analytics

A mobile developer doesn’t need to bother with these kind of task and can concentrate on creating a mobile app that is appealing to customers and users and is easy to use.

If you have any questions or remarks please leave a comment.

Posted on by Patrick | Leave a comment

I tried to find a good way to explain the PITSS Process from Oracle Forms2ADF in a Nutshell. The solution was to create a short Movie that explains the Process.

 

I hope you enjoy the movie.

In various projects we figured out that the process is a key for success. When we followed the general steps and only adapted the flow where it was supposed to, we were very successful and able to stay in time and budget.

Oracle Forms2ADF - Fine Tuning Phase

Oracle Forms2ADF – Fine Tuning Phase

Posted on by Patrick | 1 Comment

Update to Oracle Forms and Reports 12c Installation

My colleague Alex Bertman, after some trial and error, figured out how to install and configure Reports in 12c.

If we try to call the environments of the in-process  Reports Server 12c after after a new install and configuration then we have to use the Oracle Support article (Doc ID 2069065.1).

The first step after running the Configuration Wizard in a new environment with Oracle Reports 12c is to run the WLST command createReportsToolsInstance(). This command will create all the components at file system level needed for Oracle Reports.

Example

1- Execute wlst.cmd/wlst.sh from ORACLE_HOME/oracle_common/common/bin
2- Connect to AdminServer.     connect(“weblogic”,”weblogic_password”,”hostname:7001″)
3- Run the following wlst command.     createReportsToolsInstance(instanceName=’reptools1′,machine=’AdminServerMachine’)
4- At this moment reports servers can be used.
5- After step 4 cannot check the environments because of the security policies. In this case we have to set a security as
<webcommandaccess>L2</webcommandaccess>
in rwservlet.properties

Posted in General, Oracle Fusion Middleware | 1 Comment

Our Weblogic Consultant Alex Bertmann did a great job to figure out what you need to do to get Oracle Forms 12c installed.

forms12c

The installation seems to be straight forward. but see for yourself what his experience is:

Hi at all,

it is my first experience with Oracle Forms 12c.

Installation steps in order:

  1. Min 8 Gb RAM
  2. Static IP (or Loopback Adapter for Windows)
  3. Deactivate AntiVirus + Firewall
  4. Install JDK 1.8.0_51+   (as Administrator / with Administrator privileges)
  5. Add JDK_HOME\bin in %PATH% (first in the list)
  6. Install WLS (now it’s Infrastructure)    (as Administrator / with Administrator privileges)
     java -jar fmw_12.2.1.0.0_infrastructure.jar
  7. Run Forms & Reports installation without configuration   (as Administrator / with Administrator privileges)
  8. Run RCU installation (C:\Oracle\Middleware\Oracle_Home\oracle_common\bin). The DB’s instance should have Character Set as AL32UTF8 and DB -> Enterprise Edition (12.1.0.1+; 11.2.0.4+)
  9. Run config.bat  (as Administrator / with Administrator privileges)

In this version of Forms we have to forget about Forms instance. Now all components (OHS, Reports, em) we can find in our domain (user_projects …)

Default location of Domain -> C:\Oracle\Middleware\Oracle_Home\user_projects\doimains\base_domain

  1. After configuration we run Node Manager (startNodeManager) then start Admin Server (startWebLogic) (-> C:\Oracle\Middleware\Oracle_Home\user_projects\doimains\base_domain\bin)
  2. If Admin Server is running then we can start WLS_FORMS and/or WLS_REPORTS (-> C:\Oracle\Middleware\Oracle_Home\user_projects\doimains\base_domain\bin)

startManagedServer.cmd WLS_FORMS
startManagedServer.cmd WLS_REPORTS

When I tried to run WLS_REPORTS then I found a BUG -> after record “Enter username …” there is the text and it’s difficult to understand that it’s now your time to type the user in cmd-session.
wls_Rep12c

  1. If WLS_FORMS is running then we can check our registry (regedit) – are entries FORMS_PATH, FORMS_BUILDER_CLASSPATH in it ?

Now we can run Forms Builder.

Thanks again Alex for the great work.

We will check out the new features of Oracle Forms 12c an dkeep you posted.

Posted on by Patrick | 8 Comments

My colleague Daniel did a great research on the new Oracle Forms 12c Version released Friday last week. He just gave the installation a try and was successful within the first try.

Take a look at his blog to see what is new. I’m sure he will post some more news about Oracle Forms 12c.

Source: First impressions of Oracle Forms 12c

Posted on by Patrick | Leave a comment

How to Replace Forms Runtime Files in Production Environments ‘On The Fly’

This is a question from a lot of customers, so I like to publish it for a broad band of Oracle Forms Customers what Oracle proposes for this question:

 

APPLIES TO:

Oracle Forms – Version 6.0.8 and later
Information in this document applies to any platform.
Checked for relevance 02-Apr-2011

GOAL

This document describes how to replace forms runtime modules without bringing
down the Forms Runtime Environment (OC4J_BI_Forms Instance in 10g/11g and Forms
Server or jserv in earlier releases) in production systems where the parameters
FORMSXX_MMAP can not be used.

On Unix, when you replace the runtime files in the OS level, then the
sessions that are already using these modules will be disconnected with the
following error message :

FRM-92101: There was a failure in the Forms Server during startup. This could
happen due to invalid configuration.
Please look into the web-server log file for details.

Details…
Java Exception:
oracle.forms.net.ConnectionException: Forms session aborted: unable to
communicate with runtime process
at oracle.forms.net.ConnectionException.createConnectionException(Unknown Source)
at oracle.forms.net.HTTPNStream.getResponse(Unknown Source)
at oracle.forms.net.HTTPNStream.doFlush(Unknown Source)
at oracle.forms.net.HTTPNStream.flush(Unknown Source)
at java.io.DataOutputStream.flush(Unknown Source)
at oracle.forms.net.StreamMessageWriter.run(Unknown Source)

On Windows, when trying to copy the file, the following error appears :

Cannot copy MODULENAME: The requested operation cannot be performed on a file
with user-mapped section open.

SOLUTION

One solution for this problem is to use parameter FORMS_MMAP/FORMS60_MMAP as described
in the following document :

Note:151618.1 “Unable to Replace .fmx Files ‘On The Fly’ During Forms Runtime”

However as described in this document, this parameter should not be used in production
environments.

When there is no or very little maintenance periods in production systems to
perform such copy operations or there is an urgent need to replace a runtime module,
the following method is the recommended method :

Keep two directories including the same fmx/plx/pll/mmx, etc files, and
reference one of them in the FORMSXX_PATH in default.env/registry according to
the patform. Here FORMSXX_PATH stands for

FORMS60_PATH for Forms version 6.0.X
FORMS_PATH for Forms version 10.X /11.X

When you need to replace one/some runtime modules, replace the one
in the directory that is *NOT* referenced in the FORMSXX_PATH variable, then
change the reference to the updated directory in FORMSXX_PATH. From now on, the
new connections will start using the updated runtimes. When all the users
logout from their current sessions and connect to application once more, the old
directory will be ready for modifications. And at that time you can synchronize
the old directory with the new one and continue this way switching the
directories whenever needed.

Please note that, when there is a need to replace another form or the same form
once more, before having the chance to synchronize the directories, this 2
directory approach can be extended to 3,4 or more directories according to needs.

REFERENCES

NOTE:151618.1 – Unable to Replace .fmx Files ‘On The Fly’ During Forms Runtime

via Document 286762.1.

Posted in Forms & Reports, General | Leave a comment

From Forms Legacy systems to SOA Suite 12c and MAF

Introduction

In modern application development it is propagated to use webservices and even use certain tools like the Oracle SOA Suite or Oracle Service Bus to manage and orchestrate webservices in a central environment or to enable service abstraction. But many Oracle Forms developers find it hard to use these methods in their application and other applications to reuse the existing business logic by deploying a webservice. But since there is a significant raise in mobile enablement, also legacy systems like Oracle Forms applications should benefit from generating webservices.

“Application infrastructure and middleware
projects are becoming the cornerstone of the
digital business.”

Fabrizio Biscotti
Gartner Research, 2014

The main problem that Oracle Forms developers face when you ask them to implement SOA into their applications or build webservices based on logic on source code from Forms, is the fact that SOA is a paradigm – it’s not a technology or a product – it is a concept. And it is different from the concepts on which legacy systems base on.

Also do Oracle Forms applications tend to be monoliths, where it is hard and time consuming to identify the business logic and move this logic to the database and build a webservice on top. A second problem is often to first identify code, that really is a key process in a application, meaning which is used heavily and for which it would make sense to build a webservice.

The Oracle SOA Suite and especially the Service Bus enables Developers to publish, manage & orchestrate webservices. Keywords here are mobile & cloud enablement – but also it is easier to switch technlogies when using webservices, especially in the SOA Suite. Oracle Forms is able to consume webservices. So if we have a way to record the business logic that is used much often in our Oracle Forms application, convert it to a webservice and deploy it on the Service Bus we would be able to consume this logic in other technologies. This is where PITSS.CON comes into play. With the use of a database repository, where it is possible to load the whole Forms Application into, analyze it and record certain processes into a backlog called user stories, PITSS.CON is able to transform logic from Forms into the database and make it accessible for the Oracle SOA Suite. So those two products harmonise very well together.orders

In this article I would like to show you, how to do so. As a example I took “orders.fmb” demo. You can see the runtime screen above. Basically this form displays orders and the corresponding customers when clicking on “customer information”. I would like to extract this logic from the fmb.

Recording of User Stories

As part of the solution PITSS.CON was used to identify the business logic by injecting an image1Oracle Forms application with a logging mechanism called “user stories”. But before that we did several steps within the tool to get rid of the unused & redundant code – because we don’t want to generate a webservice for code that is not in use anymore or redundant. While PITSS.CON is a repository based application, it is possible to easily identify redundant code through the comparison of program units. Dead code can be found when searching for program-units that are not called by any Trigger. After we have done that, it is much easier to concentrate on the “used code”. But how is it possible to identify code, that is used in applications and central to them? PLSQL-injection is the keyword here. With PITSS.CON we can easily inject all triggers and program-units of an application.image4 The injection is basically a logging mechanism which writes the callings in a application into a logging table. Afterwards this log table is evaluated by PITSS.CON. So we get a connection between the development tool PITSS.CONimage3 and the processes that the application users utilise the most in the application. We enable the users to record their daily work processes.

Business Logic to database

image5With these information we are able to manipulate the application. So we have the whole application loaded into the repository and we know exactly which objects are used – so we create this process as a subset of our application and move the logic to where we want – either another technology or the database. In this example
we moved the logic to the database. This can be done with the PITSS.CON module “Business Logic to DB”. Here it’s possible to select a program-unit or trigger and calculate the dependencies that occur, when moving an object to the database. Also a complete flow can be moved. PITSS.CON gives certain information on how easy it is to move the process to the database. If In our case we want to transfer a whole flow to the database – we check the metrics and click on “transfer objects to DB”. image6We will then be asked in which package we would like to add the procedures and PITSS.CON will automatically build a package with the given procedures – also it will insert the necessary parameters from form variables or objects so that the procedures will work correctly. After this step we will get the following source code, so that we can create the package on the application database.

Create SOA Application

Now we can build a webservice on top of this package. For that I used the ability of the Oracle SOA Suite and built a Webservice based on the newly created db-package with an adapter. An db-adapter in the SOA Suite is a basically a webservice, which is wizard based and gives us an easy access to the database package. On the picture below, you can see the outcome of the new created db-adapter on the right side: getCustomerID is a SOA Suite adapter, which is based on the database package that was created earlier with PITSS.CON.
image7

I just added a mediator component to create a value mapping and the SOA Suite created a webservice (SOAPService) which can be consumed by another technology. Here the Oracle Mobile Application Framework (MAF) was used to use the webservice from the SOA Suite. After that, the SOA application was deployed on a Oracle Weblogic Server.

Consume webservice in MAF

So basically the process of getting Customer information was recorded with PITSS.CON from the good old Forms module “Orders.fmb”, moved to the database and a webservice adapter was created via the SOA Suite. With the help of a Mediator component we achieved a value mapping and finally we’ve built a mobile application on top of the SOA application. So here is our simple mobile application, which gives us customer information on our mobile device:

image9image8So now we got the logic in the database. Whenever we want to change something on the logic we just have to change the db-package. We could also implement the webservice into our Forms application. But that is a topic for another blog article.

Posted in Forms & Reports, General, Oracle Forms2ADF Migration, Oracle Fusion Middleware, Pitss.Con | Tagged , , , , , , , , | Leave a comment

HOW TO AUTO-DOWNLOAD JRES FROM APPLICATION SERVER FOR FORMS 11G

Oracle Support document 367778.1 provides a great document explaining how auto-downloading a JRE can be done from Oracle Application Server 10g. The same procedure can also be performed for Oracle Forms 11g (and 11gR2) using Oracle WebLogic Server.

In our example, we are attempting to have the client auto-download the latest Java 8 update (1.8.0_45). The steps below were done using Oracle WebLogic Server 10.3.6 and Oracle Forms 11.1.2.2.0 (the only version of Oracle Forms currently supported with JRE 8):

1. Download a 32-bit JRE from Oracle (example for latest Java 8: jre-8u45-windows-i586.exe)

2. Create a folder in your application server and place the JRE in this location. In our example, we created a folder called C:\PITSS\Java8Download

image2

3. Navigate to %DOMAIN_HOME%\deploymentplans\formsapp\11.1.2 and make a backup of plan.xml

4. Open up plan.xml in a text editor.

5. Inside the file, create a new variable for the directory where the folder containing the JRE is located. You may use our example below as a guide:

<variable>
<name>vd-C:/PITSS</name>
<value>C:/PITSS</value>
</variable>

image_thumb3

6. Further down in the file, create a new variable assignment containing both the directory specified in the variable above and then the xpath or alias containing the name of the folder which has the JRE inside:

<variable-assignment>
<name>vd-C:/PITSS</name>
<xpath>/weblogic-web-app/virtual-directory-mapping/[url-pattern=”Java8Download/*”]/local-path</xpath>
</variable-assignment>

image_thumb4

7. Save and close the file.

8. Log into your WebLogic Administration Console and go to Deployments.

9. Click “Lock & Edit” in the top-left corner.

image_thumb5

10. In the Deployments page, place a check mark next to “formsapp (11.1.2)” and click “Update”.

image_thumb6

11. Click the radio button next to “Update this application in place…” and click “Finish”.

image_thumb7

12. In the top-left corner, click “Activate Changes” to publish the changes.

image_thumb8

13. After the changes are activated, open up your formsweb.cfg file (located in %DOMAIN_HOME%\config\fmwconfig\servers\WLS_FORMS\applications\formsapp_11.1.2\config)

14. Locate your jpi_codebase parameter. Replace the current value with the URL. If you need to, also update your other JPI parameters to use Java 8 (as indicated in the screenshot below) .Use the format below:

http://server.domain:8888/forms/AliasName/JRE_file.exe

Example: jpi_codebase=http://server.domain:8888/forms/Java8Download/jre-8u45-windows-i586.exe

image_thumb9

15. Save and close the file.

16. Restart WLS_FORMS.

After completing the steps above, the next time you run your Oracle Forms application (assuming that JRE 8 has not been installed in your machine), you will be prompted to auto-download Java 8.

Source: Oracle Support note 367778.1

Thanks to my colleague Scott for composing this information in our knowledge base:

http://pitss.com/us/2015/05/06/how-to-auto-download-jres-from-application-server-for-forms-11g/

Posted in General | Leave a comment

Minimizing Quality Risks

The Quality Analysis at a glance

QualityThe PITSS Quality Analysis builds upon the Status Quo Analysis. With the Quality Analysis you receive a detailed insight into the results of the Status Quo Analysis. You are given differentiated metrics based on recognized quality metrics such as Halstead and McCabe and the Maintainability Index. With this very informative analysis of your application’s quality, it is possible to determine all the weaknesses in the application software and documentation. The Quality Analysis will show you the areas in your system where action is needed, how the maintainability can be improved and the further development can be facilitated in order to reduce the operating costs of your application. Our recommendations following the Quality Analysis will show you the path to successfully achieve your goals and objectives.

Components in detail

Comment Ratio

Detailed evaluation of the comments in the program units. This can show you if you have a good inline documentation of your Application. Here you can see if a new developer can easily understands the functionality behind the procedure.

Object Distribution

The object distribution indicates the degree of referencing within the application. Referencing means the inheritance of objects, program units and their properties within a Form to an external PLL , OLB or FMB file. To increase the productivity and modularization of an application and minimize maintenance efforts simultaneously , it is recommended to achieve a high degree of referencing .

Quality Metrics

how to establish software quality

With Software metrics you can measure and compare various quality aspects of program units.They help in identifying vulnerability of applications and enable a continuous reporting of the development process.

The metrics used are clearly defined as Industry Standards and distributed in many languages.

The simplest metric is counting the statements of a program unit. This approach has been refined already in the 1970s by McCabe and Halstead.
McCabe calculates a complexity, in which the branching depth of a program unit is evaluated.
Halstead in contrast,  uses the shared vocabulary (operands and operators) and the lexical size of the program unit various key figures to calculate the complexity. In addition to the complexity, the time can be computed that would be necessary for the programming of the program units.
As newest a mixed metric of Maintainability Index has been established. The Maintainability Index from the 90s is based on the complexities of Halstead and McCabe and connects them with the lines of code and Lines of Documentation.

You can improve the software metrics by the separation of program units.

Naming Conventions

The purpose of naming conventions is to improve the readability and thus reducing maintenance costs. The advantage arises from the fact that all or different types of objects with different Prefixes or Suffixes can be distinguished from each other.

Maintainability

Maintainability describes the effort required to operate an application and further develop. Important criteria for the Maintainability,  is the clarity , documentation and modularization of the Application.

Summary

After a Quality Analysis you have a basis to:

  • setup a Strategy for the furture
  • reduce the Maintanability effort
  • reduce the error rate
  • increase the stability
  • take the right measures for facilitating the development
  • shorten the learning curve for new employees

The result of the Quality Analysis are Statistics of your Application and recommendations how to improve software quality in your Environment.

Please take a look at all of our Analysis we offer: Tool Supported Analyses

You can also take a look at previous Posts about our Analyses:

Posted in Forms & Reports, Oracle Forms Development, Pitss.Con | 1 Comment

PITSS-UK Oracle Forms Orientation Day

On May 6th Pitss hosted the Oracel Forms Orientation Day. It was a very successful Event with over 30 participants.

P1000958

The first topic we talked about Oracle Forms Soucecode Quality and how to Analyse, Measure and Monitor it.
P1000977
It is important to know where I am, to plan the next steps. With a good analysis you are able to estimate upcoming Projects very accurate and you know the most critical part of your Application. So you can also access the Risk that sleeps in your Application.
(http://pitss.com/us/wp-content/uploads/sites/4/2015/05//PITSS_Investment-protection-in-Oracle-Forms.pdf)

As a guest speaker we were able to win Graham Brown form Yorkshire Building Society. He presented their strategy with Oracle Forms to integrate it into a Service Oriented Architecture. He also showed how our Tool Pitss.Con helped them to understand the complexity of the application and the task.
P1000973
They also use the Pitss.Con Module Application Engineering to extract the Business Logic form Froms to the Database. With the assitent of Pitss.Con they where able to save 60% – 75% compared to a manual approach. (http://pitss.com/us/wp-content/uploads/sites/4/2015/05/YBS_PITSS-presentation.pdf)

To round up Grahams Presentation I was able to show the full potential of Pitss.Con to support the Process.
Forms2SOA
This Process shows how SOA can be a carrier for all Technologies and how I can enable my Forms to be integrated into a Service Oriented Architecture. (http://pitss.com/us/wp-content/uploads/sites/4/2015/05/PITSS_PITSS.CON-supported-SOA-implementation.pdf)

Also Dermot Murray had a presentation on how to extend Oracle Froms with APEX to get out the most of both technologies.

As a final Speaker we had on a Video Conference join Micheal Ferrante (Oracle Forms Product Manager). He was able to point out some hidden Features in Oracle Forms, that make your current Forms Application more attractive and as he stated wakes it up. He also gave a outlook for Oracle Forms 12c with its new Serverside and Development Features. (http://pitss.com/us/wp-content/uploads/sites/4/2015/05/Oracle_FormsFuture_webinar_pdf_v1.42.pdf).

In Summary it was a very successful Event and all participants went home with something new in the bag, that will help them for future decisions.

I’m looking forward to be at the next Pitss Event in fall and meet you there again.

We also have a summary of the event on our homepage, so please feel free to look at it and contact us if you have any questions. (http://pitss.com/us/orientation-day/)

Posted in General | Leave a comment