Changing Info View without Changing Info View Matthias

  • Slides: 83
Download presentation
Changing Info. View without Changing Info. View Matthias Nott, Business Objects

Changing Info. View without Changing Info. View Matthias Nott, Business Objects

Introduction Who I am Matthias Nott, Business Objects Service Line Leader for Products, EMEA

Introduction Who I am Matthias Nott, Business Objects Service Line Leader for Products, EMEA What is this all about Changing Info. View without Changing Info. View? What I want you to do If you are not a Technical Person: Understand what Technical Persons can do for you easily If you are a Technical Person: Understand everything If you don‘t know. . . Choose a side What I want you not to do Take Notes Answer your Phone SLIDE 3 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 4 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What Is BOInterface? SDK library that greatly simplifies using the SDK You do not

What Is BOInterface? SDK library that greatly simplifies using the SDK You do not have to worry about document types Most common SDK tasks 1 line of code Does not limit you, it helps you Helps you to employ best practices on your projects Based on 5 years of development More than 35, 000 lines of code behind the scenes Actively used by customers worldwide Consulting solution Ask your account manager Ask local professional services contact Ask me matthias. [email protected] com SLIDE 5 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What Is BOInterface? SLIDE 6 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS

What Is BOInterface? SLIDE 6 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What Is BOInterface? SLIDE 7 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS

What Is BOInterface? SLIDE 7 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 8 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What is a Servlet Filter? Java Code sitting between the Client and the End

What is a Servlet Filter? Java Code sitting between the Client and the End Point Can filter multiple End Points Multiple Filters can be stacked Registered through web. xml No Code Change required! Can modify: Request variables Header variables Cookies Page/Session/Application Beans Initialisation Parameters. . . and the entire Response! SLIDE 9 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What is a Servlet Filter? Sample Servlet Filter Declaration for web. xml <filter> <filter-name>Name

What is a Servlet Filter? Sample Servlet Filter Declaration for web. xml <filter> <filter-name>Name of the Filter</filter-name> <filter-class>com. bo. . </filter-class> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>Name of the Filter</filter-name> <url-pattern>/Info. View/main/header. Plus. do</url-pattern> </filter-mapping> SLIDE 10 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 11 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What is going on in Info. View? Find out with a Servlet Filter! <filter>

