Wednesday Feb 01, 2012

Get thee to University!

Friends of BIP, STR Software have put together a great web based resource 'BIP University'

Focused on  the E Business Suite flavor and their own integrations with BIP under EBS R12; its a great resource and well worth a few clicks and a read. Check it out here - http://www.bipuniversity.com/

Saturday Jan 28, 2012

Oracle Policy Automation and BI Publisher

Yep, found another integration with BIP. I get asked about Oracle Policy Automation quite a lot; I do not profess to know much; enough to be dangerous I guess. However, I was not aware that they had been working with BIP to help automate the generation of documents from the system.

For the uninitiated, here's the blurb care of :

Oracle Policy Modeling is a Windows desktop application for transforming legislation and policy documents into executable business rules. Rules are written in Word and Excel documents using phrases in languages such as English, Chinese and French. These rule documents can be shared amongst business and information technology stakeholders, and commentary can be added into the documents without affecting the structure of the rules themselves. Other features of Oracle Policy Modeling include integrated test case execution and debugging capabilities, and the definition of interviews for interactive rule-based assessments. Interview screen order and branching logic can be defined using visual flow diagrams.

In other words, a cool piece of technology, but tell us Tim how is it used? Well, it has been publicly deployed within several government web-sites. Australia's Department of Immigration uses it for visitors to check their eligibility for visas. The UK uses it for their Employment Status Indicator assessment tool, the UK governments online portal for businesses also uses OPA for over 60 interactive tools while the United States uses the software for guidance on tax law. The last one might be pertinent for me this weekend as W-2s have arrived and I have a night of misery trying to get a refund.

How does BIP fit in? Pictures are worth a thousands words and Fiona from the development team down under has recorded a great YouTube session explaining the integration and how to take advantage of it. I know I'm becoming more American cos I found it a little hard to place her accent at first, not to be rude Fiona but was it Brit, Aussie or maybe New Zealand? I plumped for Aussie, 10 points to me ... phew!

Direct link to the OPA YouTube channel - some other great vids on use cases and features.

You can find the OPA Homepage here lots of info on the tool and its possible applications.

Monday Jan 09, 2012

BI Publisher January patch for 11.1.1.5.0

The BI Publisher January patch for 11.1.1.5.0 is now available on Metalink; look for patch 13554951. Thanks to Shinji and team, this is one of the easiest posts of the year so far :0) Contents of the readme below, enjoy!


