Tuesday, November 29, 2011

WebFOCUS Drops Legacy End-User Assist Tools

Information Builders, the software vendor of enterprise BI WebFOCUS, announced today they will drop support for some legacy end-user report builders as of WebFOCUS 8.0.0, expected to be released sometime yet this year.

No longer supported will be the Report Assist and Graph Assist tools. Both will be replaced with the newer web-based RIA InfoAssist end-user reporting feature. 

Few people should be concerned about these tools going away. Both user interfaces were old Java applets, which meant that software needed to be installed on end-user desktops. Replacing these legacy technologies with a better web-based product is the appropriate thing to do. 

Any reporting applications that your end users generated using the Report Assist and Graph Assist should still be fine. When you get to WebFOCUS 8, however, the legacy code will be opened with the InfoAssist product. 

I suspect there could be issues where the new parsers cannot understand the legacy code, but we will have to wait and see.

In addition to Report Assist and Graph Assist, WebFOCUS 8 will also sunset these features:
  • Managed Reporting (MR) Applet User Interface
  • Reporting Object Applet Tool
  • Alert Wizard Applet Tool
  • Publish Utility Applet Tool
  • Applet-based Graphs, Graph Editor (accessible from Applet-based graphs), and Old Graph Engine (GRAPH32)
  • ReportCaster Applet Interface and Scheduling Wizard
  • Power Painter
  • Advanced Graph Assistant
  • Developer Studio Graph Assistant
  • Developer Studio Managed Reporting Publish Utility

For more information on this announcement, see IBI's WebFOCUS Release 8 Tools Consolidation statement. For more information on when you can expect WebFOCUS 8, see IBI's release schedule.

If you discover you need to convert legacy code based on any WebFOCUS 8 changes, let me know. For example, IBI is also dropping CGI support for HTML launch pages calling WebFOCUS; this is something that Partner Intelligence can assist you with an automated conversion

Wednesday, November 16, 2011

WebFOCUS Testing

Somewhere in India, people appear to be taking a Business Intelligence test that involves questions about Information Builders and WebFOCUS.

Over a period of eight hours, I saw a bunch of blog hits from people in Pune, Hyderabad, and Mumbai who were all searching for the name of the vendor who owned WebFOCUS.

One person even cut and pasted into their Google query what looks like a test question (or some type of online exercise):
1. Identify the software vendor for the Business Intelligence tool "WebFocus"

If you are taking a BI test, you must have gotten that question right (and, hopefully, using Google to find answers is not frowned upon). If you come across other tough ones, I am here to help.

Bonus Points: If you want to impress your testers, be sure to point out that the actual mixed-case spelling of the product is officially "WebFOCUS."

Monday, November 14, 2011

PSA for Zombie Preparedness

If you're ready for a zombie apocalypse, then you're ready for any emergency. emergency.cdc.gov
You can never be too prepared.

See what the Center for Disease Control says about the possibility of a zombie apocalypse.

I think the CDC is on to something, using humor and pop culture to pull unsuspecting people into a conversation about a serious topic, such as preparing your family for an emergency.

There may be more people out there searching for information on zombies than on a family emergency plan.

I will let you know if my blog search hits for Business Intelligence software go way up just by mentioning zombies. 

Sunday, November 13, 2011

New WebFOCUS Feature to Ignore Your BI Users

Information Builders introduces so many new WebFOCUS features with such little fanfare that it is difficult to keep up.

That being the case, I suspect that few people are aware of a new feature in the WebFOCUS HTML Composer for ignoring parameter values. It is an enhancement to a nifty feature that came out many releases back called "FOC_NONE."

This takes some historical explanations. Consider as an example building a graphical user interface for a report with an option to select data for a particular geographic region. Of course, that selection is optional, so you give your users the ability to identify "ALL" regions as well.  

In the early web application development days, WebFOCUS developers would dynamically build a WHERE condition with the user-selected values and, for the "ALL" option, either skip around that with a GOTO or build a symbolic WHERE line that would be blank. However, that type of coding often meant that the WebFOCUS GUI tool was immediately confused and would no longer paint the report. 

To help overcome this challenge, Information Builders added logic to WebFOCUS to ignore any lines which contained a keyword of "FOC_NONE." By setting your selection criteria to "WHERE REGION IS FOC_NONE," you could guarantee the line would just be ignored resulting in the "ALL" condition you wanted.

