Monday, January 28, 2008

Xcelsius Templates

Here is the full collection of Xcelsius templates from this blog. You can always access the templates using the top navigation bar.

Xcelsius Connectivity

Passing Data from a Parent to Child SWF -Passing data from a parent Xcelsius file to a nested SWF.
Source Files

Connect Xcelsius to RSS/XML- Point and click connection to XML using XML maps.
Source Files


Xcelsius Logic Examples

Dynamic Xcelsius Ranking Logic- Dynamically rank information in your dashboard using logic.
Source Files

Dynamic Excel Lookup -An Excel logic-based approach to looking up multiple rows from a selection.
Source Files

Calculating the Current Quarter in Xcelsius- Use basic logic to calculate the current quarter within your SWF.
Source Files


Xcelsius Workarounds and Best Practices

List Builder Best Practices- Making the best of the Xcelsius list builder component.
Source Files

Multi-Series Graph Drill Down- Workaround for using drilldown feature with a multi-series chart.
Source Files

Special Characters in a Table- Using trend arrows and other special characters in a table or scorecard view.
Source Files

Calendar Component- How to leverage the calendar component dates.
Source Files

Create a Reset Button - A simple work around for re-setting a range of cells.
Source Files

Embed a SWF in Excel - Step by step instructions for embedding an Xcelsius model back into Excel.
Source Files

Friday, January 25, 2008

Xcelsius CEWebServiceURL and Life Cycle Management

The final part on my dissection of the Xcelsius OBJECT is a variable called CEWebServiceURL. This Flash Variable is used specifically with the Live Office component and overwrites the “Live Office Web Services URL.

Regardless of what you enter inside the input box shown above, when the SWF is loaded inside of Infoview, the Live Office connector component will dynamically consume a webservice URL originating from the CEWebServiceURL flash variable. In this case, you do not need to do any configuration of Flash Variables for this to work, similar to CELogonToken.



What does this mean for Life Cycle Management?
For quite some time, I have heard Xcelsius users complain about the inability to bind the Live Office component URL, and how that makes life difficult for migrating Xcelsius objects between BOE repositories. The good news, is with the CEWebServiceURL, the bindable URL is no longer needed. *Note, that this option is only available with BOE XIR2 SP2 and up.

What about QaaWS?
The bad news is a Web Service connector is not configured by Xcelsius to consume the CEWebServiceURL. The good news, is that since the URL for this component is bindable, you can easily leverage the CEWebServiceURL to provide the system name. I have mocked up a simple Excel sheet that evaluates the CEWebServiceURL, then matches it to the correct system name. For those of you not using SP2, you could just as easily use the CELogonToken, since it also contains the server name. All you need to do is declare and bind the Flash Variable inside of Xcelsius then use similar logic that you can download here.

Another Option for QaaWS
If you always plan on using your Xcelsius dashboard inside of BOE, you can drop the system name and port number from the URL. This will work, assuming you don’t use a reverse proxy or some non-standard application server configuration. I have used this method many times since it alleviates the need for any fancy logic or consumption of Flash Variables.


I hope that this 3 part series has helped you in gaining better understanding of how Xcelsius generated SWFs leverage basic Flash variables and BOE.

Monday, January 21, 2008

Xcelsius Single Sign on with CELogonToken

This week we are going to talk about a session token that an Xcelsius dashboard (SWF) consumes when it is loaded inside of Infoview or Dashboard Builder (Business Objects XIR2). The CELOGONTOKEN is the variable name that is assigned to a session token that BOE creates when you successfully login.

How does Xcelsius consume this token?
As you notice, inside of the <OBJECT> tag, there is a Flash Variable called CELOGONTOKEN. When BOE renders the HTML page, it dynamically inserts the current logon token as the CELOGONTOKEN. Any SWF that uses a Query as a Web Service or Live Office connection will automatically consume the CELOGONTOKEN Flash Variable.



How is the CELogonToken used during SWF runtime?
SWF files that contain a QaaWS or Live Office connectors will automatically search for the presence of a logon token when the connector is executed. With each transaction from the dashboard to BOE, this token is passed back to BOE. If the SWF does not detect a CELOGON token, (when it is loaded outside of Infoview or Dashboard Builder) it will display a login dialogue box.

So now that we have de-mystified the magic that is Xcelsius, let’s think about how we can leverage this knowledge. First, we use Flash Variables and the login token to solve the single sign on issue for multi-layer or nested SWF files within a dashboard. The second use is an Xcelsius dashboard using single sign with BOE outside of Infoview. While I have seen several implementations of this, unfortunately I do not have anything that I can share at this point. Hopefully those of you who are BOE SDK gurus run with this new understanding of how Xcelsius consumes the logon token. If anyone is interested in working together to put something together, I am more than interested to provide the Xcelsius knowledge…

Later this week, I will finish up this 3 part analysis of the Xcelsius <OBJECT> with the CEWebServiceURL and how it helps to improve life cycle management.

Wednesday, January 16, 2008

Xcelsius Flash Object Basics