One-off patch for Oracle Business Intelligence Publisher 11.1.1.5.0 READ ME File ==================================================
This patch contains fixes of following bugs for Oracle Business Intelligence Publisher 11.1.1.5.0.

 9102877 - QA: QUERY BUILDER GENERATES INCORRECT SQL FOR MANY DBS
 10071370 - IF 'USE SECURE FTP' IS CHECKD ON ADMIN PAGE, ITS SERVER IS NOT LISTD WHEN SCHED
 10402890 - SETTINGS FROM "DELIVERY CONFIGURATION" PAGE NOT BEING HONORED WHEN REPORTS RUN
 11725468 - ER: RTE HTML SUPPORT IN DATA XML
 11828672 - QA: INCORRECT INACTIVE WARNING MESSAGE
 11835845 - 11G SQL DATA SET CREATION ORA-01756 ERROR BECAUSE COLON IS READ AS BIND VARIABLE
 11850902 - SHARE REPORT LINK "NO PARAMETERS" AND "DOCUMENT ONLY" RENDER INCORRECTLY
 11870449 - BI PUBLISHER XDOXSLT:SDIV() FUNCTION RESULTS NOT CORRECT
 12312539 - QA: REPORT VIEWER SCREEN FREEZES FOR A FLEX REPORT WHEN SESSION EXPIRES
 12376386 - REMOVETEMPLATEFORREPORT API DOESN'T REMOVE TEMPLATE
 12405904 - CANNOT DEPLOY BIP WHEN DEPLOYMENT PATH INCLUDES SPACE CHARACTERS
 12406034 - CANNOT USE JAVA DB - DERBY - FOR SCHEDULER DATABASE
 12570248 - PROJECTS : -GENERATE REV/INV PROCESS ERRORING OUT
 12588342 - DELETEOBJECT RANDOM FAILURE
 12595931 - WHEN PRINTING CHARTS TO PDF, NUMBERS BECOME ARABIC NUMBERS
 12615821 - MISSING MEMBERS ON THE XML GENERATED BY BIP
 12634030 - RE-PACKAGING MLR#11893189 TO XDOPARSER11G.JAR
 12646493 - ORA-22902 CURSOR EXPRESSION NOT ALLOWED
 12666066 - ER: EXCEL 2007 SUPPORT IN REST API
 12705244 - JOINED MDX DATA SETS DO NOT PRODUCE CORRECT DATA - DATA MISSING
 12726163 - NUMBER OF SESSIONS INCREASES AFTER RUNNING SCHEDULED JOBS
 12737670 - GROUP BY FOR MDX DATA SET MISSING IN 11.1.1.5 - WAS PRESENT IN 11.1.1.3
 12741858 - BI ASNWERS ANALYSIS IMPLEMENTING CASE WHEN STATEMENTS CAN NOT BE CONSUMED IN BIP
 12750192 - ER: GENERATE NATIVE COMBINATION DUAL Y GRAPH IN PPTX OUTPUT FROM RTF AND XPT
 12766932 - VERTICAL DUAL Y COMBO CHART MISSING SETTINGS TO ASSIGN VALUES TO AXIS
 12775400 - DBFW:GENERATING IN XLXS OUTPUT IS THROWING AN ERROR
 12822514 - SQL WITH CLAUSE - DATASET DOESN'T WORK (AND DIAGNOSTIC ISN'T HELPFUL)
 12828845 - ISSUE WITH XDO_USER_NAME PARAMETER ON BIP 11.1.1.5.0
 12835431 - INTRANSIT VALUATION REPORT QUERY GIVING ERROR IN EDITOR
 12847306 - BI PUBLISHER DATA SET - WON'T SAVE
 12872831 - EXCEL TEMPLATES GENERATING INCORRECT RESULTS FROM NESTED GROUPS
 12879801 - ALLOW SAVING DATA MODEL WITH SPECIAL CHARACTER
 12945367 - NOT ABLE TO EDIT DATA MODEL WHEN LINKS EXIT AMONG DATA SETS
 12945475 - IE: NOT ABLE TO EDIT DATA MODEL WITH MANY DATA SET AND LINKS
 12956901 - IN SQL SERVER CLOB IN DATA MODEL UI MARKED AS STRING DATA TYPE
 12956915 - INCORRECT DATA WHEN PROCESSING OF CLOB COLUMNS FOR SQLSERVER
 12956934 - DATA MODEL SHOULD RESPECT CASE SENSITIVITY FOR COLUMN AND TABLE NAMES
 12972559 - XML DATA FILE TRUNCATED
 12972852 - DYNAMIC IMAGES BROKEN FOR FO/PDF
 12989467 - NEED TO CONVERT DOCUMENT FORMAT "EXCEL" TO "EXCEL2000"
 13005659 - PSR:PERF:BIP:POOR PERF ACCESSING CATALOG FOLDER IN BIP 11G WITH SECURITY ENABLED 
 13007341 - DISPLAY ISSUES IN PARAMETER TAB OF OBI PUBLISHER 11G
 13095050 - STRESS: OUTOFMEMORY ERRORS WITH VIEW REPORT STRESS
 13100021 - BI PUBLISHER: QUERY BUILDER RESULTS RETURN COLUMN TYPE (APPEARS) INSTEAD VALUE
 13100220 - HOW TO USE 11.1.1.5 WITH THE IDENTITY ASSERTER
 13250009 - FOR METADATA LOGICAL SQL BIND WITH DUMMY VALUES INSTEAD OF NULL
 13321449 - RESOURCELIMITEXCEPTION DURING ANY OPS THAT USE JNDI DATA SOURCE
 13346737 - MULTIPLE VALUES IN A DASHBOARD PROMPT DOESN'T WORK WITH BI PUBLISHER INTEGRATED
 13351305 - QUERY BUILDER DOES NOT BUILD CORRECT SYNTAX FOR SQL SERVER
 13393658 - PRINTER DELIVERY [0] STATUS: FAILED PRINTING FROM WEB SERVICE CALL FROM EXTERNAL
 13421264 - ADDING PARAMETER TO SQL BI SERVER DATA SET CORRUPTS DATA MODEL
 13481659 - CAN'T SAVE ON BI DEV ENV RC2
 13501838 - ORA-00923 ISSUE WHEN CREATING A BI PUBLISHER DATASET 
 13521951 - BIP UPGRADE FROM 10G TO 11.1.1.5.0 IS NOT SUCCESSFULL FOR TIAA-CREF
 13529494 - BI REPORT NOT GENERATED WHEN HTML CONTAINS INVALID ATTRIBUTES