Again, some background information is useful. There are two types of WebFOCUS language: one procedural and the other non-procedural. The processor for reading the languages is called Dialogue Manager. As it reads the code, the procedural statements are executed immediately while the non-procedural statements are placed into a stack of memory for later execution.

So the FOC_NONE processing takes place within Dialogue Manager and the core WebFOCUS non-procedural language is totally unaware. The Dialogue Manager line containing FOC_NONE is processed (the special keyword does not cause the line to be ignored); only the non-procedural lines get ignored. 

Now, fast forward to the latest WebFOCUS 7.7 release.

The new WebFOCUS HTML Composer now has an option to specify the "ALL" ignore option as either FOC_NONE or a new keyword: _FOC_NULL. These two words are deceptively similar but very different.

For one, the FOC_NONE keyword is processed by Dialogue Manager by throwing away the entire line being parsed and not putting it into the WebFOCUS stack for processing.

_FOC_NULL, on the other, is a new part of the core language syntax. Instead of ignoring lines with that keyword, Dialogue Manager will put the line into the stack and let WebFOCUS figure out what to do with it.

So what will WebFOCUS do with _FOC_NULL? If inside a WHERE statement, WebFOCUS will ignore it much like it would with the legacy FOC_NONE option.

Everywhere else, however, WebFOCUS will see the _FOC_NULL. When embedded inside headings and footings, that new keyword will just show up as a blank. Typically, this is where you want FOC_NONE and ignore the entire line.

Perhaps a more useful place for _FOC_NULL is with DEFINE calculations. Let's say that you create a temporary column with a symbolic variable. Later, you use that column in another calculation.

If the parameter value is provided, all works well.

However, if you get a FOC_NONE value in the first calculation, the entire calculation is ignored. When WebFOCUS comes to the second statement that references the first, it fails (since the first calculation was never really processed). You end up with a syntax error because WebFOCUS ignored the line with FOC_NONE (just like it is supposed to do).

If you were to pass in the _FOC_NULL keyword instead, then the first calculation would be processed but with a null value. The second calculation would then work, albeit with no real data.

Still, I have problems with this new feature. In real-life, sometimes you need FOC_NONE and sometimes _FOC_NULL behavior in the exact same program. That means coding to switch values back and back between the two keywords. Perhaps it would have been better to create an environmental setting to change the FOC_NONE behavior instead of having two different keywords.

My other concern is that the HTML Composer's default behavior is to generate the new _FOC_NULL keyword instead of the legacy FOC_NONE. I would prefer that enhancements follow a more "backward-compatible" philosophy. 

Unfortunately, the HTML Composer has in the past changed behavior so that previously-built WebFOCUS applications stopped working. I have some inside scoop on how Information Builders plans to avoid this in the future and I will blog about it shortly.   

Thursday, November 10, 2011

Hiding Symbolic Variables from WebFOCUS HTML Composer

One of the powerful features of WebFOCUS is the ability to symbolically represent data, content, and instructions--basically anything in a program--and process these variables with a procedural scripting language, known as Dialogue Manager.

Sometimes, symbolic variables are created and used only within a single program. In this case, WebFOCUS developers use the -SET command to dynamically specify a variable's value. The syntax of the -SET command is varied; statements can be a simple assignment, logical with an IF-THEN-ELSE statement, mathematical, process strings, call subroutines, or a combination of these. 

At other times, values for symbolic variables are just passed into the program after having been set elsewhere. For example, your WebFOCUS program may get parameter values from an HTML launch page, another WebFOCUS program, or some other technology. Either a human user or an application could be passing in the desired values. 

Best Practices

For these types of symbolic variables coming from an external source, it is a best practice to always provide a default value. If WebFOCUS runs a program where no value has been assigned to a symbolic variable, it will automatically prompt you for the value (assuming this feature is turned on, otherwise it will just fail).

For a software developer creating WebFOCUS programs, it is also nice to have default values inside the code instead of having to retype them each time you run a specific module.

