New Features in 8.2

New Features 8.2.01

1. Copy From the File/Folder Properties Panel –

You can now copy a property value from the File/Folder Properties panel. Right-click a property value and click Copy to copy it to the clipboard, as shown in the following image.

Show master files for “Show all Contents”

2. Execution of One Task From Another –

You can now run the contents of an existing task from another so that the actions of the selected task will be invoked. An Execute Task option has been added to the Requests selections drop-down menu in the Requests/Actions section of the Tasks & Animation panel, as shown in the following image.

3. Separate Tabs for JavaScript and Embedded CSS Options –

Previously, the App Studio HTML canvas had a combined Embedded JavaScript/CSS tab. Now, this tab has been divided in two: Embedded JavaScript and Embedded CSS tabs.

4. Directly create Procedure via Text Editor option included when you right click on any folder.

5. Multi Select List Control with Check box for selection –

A multi-select drop-down function has been added to App Studio. This multi-select control allows you to specify more than one value at a time. This functionality creates a drop-down list and uses a check box adjacent to each value for selection, as shown in the following image.

6. Multi-Select Folders to Publish, Hide, and Show –

App Studio has added the ability to duplicate, copy, and delete multiple folders at the same time. This functionality uses the standard methodology of pressing the Ctrl key while selecting the desired folders in the Environments Tree panel.

7. Sharing Multiple Folders At Once –

App Studio has added the ability to publish, unpublish, hide, or show multiple folders at the same time. This functionality uses the standard methodology of pressing the Ctrl key while selecting the desired folders in the Environments Tree.

8. Enhanced PDF Support for JPG Compression –

The compression algorithm used for JPG images embedded in PDF documents has been enhanced to generate considerably smaller PDF files, and to allow users to control elements of the JPEG compression method. The following new SET commands allow users to select the compression methodology (SET JPEGENCODE) and the image quality (SET JPEGQUALITY).

SET JPEGENCODE = [FLATE|DCT] SET JPEGQUALITY = n

9. Defining Hyperlink Colors –

You can use the HYPERLINK-COLOR attribute to designate a color for a hyperlink within a report. This applies to all hyperlinks generated in the report. You can define a single color for the entire report or different colors for each individual element. TYPE = type, HYPERLINK-COLOR = color

10. Currency display options –

fld/fmt:C(CURRENCY_DISPLAY=’pos’,CURRENCY_ISO_CODE=’iso’,CURRENCY_PRINT_ISO=’prt’)= expression;

11. New Date and Time Locale Parameters –

SET DATE_ORDER = {DEFAULT|DMY|MDY|YMD} SET DATE_SEPARATOR = separator SET TIME_SEPARATOR = {DOT|COLON}

SET DATE_SEPARATOR = DASH SET DATE_ORDER = DMY -TYPE NON-LOCALIZED: &DATE -TYPE LOCALIZED: &DATE.DATE_LOCALE The output is: NON-LOCALIZED: 04/07/17 LOCALIZED: 07-04-17

12. Applying Selection Criteria to the Internal Matrix Prior to COMPUTE Processing – WHERE_GROUPED expression

WHERE_GROUPED can be optimized for SQL data sources by creating a GROUP BY fieldname HAVING expression clause, where the expression is the WHERE_GROUPED selection criteria.

13. PARTITION_AGGR: Creating Rolling Calculations – Using the PARTITION_AGGR function, you can generate rolling calculations based on a block of rows from the internal matrix of a TABLE request.

PARTITION_AGGR([prefix.]measure,{sortfield|TABLE},from,to,operation)

14. PARTITION_REF: Using Prior Field Values in Calculations – Use of LAST in a calculation retrieves the LAST value of the specified field the last time this calculation was performed. The PARTITION_REF function enables you to specify both how many rows back to go in order to retrieve a prior value, and a sort break within which the prior value calculation will be contained.

PARTITION_REF([prefix.]field, {sortfield|TABLE}, -offset)

15. Limiting the Number of Stacked Commands and Loop Iterations – DMH_STACKLIM and DMH_LOOPLIM should be set high enough to run your existing reports and procedures without error for your entire session. It is recommended that if you set these parameters, you should set them in a profile.

16. New Report-Level Prefix Operators – Prefix operators have been added for headings, footings, subheadings, subfootings, verb objects, and calculated values (COMPUTEs) that calculate the average, maximum, minimum, and count for the entire report.

TOTAVE., TOTMAX., TOTMIN., TOTCNT.

17. Format Display Option for Percentage Calculation –

The lowercase p display option converts a number to a percent by multiplying it by 100. It then displays the number followed by a percent symbol (%). This is different from the % format option, which does not calculate a percent, it just displays a percent symbol after the number. Note: This option is not supported for output formats XLSX and EXL2K.

18. LAST_NONBLANK: Retrieving the Last Field Value That is Neither Blank nor Missing

19. REGEX: Matching a String to a Regular Expression

20. REPLACE: Replacing a String