----------------------------- INSTALLATION FOR ENTERPRISE -----------------------------
1. Login to BI Domain Weblogic Administration Console.
2. Find the location of the "bipublisher" application.
3. Stop the bipublisher application.
4. Open a terminal and go to the directory.
5. Back up the existing xmlpserver.ear to xmlpserver.ear.org.
6. Copy new xmlpserver.ear from this patch.
7. In Admin Console, select "Lock & Edit".
8. Select the application "bipublisher" and "Update".
9. Leave all options same and proceed to Finish.
10. Select "Activate Changes".
11. Start the bipublisher application.

------------------------- MDX Query Limitation -------------------------
Joins of two MDX queries on a dimension that uses a MDX function in the Select Clause that requires the stipulation of the same dimension, such as Intersect, MemberRange, Union are not supported. Example)
SELECT
  NON EMPTY Hierarchize([Product].Generations(3).Members) ON Axis(0),
  Hierarchize(Union([Market].Generations(3).Members, [Market].Generations(4).Members, ALL)) ON Axis(1)
FROM Demo.Basic
It should be written using a With Set member:
with set [UnionMarket] as '{Union([Market].Generations(3).Members, [Market].Generations(4).Members, ALL)}'
SELECT
  NON EMPTY Hierarchize([Product].Generations(3).Members) ON Axis(0),
  Hierarchize(([UnionMarket]) ON Axis(1)
FROM Demo.Basic 
This MDX set is recreated for the Join clause to:
with set [UnionMarket] as '{Union([Market].Generations(3).Members, [Market].Generations(4).Members, ALL)}'
SELECT
  NON EMPTY Hierarchize([Product].Generations(3).Members) ON Axis(0),
  Hierarchize(Filter([UnionMarket], [Market].CurrentMember.Member_Name = "Boston")) ON Axis(1)
FROM Demo.Basic
----------------------------------------- Query Builder limitation with Microsoft SQL Server -----------------------------------------
Query Builder doesn't support a cross join that does not have a WHERE clause and produces the Cartesian product of the tables involved in the join. The size of a Cartesian product result set of such join is the number of rows in the first table multiplied by the number of rows in the second table. A cross join has a very limited use in everyday data retrieval.

----------------------------- HTML text support in XML -----------------------------
This patch supports HTML embedded in XML. The following new layout command is added to retain HTML format from data in the final output. <?html2fo: xpath?> Example: html code in xml data: user should input the html code to xml data file as CDATA. sample, html code is embedded in field RTECODE.
<?xml version="1.0" encoding="UTF-8"?>
<RTECODE>
<![CDATA[
<font style="font-style: italic; font-weight: bold;" size="3"><a
href="http://www.oracle.com">oracle</a></font> <br/>
<font size="6"><a href="www.oracle.com">www.oracle.com</a></font><br/><br/>
]]>
</RTECODE>


Sample usage in rtf template (assume the data.xml is as above).
<?html2fo:RTECODE?>
Supported html formats: Paragraph Font style ( bold, italic, plain, underline, subscript, superscript and strikes-through) Font size Font family Background color Foreground color Paragraph alignment (center, left, right and justify) Paragraph indent URL link List Bullet List Number List Non-Supported formats: Nested List (List with Indent) Some HTML tags/attributes which manually inserted like Table, Image, etc... in stead of HTML editor Sample Report: XML: html_test.xml RTF tempalte: html_test.rtf

Friday Dec 23, 2011

Siebel Tips and Tricks

Good tidings for the season to all of you. Its been erratic I know but we have stumbled along this year ...

I have been working with Eric, a Siebel sales consultant whiz on the BIP integration. He shared some really useful tips with a Siebel-BIP customer yesterday which I thought were well worth sharing.

Date Formatting

Firstly, some help with formatting dates when you are using a Siebel integration objects to generate the data. Siebel IOs do not generate the XSD date format that BIP needs to let you format dates to your hearts content.  Attached are a couple files that provide some examples on how to manipulate dates to get the desired formats. Some are easy to get working and some need a little effort.

MSWord Plugin Testing

Siebel development have shipped  some Siebel-BIP functions that are deployed to the server. However, to be able to test them locally on your desktop you need to get the java libraries into your classpath prior to starting MSWord. Here is the code Eric uses for starting Word with the Siebel classes in a batch file.  It assumes that the jar files are available locally on the client machine at C:\811DQSSIA\Client\CLASSES.  This will make the classes used by some Siebel report templates available to test directly in Word.  I have two versions, one for Word 2003 and one for Word 2007.

Word 2003:

echo %1

set _JAVA_OPTIONS=-Xbootclasspath/a:C:\811DQSSIA\Client\CLASSES\SiebelXMLP.jar;C:\811DQSSIA\Client\CLASSES\XMLP.jar;C:\811DQSSIA\Client\CLASSES\Siebel.jar;C:\811DQSSIA\Client\CLASSES\XSLFunctions.jar;C:\811DQSSIA\Client\CLASSES\SiebelCustomXMLP.jar;C:\811DQSSIA\Client\CLASSES\SiebelCustomXMLP_SIA.jar;

"C:\Program Files\Microsoft Office\Office12\Winword.exe" %1

Word 2007:

echo %1

set _JAVA_OPTIONS=-Xbootclasspath/a:C:\811DQSSIA\Client\CLASSES\SiebelXMLP.jar;C:\811DQSSIA\Client\CLASSES\XMLP.jar;C:\811DQSSIA\Client\CLASSES\Siebel.jar;C:\811DQSSIA\Client\CLASSES\XSLFunctions.jar;C:\811DQSSIA\Client\CLASSES\SiebelCustomXMLP.jar;C:\811DQSSIA\Client\CLASSES\SiebelCustomXMLP_SIA.jar;

"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office\Microsoft Office Word 2007.lnk" %1

 Happy Holidays!

Wednesday Dec 07, 2011

Excel 2007 Warnings!

As many of you have found out, everything is not as it seems with the Excel output that gets generated from an RTF template. It has non-Excel like limitations and the files are quite big. Those of you using Excel 2007 will have noticed another niggle. When you open an 'Excel' output you get a warning along the lines of:

The file you are trying to open, '*.XLS', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

This is down to BIP actually generating HTML and setting the mime type and extension to get Excel to open it. This is the cause of the limitations and the cause of the warnings. The limitations can be addressed by using an Excel template more on those in the user docs and elsewhere in this blog. Addressing the warning is going to require a modification to your users' registries.

Huge thanks to Abhishek Gupta for digging up a note from Oracle Support on it and thanks to whoever wrote the original. The note number is 1077728.1. I have uploaded Abhishek's snippet form the note here.

Update: Leslie has reminded me; for she is my Jimney Cricket to my Pinocchio, constantly prodding my conscious :0)
As an additional option in 11.1.1.5 Excel 2007 is a new output type from RTF that generates .xlsx.
Excel 2007 is a new output type available for reports. When selected, BI Publisher generates the output in Excel XML format (.xlsx). If you have Excel 2007 or later installed, this option provides the best preservation of layout and formatting.