Within the program, always explicitly identify the variables that will be passed in from the outside. There also seems to be a common practice (I'm not sure who started this, but I see it at many WebFOCUS accounts) of naming these variables with &XP_. Other developers will tell you to use names as short as possible to avoid hitting a URL string-size limitation in the IE browser. 

Default Values

You provide default values for these external variables using the -DEFAULT command.

Unlike the -SET command, -DEFAULT only allows simple assignments. It is also different from all other  non-procedural WebFOCUS commands, in that it is executed when (and other if) needed at the beginning of the process regardless of its location in the code sequence. Because of this, most WebFOCUS developers avoid confusion by grouping their -DEFAULT commands at the top of their modules.

HTML Composer

With all that said, it is important to understand that the Developer Studio's HTML Composer evaluates the WebFOCUS programs for these symbolic variables. When it sees the -DEFAULT commands, it assumes that you will want to create HTML controls for these symbolic variables.

If these parameters need to be passed from the HTML launch page to the WebFOCUS program, the HTML Composer is making a very good choice. The launch page needs corresponding controls and logic to pass parameter values to WebFOCUS properly.

However, your WebFOCUS programs may be passing parameters to each other (e.g., in report or graph drill-downs) and the HTML launch page does not need to know anything about it.

In a situation where you have symbolic variables being passed into WebFOCUS programs from a source other than the HTML launch page, you can instruct the HTML Composer to ignore these using an alternative form of the default command, which is -DEFAULTH.

The H in -DEFAULTH stands for "hidden." Do not confuse this with a hidden input control in the HTML sense of the word (since those often still need to be passed from HTML to WebFOCUS). Instead, you are marking it to be hidden from the HTML Composer.

When you link a WebFOCUS program to an HTML inline frame, the HTML Composer will parse your program and offer to build controls for any of the -DEFAULT variables and ignore those with -DEFAULTH.

This is a very nice feature added to the core WebFOCUS language to help you build HTML launch pages. 

Thursday, November 3, 2011

WebFOCUS Predictive Analytics with no Add-Ons

The underlying WebFOCUS language has a built-in statistical function that can perform some basic predictive analytics. If you only need basic data forecasting, there may be no need to purchase a third-party statistical product. 

Out of the box, WebFOCUS supports the following forecasting functions:

  • Linear Regressions
  • Simple Moving Averages
  • Exponential Moving Averages (single, double, and triple)

Using linear regression, a WebFOCUS application can calculate a straight line that best fits a time-series of actual data points. The predictions are then future points along this straight line past the available actual data values.

A moving average is commonly used with a series of data spread over a time period to identify long-term trends or to smooth out short-term fluctuations. You might also know this as a rolling average, rolling mean, or running average. The WebFOCUS application tells the forecasting function how many data values to use when calculating the averages.

A simple moving average calculates averages using the actual data values. For an exponential moving average, the function calculates a weighted moving average using an actual data value and its previously calculated average. The weighting factors decrease exponentially over time, never reaching zero. 

In a single exponential moving average (also known as smoothing), the WebFOCUS application applies multipliers (weights) to the newer and older values. However, this technique may not accurately identify real trends in the data series.  To better handle true data trending, the WebFOCUS function provides for both double and triple exponential moving averages.

In a double exponential moving average, weighting accounts for the tendency of data to either increase or decrease over time without repeating. In a triple exponential moving average, weighting accounts for repeated seasonal fluctuations in the data in addition to the trend.

You can read more about this on Information Builders' documentation site.  

It your BI application needs only the basic forecasting methods using linear regression, simple moving averages, or exponential moving averages, WebFOCUS may already have the features you need. If however you need more robust analytics, then implementing industry-strength statistical products such as the open source R language, IBM's SPSS, SAS, or KXEN may be more appropriate than using the standard WebFOCUS forecasting function. 

About Me

My photo

I am a project-based software consultant, specializing in automating transitions from legacy reporting applications into modern BI/Analytics to leverage Social, Cloud, Mobile, Big Data, Visualizations, and Predictive Analytics using Information Builders' WebFOCUS. Based on scores of successful engagements, I have assembled proven Best Practice methodologies, software tools, and templates.

I have been blessed to work with innovators from firms such as: Ford, FedEx, Procter & Gamble, Nationwide, The Wendy's Company, The Kroger Co., JPMorgan Chase, MasterCard, Bank of America Merrill Lynch, Siemens, American Express, and others.

I was educated at Valparaiso University and the University of Cincinnati, where I graduated summa cum laude. In 1990, I joined Information Builders and for over a dozen years served in regional pre- and post-sales technical leadership roles. Also, for several years I led the US technical services teams within Cincom Systems' ERP software product group and the Midwest custom software services arm of Xerox.

Since 2007, I have provided enterprise BI services such as: strategic advice; architecture, design, and software application development of intelligence systems (interactive dashboards and mobile); data warehousing; and automated modernization of legacy reporting. My experience with BI products include WebFOCUS (vendor certified expert), R, SAP Business Objects (WebI, Crystal Reports), Tableau, and others.