by Ryan Goodman

The first and most obvious observation that you make when reviewing this example code is the presence of all attributes twice; one set within the <OBJECT> and one set within the <EMBED>. <OBJECT> is used for Internet Explorer to support the Flash player, which is an Active X control. <EMBED> is for other browsers that support other Flash Player installs. There is a wealth of content on the internet about these methods and using attributes, but I will move on to the 2 most important one to us: SWF source file path and Variables.
Below is the code I will be elaborating on…



SWF Source Path
In this case I am referring to the physical location where your SWF file reside, relative to the HTML page that it is loaded inside. In this scenario where we are using of BOE XIR2, they use a relative path using “opendoc/documentdownload” which uses the same syntax as opendoc.jsp. The document download syntax declares an iDocID to identify the SWF source file. You can re-use this code when loading Multi-Layer (Parent/Child)dashboards inside of BOE.



Variables
An Xcelsius generated file is capable of consuming variables from HTML using the Flash Variables feature. When loading flash variables you want to separate each variable with an “&” symbol, and individual values should be comma separated. If you look at the code below the syntax is slightly different in the <OBJECT> from the <EMBED>. The next tow blog articles will discuss not only how the SWF leverages these variables, but how you can take this new knowledge further when you plan your dashboard project.

Monday, January 14, 2008

Xcelsius List Builder Best Practices

Recently I worked on a project where we were required to use the list builder. I usually shy away from this component for 2 reasons…

  1. It takes up a lot of screen real estate. While this is easily solved using dynamic visibility this is the minor issue.

  2. The clumsy user experience. When you make selections, you are required to click Update Filters to commit your selections. In this user control there is no need to save the user from them selves. Because you have to manually commit the filters it only causes headaches for end users.

  3. There is no ignore end blanks.
Here is how I went about addressing these issues to achieve the following result..


Download Source Files

There are a few things you can do to help reduce how much screen real estate takes up. The first is to replace the Add and Remove labels and replace them with ">"and "<". The second is to simply reduce the size of all labels.

There is no way to trigger this functionality, but I did come up with some method of notifying the status of their filter usage. In this case, I simply put a label on top of the list builder stating how many filters have been selected. It serves as a reminder to click the update filters button. Hopefully one day we will see this component with the ability to auto-trigger the update filter functionality and save some screen real estate.

For the absence of ignore end blanks, there is nothing that you can do.

Monday, December 10, 2007

Xcelsius Graph Drilldown

When using the chart drill down capability inside of Xcelsius, there is a limitation prohibiting the configuration of a multi-series chart to insert into the same range. In other words… Xcelsius will not allow a user to click on bars from 2 different series to trigger 1 action, which can be a problem.

To invoke this problem, enable drilldown, select an insert-in cell, change the series dropdown, and select the same insert in cell. You will get an error message that reads the following:

“Insert In Range overlaps with other series’ Insert In Rage/ Please select non-overlapping Ranges for each series.” There is a workaround to get this working using the “Insert Series In:” option. By capturing the series that is currently selected, we can perform a lookup to retrieve the correct data.


Download Source Files

Tuesday, October 30, 2007

Xcelsius Design with a Few Clicks: Skins

by Ryan Goodman

I have seen hundreds of dashboards that all look similar for 1 reason…People who use Xcelsius don’t want to spend a lot of time customizing the look and feel for their dashboard. So what happens when you assemble components on a screen and want your dashboard to take on a different look from the standard default Xcelsius look and feel?

Within Xcelsius there is a concept of skins, which simply changes the look and feel without effecting any functionality you have created within your dashboard. To change the skin, go to View>Change Skin. You are then presented with several skin names that will globally change how all components look. Note that there is a default color scheme for every skin, which can be changed manually or through Styles (View>Change Style.)

I will give a brief overview of each skin, and my personal opinion of how and when I use each one…


Aqua
Aqua is a skin that emulates the Apple skin used for web browsing and an older version of the operating system. Aqua uses a consistent blue color scheme, which people seem to like, but sometimes the gradients and visual effects can also be a little too much to visually digest. I like using this one sometimes because the out of the box backgrounds layer together nicely.


Aero
Aero is a aviator type of theme that shows the most when you look at the gauge component. The charts and components all have extra gradients and glare effects which may be a little over the top for some, but the default color scheme is vibrant and pleasing to the eye.


Elan
Elan is one of the original Xcelsius skins which use a somewhat monotone blue color scheme. I see Elan and Aero as similar skins, because there are limited out of the box backgrounds, and the graphs look similar.


Graphite
Graphite was released with version 4.5 and has a nice collection of backgrounds that can be mixed and matched. While the default colors are dark, the skin itself has nice looking charts. The only problem I find with this skin is some of the transparency for dropdown components.


Halo
Halo is by far my personal favorite simply because it does not have all of the gradients featured in the other skins. I am a minimalist at heart, so this is as close as I get with Xcelsius, but still gives some depth within the selector controls. Most people hate the default lime green color but, once I change that, it always looks clean.