As noted in the comments, the Excel templates generate binary xls output not xlsx format and therefore have xls limitations in their abilities.

Tuesday Dec 06, 2011

11.1.1.5 December 2011 Update Available

Latest and greatest from the boys and girls at the coal face for December. Bug fixes and some interesting enhancements that I hope to dig into to here soon.

Search for patch 13366758: UPDATE FOR BI PUBLISHER ENTERPRISE 11.1.1.5.0 DECEMBER 2011 on Oracle Support. Make sure you check out the readme for patch installation instructions.

 9102877 - QA: QUERY BUILDER GENERATES INCORRECT SQL FOR MANY DBS
 10402890 - SETTINGS FROM "DELIVERY CONFIGURATION" PAGE NOT BEING HONORED WHEN REPORTS RUN
 11725468 - ER: RTE HTML SUPPORT IN DATA XML
 11828672 - QA: INCORRECT INACTIVE WARNING MESSAGE
 11835845 - 11G SQL DATA SET CREATION ORA-01756 ERROR BECAUSE COLON IS READ AS BIND VARIABLE
 11850902 - SHARE REPORT LINK "NO PARAMETERS" AND "DOCUMENT ONLY" RENDER INCORRECTLY
 11870449 - BI PUBLISHER XDOXSLT:SDIV() FUNCTION RESULTS NOT CORRECT
 12312539 - QA: REPORT VIEWER SCREEN FREEZES FOR A FLEX REPORT WHEN SESSION EXPIRES
 12376386 - REMOVETEMPLATEFORREPORT API DOESN'T REMOVE TEMPLATE
 12405904 - CANNOT DEPLOY BIP WHEN DEPLOYMENT PATH INCLUDES SPACE CHARACTERS
 12406034 - CANNOT USE JAVA DB - DERBY - FOR SCHEDULER DATABASE
 12588342 - DELETEOBJECT RANDOM FAILURE
 12595931 - WHEN PRINTING CHARTS TO PDF, NUMBERS BECOME ARABIC NUMBERS
 12615821 - MISSING MEMBERS ON THE XML GENERATED BY BIP
 12634030 - RE-PACKAGING MLR#11893189 TO XDOPARSER11G.JAR
 12646493 - ORA-22902 CURSOR EXPRESSION NOT ALLOWED
 12666066 - ER: EXCEL 2007 SUPPORT IN REST API
 12705244 - JOINED MDX DATA SETS DO NOT PRODUCE CORRECT DATA - DATA MISSING
 12726163 - NUMBER OF SESSIONS INCREASES AFTER RUNNING SCHEDULED JOBS
 12737670 - GROUP BY FOR MDX DATA SET MISSING IN 11.1.1.5 - WAS PRESENT IN 11.1.1.3
 12741858 - BI ASNWERS ANALYSIS IMPLEMENTING CASE WHEN STATEMENTS CAN NOT BE CONSUMED IN BIP
 12750192 - ER: GENERATE NATIVE COMBINATION DUAL Y GRAPH IN PPTX OUTPUT FROM RTF AND XPT
 12766932 - VERTICAL DUAL Y COMBO CHART MISSING SETTINGS TO ASSIGN VALUES TO AXIS
 12775400 - DBFW:GENERATING IN XLXS OUTPUT IS THROWING AN ERROR
 12822514 - SQL WITH CLAUSE - DATASET DOESN'T WORK (AND DIAGNOSTIC ISN'T HELPFUL)
 12828845 - ISSUE WITH XDO_USER_NAME PARAMETER ON BIP 11.1.1.5.0
 12835431 - INTRANSIT VALUATION REPORT QUERY GIVING ERROR IN EDITOR
 12847306 - BI PUBLISHER DATA SET - WON'T SAVE
 12872831 - EXCEL TEMPLATES GENERATING INCORRECT RESULTS FROM NESTED GROUPS
 12879801 - ALLOW SAVING DATA MODEL WITH SPECIAL CHARACTER
 12945367 - NOT ABLE TO EDIT DATA MODEL WHEN LINKS EXIT AMONG DATA SETS
 12945475 - IE: NOT ABLE TO EDIT DATA MODEL WITH MANY DATA SET AND LINKS
 12956901 - IN SQL SERVER CLOB IN DATA MODEL UI MARKED AS STRING DATA TYPE
 12956915 - INCORRECT DATA WHEN PROCESSING OF CLOB COLUMNS FOR SQLSERVER
 12956934 - DATA MODEL SHOULD RESPECT CASE SENSITIVITY FOR COLUMN AND TABLE NAMES
 12972559 - XML DATA FILE TRUNCATED
 12972852 - DYNAMIC IMAGES BROKEN FOR FO/PDF
 12989467 - NEED TO CONVERT DOCUMENT FORMAT "EXCEL" TO "EXCEL2000"
 13005659 - PSR:PERF:BIP:POOR PERF ACCESSING CATALOG FOLDER IN BIP 11G WITH SECURITY ENABLED 
 13007341 - DISPLAY ISSUES IN PARAMETER TAB OF OBI PUBLISHER 11G
 13095050 - STRESS: OUTOFMEMORY ERRORS WITH VIEW REPORT STRESS
 13100021 - BI PUBLISHER: QUERY BUILDER RESULTS RETURN COLUMN TYPE (APPEARS) INSTEAD VALUE
 13100220 - HOW TO USE 11.1.1.5 WITH THE IDENTITY ASSERTER
 13250009 - FOR METADATA LOGICAL SQL BIND WITH DUMMY VALUES INSTEAD OF NULL
 13321449 - RESOURCELIMITEXCEPTION DURING ANY OPS THAT USE JNDI DATA SOURCE
 13346737 - MULTIPLE VALUES IN A DASHBOARD PROMPT DOESN'T WORK WITH BI PUBLISHER INTEGRATED
 13351305 - QUERY BUILDER DOES NOT BUILD CORRECT SYNTAX FOR SQL SERVER
 13421264 - ADDING PARAMETER TO SQL BI SERVER DATA SET CORRUPTS DATA MODEL

 