21. Collaborative Portal

22. Report Caster Ability to Distribute Reports to the File System – You can send scheduled reports directly to a folder in the File System of your computer.

23. Report Caster – Packet Email override per Schedule

24. Report caster – Clone Tasks

25. Report Caster – Advanced Options per Schedule – FOC to warning

26. Report Caster – The global configuration option for No Report to Distribute can be set within individual schedules to convert the No Report to Distribute error message to a warning.

27. Report Caster – Enabling Global Updates for Schedule Notification Settings The schedule notification settings that can now be globally updated are Notification Type, Notification Reply Address, Notification Subject, Notification Brief Message To, and Notification Full Message To, as shown in the following image.

28. CM – Change Management Package Zip File Downloads

29. Adapter – The relational adapters now optimize reports that contain a BY field more efficiently, by no longer passing MAX(field) in the SELECT list to the RDBMS.

30. Adapter – Optimization of the PARTITION_REF Function Calls to the PARTITION_REF function in an aggregation request with a WHERE TOTAL phrase can be passed to SQL engines that have a LAG function, such as Db2, Oracle, Teradata, and Microsoft SQL Server.

New Features 8.2.02

1. App Studio – Save All and Close All

2. Using the WebFOCUS Schedule Task Type to Schedule Other Schedules –

The WebFOCUS Schedule task feature allows you to use a single schedule to initiate one or more schedules. You can set WebFOCUS Schedule tasks to run immediately before other schedules in the Distribution Server queue, or run independent of other schedules in the Distribution Server queue.

3. Email Distribution Using the Cc and Bcc Email Options –

4. Enabling and Disabling Schedules Using the Shortcut Menu Option –

5. Cloning Tasks in the Advanced Scheduling Tool –

You can now clone an existing task in the Advanced Scheduling tool. This feature allows you to make a copy of any task. When you clone a task, every option and setting from the existing task is present in the cloned task.

6. Applying Global Updates for Pre and Post-Processing Procedures

7. Restricting User Input of Email Addresses and Domains

New Features 8.2.03

1. EDAPRINT: Inserting a Custom Message in the EDAPRINT Log File

2. Displaying a Caret Symbol (<) in Heading Objects

In order to display the caret symbol in a heading object, use two consecutive caret symbols (<<).

3. STRING Data Type –

Certain relational data sources support a data type called STRING to store alphanumeric data that has an unlimited length. This type of data can be mapped to the TX data type. However, text fields have limitations on their use in WebFOCUS sort and selection phrases. The format specification for a STRING field has no length specification. The length is determined on retrieval. The STRING data type has all of the functionality of alphanumeric data types in WebFOCUS. The limit to a STRING field value length is 2 GB.

Working With Global Variables

You might have heard about variables. Some refer it as amper variables, parameter variables. These are local variables declared and defined with single amper (&). The reason to say it as Local Variable is they are visible only for the session and within the fex code. Can be extended to other fex files which are part of the execution called using -INCLUDE command.

There is one more type of variable called GLOBAL variable. These variables are declared/defined with double amper (&&). There usage is similar to local variables but they are visible much beyond fex files. These variables have visibility even in files called with EX command, MASTER files and ACX files. You can create a DEFINE in master file by taking global variable as input to the define statement. Also can use these dynamic global variables to establish dynamic adapter connection at run time.

Remember both local and global variables have visibility within the session. They are void outside a session.

Working with JOIN Command

JOIN command in WebFOCUS is used to merge multiple data source. It supports 2 types of joins – INNER and LEFT OUTER.

Apart from these to make it work as expected, you need to mention few more properties like – SET ALL and JOIN UNIQUE/MULTIPLE.

SET ALL=ON acts as a LEFT OUTER join.

JOIN UNIQUE/MULTIPLE – use multiple when you join 1:N join. Otherwise use UNIQUE for 1:1 join. In case if you forget to use MULTIPLE in place of 1:N, then JOIN will merge only first record and rest of the occurrence will be ignored.

Know before using IBIAPP_app variable

In the below URL, when we pass abcd as folder name for IBIAPP_app variable. But when there is no such folder in the server. Still WF continue to search the carinst.fex file based on APP PATH configuration and returns output without any error.

http://localhost:port/ibi_apps/WFServlet?&IBIF_ex=carinst.fex&IBIAPP_app=abcd&

Same is the functionality when a file specified in IBIF_ex does not exist in the folder mentioned in IBIAPP_app, WF will further search this file from APP PATH directories and returns the output.

Functionality of IBIAPP_app is same as APP PREPENDPATH with single folder assignment.

When IBIAPP_app is set to a folder that does not exist, we expect WF to display error instead of fetching the file from a folder listed in APP PATH. Instead it search for the file in other folders as configured in APP PATH setting.

So its always better to use folder name in the IBIF_ex variable itself as shown below to avoid execution of files from a folder other than IBIAPP_app.
http://localhost:port/ibi_apps/WFServlet?&IBIF_ex=abcd/carinst.fex&