What is going on in Info. View? Find out with a Servlet Filter! <filter> <filter-name>Request. Analyzer</filter-name> <filterclass>com. bointerface. tools. http. Http. Request. Analyzer</filter -class> <init-param> <param-name>init</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>Request. Analyzer</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> SLIDE 12 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What is going on in Info. View? ---------------------[http: //linux: 9090/businessobjects/enterprise 115/desktoplaunch/Info. View/main/nav. Work. do

What is going on in Info. View? ---------------------[http: //linux: 9090/businessobjects/enterprise 115/desktoplaunch/Info. View/main/nav. Work. do ] ---------------------Header Data: Fri Apr 13 22: 23: 02 CEST 2007 ---------------------par: temp [java. lang. String]=1176495784473 ---------------------hdr: accept [java. lang. String]=text/xml, application/xhtml+xml, text/html; q=0. 9, text/plain; q=0. 8, image/png, */*; q=0. 5 hdr: host [java. lang. String]=linux: 9090 hdr: user-agent [java. lang. String]=Mozilla/5. 0 (X 11; U; Linux i 686; en-US; rv: 1. 8. 1. 3) Gecko/20061201 Firefox/2. 0. 0. 3 (Ubuntu-feisty) ---------------------coo: CE_Last. Aps [java. lang. String]=linux: 6400 coo: CE_Last. Auth. Type [java. lang. String]=sec. Enterprise coo: CE_Last. User [java. lang. String]=Administrator coo: CE_Logon. Token [java. lang. String][email protected] JBCl 8 HYL 8 Ng. XIpeb 25376 JFUZk. V 8 p. IHs. LKLCx coo: JSESSIONID [java. lang. String]=AAC 57380 EC 0701 D 7 DE 5 BD 2821 EEA 22 D 9 ---------------------ses: CE_ENTERPRISESESSION [com. crystaldecisions. sdk. framework. internal. b]=(Enterprise. Session: logon=(Security. Session: user. Info=(User. Info: username=Administrator, user. ID=12, user. Desc=Administrator. Konto, auth=token), aps. Name=LINUX, user. URI=osca: iiop: //LINUX; SI_SESSIONID=25402 JLa. VCP ses: javax. servlet. jsp. jstl. fmt. request. charset [java. lang. String]=utf-8 ses: org. apache. struts. action. LOCALE [java. util. Locale]=en_US ses: schema [com. crystaldecisions. e. Portfolio. framework. common. Schema. Bean]=com. crystaldecisions. e. Portfolio. framework. Schema. [email protected] ed ---------------------app: javax. servlet. context. tempdir [java. io. File]=/opt/bo/xir 2/tomcat/work/Catalina/linux/businessobjects_enterprise 115_desktoplaunch app: obj. Utils [com. businessobjects. adv_ivcdzview. Utils]=com. businessobjects. adv_ivcdzview. [email protected] 1 b 4 e 7 app: org. apache. catalina. WELCOME_FILES [[Ljava. lang. String; ]=[Ljava. lang. String; @8698 fa app: org. apache. catalina. jsp_classpath [java. lang. String]=/opt/bo/xir 2/bobje/webapps/businessobjects/enterprise 115/desktoplaunch/WEBINF/classes/: /opt/bo/xir 2/bobje/webapps/businessobjects/enterprise 115/desktoplaunch/WEB-INF/lib/BOInterface. jar: /opt/bo/xir 2/ app: org. apache. catalina. resources [org. apache. naming. resources. Proxy. Dir. Context]=org. apache. naming. resources. Proxy. Dir. [email protected] f app: org. apache. struts. action. FORM_BEANS [org. apache. struts. action. Action. Form. Beans]=org. apache. struts. action. Action. Form. [email protected] 5 d 030 app: org. apache. struts. action. FORWARDS [org. apache. struts. action. Action. Forwards]=org. apache. struts. action. Action. [email protected] dd 6 e 2 app: org. apache. struts. action. MAPPINGS [org. apache. struts. action. Action. Mappings]=org. apache. struts. action. Action. [email protected] 09 e 41 app: org. apache. struts. action. MESSAGE [org. apache. struts. util. Property. Message. Resources]=org. apache. struts. util. Property. Message. [email protected] ed 577 app: org. apache. struts. action. SERVLET_MAPPING [java. lang. String]=*. object --------------------- SLIDE 13 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Recap: What is going on in Info. View? Find out with BOInterface: Use Http.

Recap: What is going on in Info. View? Find out with BOInterface: Use Http. Request. Analyzer Servlet Filter Get the complete Call Sequence See all Parameters See all Headers See all Cookies See all Beans Understand exactly how Info. View works! SLIDE 14 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 15 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What is a Regular Expression (正規表現)? Descriptive Pattern of a Text Fragment READ FROM

What is a Regular Expression (正規表現)? Descriptive Pattern of a Text Fragment READ FROM LEFT TO RIGHT! Has special Characters: ^ = Beginning of Line $ = End of Line. = Any Character = Escaping Character * = Any number of character, including 0 + = Like *, but at least 1 ? = Shortest (non greedy) Match {1, 4} = Min/Max Quantities; also {3} [a-z] = Character Class [^>] = Not a > ( ) = Referenceable Group $1 = Reference to Group Number 1 (? sm) = Match cross line boundaries SLIDE 16 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What is a Regular Expression (正規表現)? Sample 1: Suppress some HTML Code Assume, you

What is a Regular Expression (正規表現)? Sample 1: Suppress some HTML Code Assume, you have some HTML Code like // "Send" Menu var btn. Send = toolbar. Ctrl. add (new. Icon. Menu. Widget. . . var my. Info. View. Icon =. . . If we want to suppress „var btn. Send. . . “, we write this as (? sm)var btn. Send. *? (var my. Info. View. Icon) Match accross multiple lines and search a „v“, followed by an „a“, followed by an „r“, then a blank, then a „b“, then a „t“, then an „n“, then an „S“, then an „e“, then an „n“, then a „d“ then any character („. “) of which we allow any number („*“) but only until we first match („? “) a Group „(“ of „var my. . And we replace this by referring to the group as „$1“ SLIDE 17 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

What is a Regular Expression (正規表現)? Sample 2: Swap some HTML Code Assume, you

What is a Regular Expression (正規表現)? Sample 2: Swap some HTML Code Assume, you have some HTML Code like <frameset id="nav. Work. Frame. Set" cols="200, *, 0" framespacing="2" frameborder="1" border="2" bordercolor="#F 6 F 6 FB"> <frame name="navigation. Frame" id="navigation. Frame" src=". . /Info. View/main/navigation. do" marginheight="0" marginwidth="0" frameborder="0" > <frame name="workspace. Frame" id="workspace. Frame" src="workspace. do? url=. . %2 FInfo. View%2 Fmain%2 Fhome. do" frameborder="0" marginheight="0" marginwidth="0"> <frame name="right. Frame" id="right. Frame" src='. . /applications/index. bouitoolkit? [email protected] Jn. I 1 Uv. ALCd 0 XYrsz 25380 Ja. RE 7 qtgzancz 2 t. QONEOFF&LOCALE=en_US' frameborder="0" marginheight="0" marginwidth="0" scrolling="no" no. Resize="true"> </frameset> To put „navigation. Frame“ after „right. Frame“, we match (? sm)(200, *, 0)(. *? )(<frame [^>]*? >)(. *? )(</frameset>) And we replace this by replacing $1 and reordering $3 and $4: *, 0, 200 SLIDE 18 $2 $4 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED. $3 $5

Recap: What is a Regular Expression (正規表現)? A way to write a Pattern for

Recap: What is a Regular Expression (正規表現)? A way to write a Pattern for Text Fragments Always read from Left to Right Allows Wildcards Allows Quantifiers Allows Grouping Helps to replace Text 正規表現 is Japanese for „Regular Expression. . . “ (not to mix with 性器表現. . . ) SLIDE 19 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 20 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Visual Modifications to Info. View Change Colors and Fonts q Mission: Change the List

Visual Modifications to Info. View Change Colors and Fonts q Mission: Change the List Font ü Using Style Sheets Remove Buttons and Menus q Mission: Remove the „Send“ Menu. ? Changing Info. View Code ü Using BOInterface and NOT Changing Info. View Code Move Frames around q Mission: Move the „Navigation“ Frame to the Right ü Using BOInterface and NOT Changing Info. View Code Add Menu Items to the Viewer q Mission: Add an Export Context Menu Item to the DHTML Viewer ü SLIDE 21 Using BOInterface and NOT Changing Info. View Code COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Change the List Font Coming from here. . . SLIDE 22 COPYRIGHT © 2007

Change the List Font Coming from here. . . SLIDE 22 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Change the List Font. . . we want to go here SLIDE 23 COPYRIGHT

Change the List Font. . . we want to go here SLIDE 23 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Change the List Font Find out where the Style. Sheet is Frame Source says,

Change the List Font Find out where the Style. Sheet is Frame Source says, it is in /Info. View/res/schema. blue/default. css Frame Source refers to the style „. list“ by <td class='list'. . . <a class='list'. . . We locate it in the css File and change it to. list { font-family: Arial; font-size: 14 pt; font-weight: bold; color: navy; }. . . and reload the Frame. SLIDE 24 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Recap: Change the List Font (Style Sheets) Simple Modifications can be done easily Not

Recap: Change the List Font (Style Sheets) Simple Modifications can be done easily Not very flexible: Styles are reused across elements (td, a) Changes affect more than intended Many elements not styled Difficult to “drop” things Difficult to include “Logic” Graphics can be changed in the File System SLIDE 25 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Visual Modifications to Info. View Change Colors and Fonts q Mission: Change the List

Visual Modifications to Info. View Change Colors and Fonts q Mission: Change the List Font ü Using Style Sheets Remove Buttons and Menus q Mission: Remove the „Send“ Menu. ü Changing Info. View Code ü Using BOInterface and NOT Changing Info. View Code Move Frames around q Mission: Move the „Navigation“ Frame to the Right ü Using BOInterface and NOT Changing Info. View Code Add Menu Items to the Viewer q Mission: Add an Export Context Menu Item to the DHTML Viewer ü SLIDE 26 Using BOInterface and NOT Changing Info. View Code COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu SLIDE 27 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL

Remove the „Send“ Menu SLIDE 27 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu Method 1: Attempting to Reverse Engineer Find out where the

Remove the „Send“ Menu Method 1: Attempting to Reverse Engineer Find out where the Send Menu is created Frame Information says, it is in /Info. View/main/header. Plus. do This refers to a Struts Class. Yet, /WEB-INF/struts-Info. View. xml redirects us to <forward name="default" path="/Info. View/main/header. Plus. Buttons. jsp" redirect="false"/> This file contains no button definitions. SLIDE 28 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu Method 1, continued: Fighting with the Code. . . Being

Remove the „Send“ Menu Method 1, continued: Fighting with the Code. . . Being creative, we look at /Info. View/main/header. Plus. jsp Searching for „button“, we find a reference to /Info. View/header. Plus/buttons. do Looking at its code, and searching further we find a file /WEB-INF/classes/METAINF/buttons/headerplus/default. xml Which is basically an empty file: <? xml version="1. 0"? > <button-config> <buttons> </buttons> SLIDE 29 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu Method 1, continued: Pattern Searching. . . Taking another approach,

Remove the „Send“ Menu Method 1, continued: Pattern Searching. . . Taking another approach, we analyze the HTML Source: // "Send" Menu var btn. Send = toolbar. Ctrl. add (new. Icon. Menu. Widget. . . var my. Info. View. Icon =. . . Searching the entire Web App for „btn. Send“, we get /Info. View/main/header. Plus. jsp We earlier overlooked that it contains the above code. Other things (particularly for the Viewer) are much more difficult to find. SLIDE 30 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu Method 1, Summary Changing the Info. View Code is a

Remove the „Send“ Menu Method 1, Summary Changing the Info. View Code is a bad idea! Changes may go into all sorts of places, including JSP Files XML Files JS Files Struts Java Classes of which you may not even have the Source. . . With any update of Info. View the logic may have changed, so you would have create a new patch Putting your Info. View back in a supported state involves setting back changes in may be a number of files. SLIDE 31 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu Method 2: Use BOInterface A five step process: Analysis: Find

Remove the „Send“ Menu Method 2: Use BOInterface A five step process: Analysis: Find the URL Find the Pattern Synthesis: Create a Regular Expression for that Pattern Create a Search/Replace Servlet Filter in web. xml Test: Restart the Container, and Test. SLIDE 32 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu Method 2: Use BOInterface A five step process: 1. Find

Remove the „Send“ Menu Method 2: Use BOInterface A five step process: 1. Find the URL for the Frame by using Frame Information: /Info. View/main/header. Plus. do 2. Open the Frame Source and Locate the Pattern: // "Send" Menu var btn. Send = toolbar. Ctrl. add (new. Icon. Menu. Widget. . . var my. Info. View. Icon =. . . 3. Create a Regular Expression for that Pattern: (? sm)var btn. Send. *? (var my. Info. View. Icon) 4. Create a Search/Replace Servlet Filter in web. xml (see next slide) 5. Restart the Container, and Test. SLIDE 33 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu 4. Create a Search/Replace Filter in web. xml: <filter> <filter-name>No

Remove the „Send“ Menu 4. Create a Search/Replace Filter in web. xml: <filter> <filter-name>No Search Button</filter-name> <filter-class>com. bointerface. tools. http. Http. Response. Analyzer </filter-class> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> <param-name>search</param-name> <param-value><![CDATA[(? ms)var btn. Send. *? (var my. Info. View. Icon)]]></param-value> </init-param> <param-name>replace</param-name> <param-value><![CDATA[$1]]></param-value> </init-param> </filter> <filter-mapping> <filter-name>No Search Button</filter-name> <url-pattern>/Info. View/main/header. Plus. do</url-pattern> </filter-mapping> SLIDE 34 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Remove the „Send“ Menu SLIDE 35 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL

Remove the „Send“ Menu SLIDE 35 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Recap: Remove the „Send” Menu Code Changes are BAD BOInterface makes it EASY 1.

Recap: Remove the „Send” Menu Code Changes are BAD BOInterface makes it EASY 1. Find the URL 2. Find the Pattern 3. Create a Regular Expression 4. Create a Search/Replace Filter 5. Restart Container, Test. Changes can easily be removed to make the System supported Multiple Expressions per Endpoint can be done like <search 01/>. . <replace 01/>, <search 02/>. . <replace 02/>, etc. Much more complex examples can be achieved implementing Abstract. Servlet. Filter. Html. Processor SLIDE 36 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Visual Modifications to Info. View Change Colors and Fonts q Mission: Change the List

Visual Modifications to Info. View Change Colors and Fonts q Mission: Change the List Font ü Using Style Sheets Remove Buttons and Menus q Mission: Remove the „Send“ Menu. ü Changing Info. View Code ü Using BOInterface and NOT Changing Info. View Code Move Frames around q Mission: Move the „Navigation“ Frame to the Right ü Using BOInterface and NOT Changing Info. View Code Add Menu Items to the Viewer q Mission: Add an Export Context Menu Item to the DHTML Viewer ü SLIDE 37 Using BOInterface and NOT Changing Info. View Code COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Move the „Navigation“ Frame to the Right Coming from here. . . SLIDE 38

Move the „Navigation“ Frame to the Right Coming from here. . . SLIDE 38 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Move the „Navigation“ Frame to the Right. . . we want to go here

Move the „Navigation“ Frame to the Right. . . we want to go here SLIDE 39 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Move the „Navigation“ Frame to the Right Analysis: 1. Find the URL Http. Request.

Move the „Navigation“ Frame to the Right Analysis: 1. Find the URL Http. Request. Analyzer tells us, the Frame. Set is generated by /Info. View/main/nav. Work. do 2. Find the Pattern <frameset id="nav. Work. Frame. Set" cols="200, *, 0" framespacing="2" frameborder="1" border="2" bordercolor="#F 6 F 6 FB"> <frame name="navigation. Frame" id="navigation. Frame" src=". . /Info. View/main/navigation. do" marginheight="0" marginwidth="0" frameborder="0" > <frame name="workspace. Frame" id="workspace. Frame" src="workspace. do? url=. . %2 FInfo. View%2 Fmain%2 Fhome. do" frameborder="0" marginheight="0" marginwidth="0"> <frame name="right. Frame" id="right. Frame" src='. . /applications/index. bouitoolkit? [email protected] Jn. I 1 Uv. A LCd 0 XYrsz 25380 Ja. RE 7 qtgzancz 2 t. QONEOFF&LOCALE=en_US' frameborder="0" marginheight="0" marginwidth="0" scrolling="no" no. Resize="true"> </frameset> SLIDE 40 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Move the „Navigation“ Frame to the Right Synthesis: 3. Create a Regular Expression for

Move the „Navigation“ Frame to the Right Synthesis: 3. Create a Regular Expression for that Pattern (? sm)(200, *, 0)(. *? )(<frame [^>]*? >)(. *? )(</frameset>) *, 0, 200 $2 $4 $3 $5 4. Create a Search/Replace Servlet Filter in web. xml 5. (see next slide) 5. Restart the Container, and Test. SLIDE 41 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Move the „Navigation“ Frame to the Right 4. Create a Search/Replace Filter in web.

Move the „Navigation“ Frame to the Right 4. Create a Search/Replace Filter in web. xml: <filter> <filter-name>Navigation Frame Right</filter-name> <filter-class>com. bointerface. tools. http. Http. Response. Analyzer </filter-class> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> <param-name>search</param-name> <param-value> <![CDATA[(? sm)(200, *, 0)(. *? )(<frame [^>]*? >)(. *? )(</frameset>)]]> </param-value> </init-param> <param-name>replace</param-name> <param-value><![CDATA[*, 0, 200$2$4$3$5]]></param-value> </init-param> </filter> <filter-mapping> <filter-name>Navigation Frame Right</filter-name> <url-pattern>/Info. View/main/nav. Work. do</url-pattern> </filter-mapping> SLIDE 42 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Recap: Move the „Navigation” Frame to the Right BOInterface makes it EASY Find the

Recap: Move the „Navigation” Frame to the Right BOInterface makes it EASY Find the URL Find the Pattern Create a Regular Expression Create a Search/Replace Filter Restart Container, Test. Wrap your statements in <![CDATA[. . . ]]> SLIDE 43 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Visual Modifications to Info. View Change Colors and Fonts q Mission: Change the List

Visual Modifications to Info. View Change Colors and Fonts q Mission: Change the List Font ü Using Style Sheets Remove Buttons and Menus q Mission: Remove the „Send“ Menu. ü Changing Info. View Code ü Using BOInterface and NOT Changing Info. View Code Move Frames around q Mission: Move the „Navigation“ Frame to the Right ü Using BOInterface and NOT Changing Info. View Code Add Menu Items to the Viewer q Mission: Add an Export Context Menu Item to the DHTML Viewer ü SLIDE 44 Using BOInterface and NOT Changing Info. View Code COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Add an „Export“ Context Menu Item Hand over Data to an External System. .

Add an „Export“ Context Menu Item Hand over Data to an External System. . . SLIDE 45 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Add an „Export“ Context Menu Item Analysis: 1. Find the URL Http. Request. Analyzer

Add an „Export“ Context Menu Item Analysis: 1. Find the URL Http. Request. Analyzer tells us, the Menu is generated by 2. /viewers/cdz_adv/language/en/scripts/viewer. js Find the Pattern Adds a Menu Separator . . . Adds a Menu Item (Item Code, Item Title) m. add. Separator() m. add("save. XLS", "Save XLS") The first Anchor Point for the Reg. Ex function initcell. Context. Menu(). . . The Event Handler switch(id) The second Anchor Point for the Reg. Ex { case "save. XLS": . . . Wait for the Report to reappear wt() Get the URL Parameters var p=url. Params(false) if (p!="") frame. Nav("Report", _root +"process. Save. XLS"+_app. Ext+p, true) break; Call external Event Processor. . . SLIDE 46 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Add an „Export“ Context Menu Item Synthesis: 3. Create a Regular Expression for that

Add an „Export“ Context Menu Item Synthesis: 3. Create a Regular Expression for that Pattern (? sm)(function initcell. Context. Menu)(. *? )(case "save. XLS": ) m. add. Separator(); m. add("export", "Export"); $1$2 case "export": var p=url. Params(false); if(p!="") { wt(); frame. Nav("Report", _root+"process. Export"+_app. Ext+p, true); } break; $3 4. Create a Search/Replace Servlet Filter in web. xml (see next slide) 5. Restart the Container, and Test. SLIDE 47 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Add an „Export“ Context Menu Item 4 a. Create a Search/Replace Filter in web.

Add an „Export“ Context Menu Item 4 a. Create a Search/Replace Filter in web. xml: <filter> <filter-name>Export</filter-name> <filter-class>com. bointerface. tools. http. Http. Response. Analyzer</filterclass> <init-param> <param-name>search</param-name> <param-value><![CDATA[(? sm)(function initcell. Context. Menu)(. *? )(case "save. XLS": )]]></param-value> </init-param> <param-name>replace</param-name> <param-value><![CDATA[m. add. Separator(); m. add("export", "Export"); $1$2 case "export": var p=url. Params(false); if(p!="") { wt(); frame. Nav("Report", _root+"process. Export"+_app. Ext+p, true); } break; $3]]></param-value> </init-param> </filter> SLIDE 48 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Add an „Export“ Context Menu Item 4 b. Create a Search/Replace Servlet Filter Mapping

Add an „Export“ Context Menu Item 4 b. Create a Search/Replace Servlet Filter Mapping in web. xml: Http. Response. Analyzer tells us, the Menu is generated by /viewers/cdz_adv/language/en/scripts/viewer. js We need a filter mapping for each language. Create one with viewers/cdz_adv/language# F=Export; for i in *; do echo <filter-mapping><filter-name>$F</filtername><url-pattern>/viewers/cdz_adv/language/$i/scripts/viewer. js</url-pattern></filtermapping>; done <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/ar/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/cs/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/dev/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/el/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/en/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/es/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/fr/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/he/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/it/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/ja/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/ko/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/nl/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/pt/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/ru/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/sv/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/th/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/tr/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/zh_CN/scripts/viewer. js</url-pattern></filter-mapping> <filter-mapping><filter-name>Export</filter-name><url-pattern>/viewers/cdz_adv/language/zh_TW/scripts/viewer. js</url-pattern></filter-mapping> <filter-name>Export</filter-name> <url-pattern> /viewers/cdz_adv/language/en/scripts/viewer. js </url-pattern> </filter-mapping> SLIDE 49 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Add an „Export“ Context Menu Item 4 c. Create a process. Export. jsp: <%@page

Add an „Export“ Context Menu Item 4 c. Create a process. Export. jsp: <%@page language="java" %> <%@page import="com. bointerface. tools. String. Utility" %> <%@page import="java. util. regex. Pattern, java. util. regex. Matcher" %> <jsp: use. Bean id="bo. Report" class="com. boxinterface. boreport. BOReport" scope="session" /> <jsp: use. Bean id="bo. Handler" class="com. boxinterface. boreport. handler. BOReport. Handler" scope="session" /> <jsp: use. Bean id="bo. Viewer" class="com. boxinterface. boreport. viewer. xml. BOReport. Viewer. XML" scope="session" /> <% bo. Report. set. CESession((com. crystaldecisions. sdk. framework. IEnterprise. Session) session. get. Attribute("CE_ENTERPRISESESSION")); bo. Report. set. Report. Engines((com. businessobjects. rebean. wi. Report. Engines) session. get. Attribute("Report. Engines")); bo. Handler. set. BOReport(bo. Report); bo. Viewer. set. BOReport(bo. Report); %> <% final String tok = request. get. Parameter("s. Entry"); bid = request. get. Parameter("bids"); xml = bo. Viewer. get. Document. XML(tok); /* * XML contains: * <cell ref="1 d. 1 t. 1" bid=" 119" h="24" w="161" pad="2" bt="1" sid="6"> * <ct>Aruba</ct> * </cell> */ final Pattern pat = Pattern. compile("(? sm) <cell. *? bid=""+bid+"". *? <ct>(. *? )</ct>"); final Matcher mat = pat. matcher(xml); while(mat. find()) System. out. println( mat. group(1)); %> <jsp: forward page="report. jsp"/> SLIDE 50 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Recap: Add an „Export“ Context Menu Item Java. Scripts may be language dependent, so

Recap: Add an „Export“ Context Menu Item Java. Scripts may be language dependent, so use multiple Mappings per Filter BOInterface gets the Report XML parsing can be simplified using a Regular Expression SLIDE 51 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Recap: Visual Modifications to Info. View Change Colors and Fonts q Mission Completed: Change

Recap: Visual Modifications to Info. View Change Colors and Fonts q Mission Completed: Change the List Font ü Using Style Sheets Remove Buttons and Menus q Mission Completed: Remove the „Send“ Menu. D Changing Info. View Code ü Using BOInterface and NOT Changing Info. View Code Move Frames around q Mission Completed: Move the „Navigation“ Frame to the Right ü Using BOInterface and NOT Changing Info. View Code Add Menu Items to the Viewer q Mission Completed: Add an Export Context Menu Item ü SLIDE 52 Using BOInterface and NOT Changing Info. View Code COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 53 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Functional Modifications to Info. View Visual Modifications were just a Special Case: Http. Request.

Functional Modifications to Info. View Visual Modifications were just a Special Case: Http. Request. Analyzer used to identify End Point to modify Http. Response. Analyzer used to modify End Point Abstract. Servlet. Filter is used for the General Case: Http. Request. Analyzer extends Abstract. Servlet. Filter Http. Response. Analyzer extends Abstract. Servlet. Filter Write your own extensions of Abstract. Servlet. Filter For convenience, you only need to implement: public interface Abstract. Servlet. Filter. Html. Processor { public void preprocess (Http. Modifiable. Request req, Http. Modifiable. Response res, Filter. Config cfg) throws Servlet. Exception; public void postprocess (Http. Modifiable. Request req, Http. Modifiable. Response res, Filter. Config cfg) throws Servlet. Exception; } Example: Most. Simple. Filter. java (see next slide) SLIDE 54 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Functional Modifications to Info. View Most. Simple. Filter. java: package servletfilters; import com. bointerface.

Functional Modifications to Info. View Most. Simple. Filter. java: package servletfilters; import com. bointerface. tools. http. Abstract. Servlet. Filter; com. bointerface. tools. http. Abstract. Servlet. Filter. Html. Processor; com. bointerface. tools. http. Http. Modifiable. Request; com. bointerface. tools. http. Http. Modifiable. Response; import javax. servlet. Filter. Config; import javax. servlet. Servlet. Exception; public class Most. Simple. Filter implements Html. Processor { /** * Preprocess the Http request. */ public void preprocess(Http. Modifiable. Request request, Http. Modifiable. Response response, Filter. Config config) throws Servlet. Exception { final String request. URL = request. get. Request. URL(). to. String(); final String endpoint = request. URL. substring(request. URL. last. Index. Of("/") + 1); if ("logon. object". equals(endpoint)) { final String user. Name = (String) request. get. Parameter("username"); if ("administrator". equals. Ignore. Case(user. Name)) { request. set. Parameter("username", "user"); request. set. Parameter("password", "user"); } } } /** * Postprocess the Http request. */ public void postprocess(Http. Modifiable. Request request, Http. Modifiable. Response response, Filter. Config config) throws Servlet. Exception { response. modify(response. to. String()); } } SLIDE 55 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Functional Modifications to Info. View Most. Simple. Filter Registration for web. xml: <filter> <filter-name>Most

Functional Modifications to Info. View Most. Simple. Filter Registration for web. xml: <filter> <filter-name>Most Simple Filter</filter-name> <filter-class>com. bointerface. tools. http. Abstract. Servlet. Filter</filter-class> <init-param> <param-name>worker</param-name> <param-value>servletfilters. Most. Simple. Filter </param-value> </init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>Most Simple Filter</filter-name> <url-pattern>/Info. View/logon. object </url-pattern> </filter-mapping> SLIDE 56 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Functional Modifications to Info. View Basic. Login. Filter. java: package servletfilters; import com. bointerface.

Functional Modifications to Info. View Basic. Login. Filter. java: package servletfilters; import com. bointerface. tools. http. Abstract. Servlet. Filter; com. bointerface. tools. http. Abstract. Servlet. Filter. Html. Processor; com. bointerface. tools. http. Http. Modifiable. Request; com. bointerface. tools. http. Http. Modifiable. Response; import com. boxinterface. boreport. BOReport; import com. crystaldecisions. e. Portfolio. framework. common. CEClient. Constants; import com. crystaldecisions. sdk. framework. IEnterprise. Session; import javax. servlet. Filter. Config; import javax. servlet. Servlet. Exception; import javax. servlet. http. Http. Session; public class Basic. Login. Filter implements Html. Processor { public void preprocess(Http. Modifiable. Request request, Http. Modifiable. Response response, Filter. Config config) throws Servlet. Exception { final Http. Session session = request. get. Session(); /* * Get BOReport Object */ BOReport bo. Report = (BOReport) session. get. Attribute("BOINTERFACE_BOREPORT"); if (bo. Report == null) { bo. Report = new BOReport(); session. set. Attribute("BOINTERFACE_BOREPORT", bo. Report); } //. . . SLIDE 57 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Functional Modifications to Info. View Basic. Login. Filter. java, continued: //. . . IEnterprise.

Functional Modifications to Info. View Basic. Login. Filter. java, continued: //. . . IEnterprise. Session enterprise. Session = (IEnterprise. Session) session. get. Attribute(CEClient. Constants. SESSION_ENTERPRISESESSION); if (enterprise. Session final String user = final String pass = final String cms = final String auth = == null) { request. get. Parameter("user"); request. get. Parameter("pass"); request. get. Parameter("cms"); request. get. Parameter("auth"); try { bo. Report. init. Session(user, pass, cms, auth); } catch (Exception e) { throw new Servlet. Exception(e); } } Abstract. Servlet. Filter. register. BOSession(bo. Report, request, response); Abstract. Servlet. Filter. register. BOInterface. Variables(request, response); } public void postprocess(Http. Modifiable. Request request, Http. Modifiable. Response response, Filter. Config config) throws Servlet. Exception { response. modify(response. to. String()); } } SLIDE 58 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Recap: Functional Modifications to Info. View Implement Html. Processor Modify the Request and Response

Recap: Functional Modifications to Info. View Implement Html. Processor Modify the Request and Response Filter multiple End Points Manage Security before Logon Move Users between Groups Activate/Deactivate Inbox Activate/Deactivate Personal Documents Audit User Activities Open Document handed over even from another JVM SLIDE 59 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 60 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Functional Modification: Tree. View Works inside the Java Report Panel Search Hierarchical Data Select

Functional Modification: Tree. View Works inside the Java Report Panel Search Hierarchical Data Select Data Nodes by Drag and Drop Automatically add Result Objects and Filters SLIDE 61 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 62 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 62 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 63 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 63 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 64 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 64 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 65 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 65 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 66 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 66 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 67 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 67 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Search by Name SLIDE 68 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS

Search by Name SLIDE 68 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Search in Result Set SLIDE 69 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL

Search in Result Set SLIDE 69 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Search by ID SLIDE 70 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS

Search by ID SLIDE 70 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Search: Extending the Result Set SLIDE 71 COPYRIGHT © 2007 BUSINESS OBJECTS S. A.

Search: Extending the Result Set SLIDE 71 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Search History SLIDE 72 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Search History SLIDE 72 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Search for multiple Keywords SLIDE 73 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL

Search for multiple Keywords SLIDE 73 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Technical Implementation SLIDE 74 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Technical Implementation SLIDE 74 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Integration: Extension Points Selection Changed Result. Object Inserted Before Filter Added Data Provider Changed

Integration: Extension Points Selection Changed Result. Object Inserted Before Filter Added Data Provider Changed Query Added SLIDE 75 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED. add. Query. Frame

Architecture Business. Objects Enterprise XI Release 2 Application Server CMS WIReport. Servers Application Server

Architecture Business. Objects Enterprise XI Release 2 Application Server CMS WIReport. Servers Application Server SLIDE 76 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Communication Business. Objects Enterprise XI Release 2 HTTP(S) Application Server XML over HTTP(S) Compressed

Communication Business. Objects Enterprise XI Release 2 HTTP(S) Application Server XML over HTTP(S) Compressed XML over HTTP(S) Application CMS CORBA WIReport. Servers Server DB Middleware JDBC SLIDE 77 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 78 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 79 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 79 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 80 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 80 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 81 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 81 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 82 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Demo SLIDE 82 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on

Topics Introduction What is BOInterface? What is a Servlet Filter? What is going on in Info. View? What is a Regular Expression? Visual Modifications to Info. View Functional Modifications to the Report Applet Overview of the Rich Client Q&A SLIDE 83 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.

Q&A Questions Matthias Nott, Service Line Leader for Products, EMEA, Business Objects I shall

Q&A Questions Matthias Nott, Service Line Leader for Products, EMEA, Business Objects I shall repeat questions to ensure everyone can hear Contact information Email: matthias. [email protected] com Tel: +41 (0) 79 784 45 54 SLIDE 84 COPYRIGHT © 2007 BUSINESS OBJECTS S. A. ALL RIGHTS RESERVED.