Enjoy!

Thursday Dec 01, 2011

Dynamic Content using Sub Templates

I have written about sub templates in the past on a few occasions; the principle behind them is pretty simple. If you have common report components that can be shared across reports; be they blocks of text like standard contract clauses or maybe some common calculation or function, drop them into a sub template and share the love. Develop once, use everywhere!
A colleague was recently tasked with conditionally bringing into a report output, paragraphs of static text based on some user preferences. That’s an ideal candidate for a sub template approach; drop all of the paragraphs in to an RTF subtemplate and then just conditionally pull them in based on some boolean expressions.
You might, quite naturally think about conditionally importing a series of sub templates rather than defining one, with all the content. However, XSL does not allow the conditional import of sub templates so you must take the single template approach. You can of course, import multiple sub templates if you have a lot of content to bring in but in most cases I would expect a single sub template will suffice.

BIP does need to know what those paragraphs need to be for each user whether that’s as a set of parameter values or a data element in the incoming data set. For this example I have used both approaches and they work all flavors of BIP. Implementation of the sub template onto the servers is going to be a little different but the main principle is the same. I have mercilessly ripped out a nice graphic from Leslie’s (doc writer extraordinaire) documentation.



This is for the 11g version that supports loading sub templates into the report catalog as objects.  They can then be referenced in your main template using the import statement:

<?import:xdoxsl:///subtemplatefolder/subtemplatename.xsb?>

The subtemplate folder is going to be from the /SharedFolders  or /My Folders root. For instance, I have a sub template ‘paragraphs’ loaded into a ‘test’ folder under  Shared Folders. The import statement in my main template is ‘<?import:xdoxsl:///Test/ParaSubTemplate.xsb?>’

Update from Leslie

For those of you testing using your own My Folder area. The syn tax is

<?import:xdoxsl:///~username/path to subtemplate.xsb?> where username is your user name. For example: <?import:xdoxsl:///~tdexter/Subtemplates/Template1.xsb?>

Recommend you move them into the shared folder area in production.

For 10g you will either need to drop them into an accessible directory and use the file URI or mount them into the web server directory structure and access them via an http URI. I normally mount them in a directory under the ‘xmlpserver’ directory e.g J2EE_HOME\applications\xmlpserver\xmlpserver\subtemplates, a template is then accessible via the URI ‘http://server:port/subtemplates/template.rtf’

Make sure you set the Allow External References property to true for the report so that the sub template can be accessed.



The actual content of the sub template is pretty straight forward. It’s a series of paragraphs bounded by the ‘template’ command e.g.

<?template:para1?>
…
…
<?end template?>
<?template:para2?>
…
…
<?end template?>
<?template:para3?>
…
…
<?end template?>
Now we have the dynamic content defined it’s a case of conditionally bringing it into the main template. For this example I have demonstrated two approaches; both rely on the required paragraph information to be in the main dataset:
1.    Using parameters to allow the user to select the appropriate paragraphs to be brought in. This means creating the parameters and ensuring that you have set the property on the data model to include the parameter values in the XML result set.

Once that’s done its just a simple case of using id statements to check if a given paragraph should be included:

<?if:.//PARA1='1'?><?call:para1?><?end if?>


This assumes my parameter is called PARA1 and that a ‘1’ means include it, it could easily be a ‘Y’ or ‘True’ value, you are just testing for it.


2.    Including a value in the data to define what paragraphs should be included. If you have stored what paragraphs should be included for a given entity i.e. customer, supplier, employee, etc. Then you can extract those values into the data set and test for them. For this demo I have a 5 character set of ‘1’s and ‘0’s to represent the paragraphs that need to be included e.g. 10110. I just use a substring command to find out if a particular paragraph needs to be included.