Hope this helps.

Using empty DEFINE column against DB table

Recently I used a empty define column with zero characters against a RDBMS table.

To my surprise when I check the log(view-> source), it was AGGREGATION NOT DONE error.

Below is the code snippet.

DEFINE FILE <DB_TABLE>

DUMMY_COLUMN/A1=”; -*–Note empty column of length zero

END

TABLE FILE <DB_TABLE>

SUM

METRIC

BY DUMMY_COLUMN

END

Reason:

WebFOCUS was not able to convert this DEFINE column to corresponding SQL statement.

Tables with millions of records data, will be brought to WebFOCUS and results in performance issue(server crash).

Solution:

You can still use a dummy column, but make sure its length is not zero. Use space or some character. If you need to use NULL then add MISSING attribute to Define column.

By this WebFOCUS adapter will be able to convert this define to equivalent SQL statement with AGGREGATION DONE message in the log.

 

New Features in 8.1.03 Release

New Features in W8.1.03 Release

1. Creating Grouping Set
2. Date time values on Y-Axis
3. Calender filter for dates in InfoAssist
4. Support images in Excel(xlsx) output
5. Dynamic width of html report based on frame width
6. Support for pptx format
7. Support multiple prefix on same measure in subtotal
8. support Multiple Distribution Methods in a Schedule
9. Separate Job Queues(RC) for Each Data Server
10. Disable task within schedule
11. Synonym for oracle Materialized view
12. Support for oracle 12c clound

More details at
http://infocenter.ibi.com/wf81rel/topic/pubdocs/nf_rn/NewFeatures_WF8/launch_pdf.htm

WHEN to enable condition based drill and drill menus

Using WHEN to enable condition based drill and drill menus:

We know that WHEN keyword can be used in WebFOCUS style sheet to enable conditional formatting.

1. To highlight all rows of data use below in style sheet.

TYPE=DATA, BACKCOLOR=RED,
$

2. To highlight all rows of data based on condition check(COUNRY=’ENGLAND’),
TYPE=DATA, BACKCOLOR=RED,
WHEN = COUNTRY EQ ‘ENGLAND’,
$

Note: “=” sign immediately after the WHEN keyword and “EQ” used to evaluate a condition.
Here you can recall what we learnt in C/JavaScript.
= – assignment operator
== – evaluation operator(in WebFOCUS it is EQ).

3. Next to highlight one specific column(CAR) based on conditional check(COUNTRY=’ENGLAND’),
TYPE=DATA, COLUMN=CAR, BACKCOLOR=RED,
WHEN = COUNTRY EQ ‘ENGLAND’,
$

Note: there are multiple ways to reference a column, either use COLUMN_NAME or follow N/P/B notation. Will be covered in next post.

4. And to highlight on specific column(CAR) based on 2 conditions(COUNTRY=’ENGLAND’ AND MODEL=’ABC’),

Note: WHEN will not support more than 1 conditional check. So how to do this. You need to create a new virtual field and based on evaluation mark the column value as ‘Y’/’N’ and use this virtual field in WHEN.

COMPUTE VIRTUAL_FIELD/A1=IF COUNTRY EQ ‘ENGLAND’ AND MODEL=’ABC’ THE ‘Y’ ELSE ‘N’; NOPRINT;
$
TYPE=DATA, COLUMN=CAR, BACKCOLOR=RED,
WHEN = VIRTUAL_FIELD EQ ‘Y’,
$

In similar lines, same WHEN can be used for conditionally enabling Drills.

Drills can be either direct one click drills(URL, FOCEXEC, JAVASCRIPT) or using DRILLMENUITEM(in which again each menu can make a call to either URL, FOCEXEC, JAVASCRIPT).

TYPE=DATA, COLUMN=CAR, FOCEXEC=target_fex,
$

To make above drill condition based,

TYPE=DATA, COLUMN=CAR, FOCEXEC=target_fex,
WHEN=COUNTRY EQ ‘ENGLAND’,
$

For drill menu item,

TYPE=DATA, COLUMN=CAR,
DRILLMENUITEM=’Item-1′, FOCEXEC=target_fex1,
DRILLMENUITEM=’ITEM-2′, FOCEXEC=target_fex2,
$

To make above drill menu condition based,

TYPE=DATA, COLUMN=CAR,
DRILLMENUITEM=’Item-1′, FOCEXEC=target_fex1,
DRILLMENUITEM=’ITEM-2′, FOCEXEC=target_fex2,
WHEN= COUNTRY EQ’ ENGLAND’,
$

Above code will throw error saying WHEN keyword not recognized.

Remember to use WHEN before first DRILLMENUITEM as shown below.
TYPE=DATA, COLUMN=CAR,
WHEN= COUNTRY EQ’ ENGLAND’,
DRILLMENUITEM=’Item-1′, FOCEXEC=target_fex1,
DRILLMENUITEM=’ITEM-2′, FOCEXEC=target_fex2,
$