<?if:substring(.//PARAS,1,1)='1'?><?call:para1?><?end if?>


Where PARAS is the element holding the ‘1’s and ‘0’s string to be parsed.
You can of course use some other means of marking whether a paragraph needs to be included or not. It’s just a case of parsing out the values with a substring or similar command.
You should be able to generate dynamic content such as this:


 Notice that I have rendered the code so that I can see that the paragraphs are coming in i.e 10001 means we get paragraphs 1 and 5. I have built out demo files for the second method, available here.

Friday Nov 18, 2011

UPDATE FOR BI PUBLISHER ENTERPRISE 10.1.3.4.2 NOVEMBER 2011

It's Friday, that means its patch release time. Why do we do this to ourselves, 'we'll release on Friday!' It might 11.59 on Friday but by golly we'll have released on Friday. I can remember a release of BIP years ago that for some reason we went for 12/31 as a release date ... were we mad? I seem to remember we made it but talk about ridiculous pressure!

The latest 10g rollup is out in the wild and available from Oracle support. A bug fixing rollup but worth getting to and know that support will want you to get to it and re-test before going forward on an SR. One simple but very useful fix or enhancement:

[Cause of the bug]
@ ==================
@ Customer reports that despite the clock being shown, end users are clicking
@ on the View button repeatedly as the initial generation is taking some time.  
@ If the button were to be grayed out then  this would prevent the users
@ requesting the report more than  once.  Repeated requests are causing a
@ system overload and as this is their Production  instance this is extremely
@ important to the customer.
@ .
@ [The Fix]
@ =========
@ Added the logic to disable the button after the user clicks on the "view"
@ button and re-enable it when the report is loaded.

I told a group of customers once that they have a headache and we have a non-steroidal anti-inflammatory drug, alright, I actually said 'aspirin'. This little gem of a fix helps relieve another little headache that our aspirin was causing. The patch number for all this BIP pain killing is 13399232, enjoy!

Thursday Oct 27, 2011

Time for a Timeout

Couple of inquiries this week around the default timeout for BIP 11g installs and being able to change it. Its not currently documented (Leslie is working on that :) and when you see what you need to do you might understand why. It's ugly, very ugly but in the interest of getting the information out there, here we go.

The BIP session timeout is controlled in a section in the web.xml file under the WEB-INF directory.

<session-config>
 <session-timeout>30</session-timeout>
</session-config>

The weblogic server (WLS) has a couple of features that are one, a pain and two useful. The first is the inability to update the web application's web.xml and have the changes take effect when you restart WLS. So far in my web diggings, I have found that you have to completely delete the application from WLS, update the web.xml and then re-deploy it with your new settings. Here's the steps:

  1. Locate the xmlpserver.war under the MW home and back it up somewhere.
  2. Log into the WLS console >> Deployments
  3. Delete the BIPublisher entry. BIP is now gone from the server
  4. Back to the war file. Unpack it, preserving directories
  5. Go into the WEB-INF directory and edit the web.xml file and increase the timeout value and save the file. The setting is in the session-config section:

    <session-config>
       <session-timeout>60</session-timeout>
     </session-config>

  6. Zip the war back up preserving the directories
  7. Back in the console UI goto Deployments and 'Install' the BIP war file. Just accept all the defaults.
  8. You can now log into the BIP application and the new timeout will be applied

It's messy I know but it works. Now, some of you may have found the page in the WLS console application that allows you to set a session timeout. Naturally, you'd think this would work if you changed it (that's the other feature of WLS that is useful.) The web.xml setting however, takes precedence over the WLS setting.
I have not tried this yet but I have been told that, if you remove the session-config section from the web.xml file and then redeploy BIP, the WLS setting will be respected. It's gotta be a better way to manage sessions. Just remember that until the development team either provide a better way to do it or remove the default time out in the web.xml file you are going to have to maintain your timeout method if you patch or upgrade.

Wednesday Oct 26, 2011

Tricky Grouping

A week off trying to catch up with all the stuff that builds up was not enough but it was pretty fruitful. You clear the decks the week before you leave, you even answer a few mails in the first few days of vacation, until your manager slaps your wrists. But there is always a pile of work waiting when you get back. It was not too bad this time; I at least deleted the crap mail during the week via my phone.

How the heck did we survive without smart phones? I took a trip to north Denver last week to pick up a part for our bear ravaged pop up camper. I think he wanted a cold beer from the fridge just wish he'd used the front door rather than slicing the camper open. That gaping hole is meant to be covered!
I guess I could have checked a map before we left but my phone got us through the mess of roads up there. An 80 mile round trip for a $10 louvered cover! Still, we found a great Indian place for lunch, delicious curry!

Today's tidbit (titbit for my British brethren) is a bit tough to describe. It comes from Charlotte in New Zealand. On the surface it looks simple and it is when you know how :0) But there's a wrinkle in to smooth out.
Here's the data:

<DATA_DS>
 <G_1>
  <SERIALNUMBER>HSS0000156</SERIALNUMBER>
  <LOCATION>1 The Street Anytown USA</LOCATION>
   <ATTRIBDESC>Lettable Date</ATTRIBDESC>
  <ATTRIBVALUE>15/JUN/11</ATTRIBVALUE>
  </G_1>
 <G_1>
  <SERIALNUMBER>HSS0000156</SERIALNUMBER>
  <LOCATION>1 The Street Anytown USA</LOCATION>
   <ATTRIBDESC>Status Reason</ATTRIBDESC>
  <ATTRIBVALUE>Planned Major Repair/Upgrade</ATTRIBVALUE>
  </G_1>
 <G_1>
  <SERIALNUMBER>HSS0000276</SERIALNUMBER>
  <LOCATION>11 The Street Anytown USA</LOCATION>
   <ATTRIBDESC>Lettable Date</ATTRIBDESC>
  <ATTRIBVALUE>18/MAY/11</ATTRIBVALUE>
  </G_1>
 <G_1>
  <SERIALNUMBER>HSS0000276</SERIALNUMBER>
  <LOCATION>11 The Street Anytown USA</LOCATION>
   <ATTRIBDESC>Status Reason</ATTRIBDESC>
  <ATTRIBVALUE>Planned Major Repair/Upgrade</ATTRIBVALUE>
  </G_1>
 <G_1>
  <SERIALNUMBER>HSS0001046</SERIALNUMBER>
  <LOCATION>21 The Street Anytown USA</LOCATION>
   <ATTRIBDESC>Lettable Date</ATTRIBDESC>
  <ATTRIBVALUE>21/JUN/11</ATTRIBVALUE>
  </G_1>
 <G_1>
Heres the desired output:

Serialnumber Status Reason Date
HSS0000156 Planned Major Repair/Upgrade 15/JUN/11
HSS0000276 Planned Major Repair/Upgrade 18/MAY/11
HSS0001046 Planned Major Repair/Upgrade 21/JUN/11
HSS0001303 Planned Major Repair/Upgrade 19/MAY/11
HSS0001403 Planned Major Repair/Upgrade 14/JUN/11

Hok-Min, Zen Master of the RTF template, jumped on this for me and nailed it first time. On first look you think, ah this is just a simple re-group left, using some xpath to repeat the ATTRIBVALUE element twice in the table based on the ATTRIBDESC. Along the lines of:

<?ATTRIBVALUE[../ATTRIBDESC='Planned Major Repair/Upgrade']?> and <?ATTRIBVALUE[../ATTRIBDESC='Lettable Date']?>

But you oh so very easily end up with this:

Serialnumber Status Reason Date
HSS0000156
15/JUN/11
Planned Major Repair/Upgrade
HSS0000276
18/MAY/11
Planned Major Repair/Upgrade
HSS0001046
21/JUN/11
Planned Major Repair/Upgrade
HSS0001303
19/MAY/11
Planned Major Repair/Upgrade
HSS0001403
14/JUN/11
Planned Major Repair/Upgrade

and start scratching your head? With the 10.1.3.4.1 and 11g template builders there is a nice Group Left feature that removes the need for nasty nested tables but for this slightly corner case, it drops you into a world of misery. You need to take a step back from what the wizard has given you.

Yes, you need to group by serial number but you do not need to loop over the remaining data (current-group().) Rather, you just need to drop into that current-group() and bring the values you need up to the level of the serial number group. So you just need to modify your XPATHs thus:

<?current-group()/ATTRIBVALUE[../ATTRIBDESC='Status Reason']?>

i.e. provide a complete path to the element you want within the serial number re-group level. Neat!

Template and sample data available here.


About

Follow bipublisher on Twitter Find Us on Facebook BI Publisher Youtube ChannelDiscussion Forum

Join our BI Publisher community to get the most and keep updated with the latest news, How-to, Solutions! Share your feedback and let us hear your voice @bipublisher on Twitter, on our official Facebook page, and Youtube!

Search

Archives
« February 2012
SunMonTueWedThuFriSat
   
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
   
       
Today