Thursday, September 4, 2008

New Browsers and Oracle EPM

Whenever there are new browser technologies I am interested to see how our existing EPM products will do in them.  Right now there are 2 large browser betas first IE8 and second Google Chrome.  Both are nice browsers with rich application support but they are both betas so there are plenty of bugs.  I tried IE8 first because IE is the most popular browser and it usually does a nice job with our EPM products.

imageI was able to open Oracle EPM workspace in IE8 and logged in just fine.  The explorer screen showed up and I was able to select and open a report.  Opening the report caused a Java script error that messed up my navigation from that point on.  The script errors caused frustration but it was useable.

image

clip_image002[5]I tried the same thing with Chrome and got nowhere fast.  I got a gray screen when trying to load the logon page and it just kept trying to load...  I tried 9.3.1 to see if the older stuff was any better and it let me login and get to the explorer screen but I could not navigate.

clip_image002[7]

So the only conclusion I can come to is that for EPM products stick to supported browsers and use the betas to play with other web sites. 

Monday, August 4, 2008

JavaFX Preview SDK

In previous posts I have attempted to show how RIA’s (Rich Internet Applications) can be used for delivering EPM and BI data to end users.  Until now I have focused mostly on Microsoft’s Silverlight and have gotten some grief.  Well  now I have another option; JavaFX has launched their preview SDK and it is time to see how it compares and what the user experience will be like. 

For this test I plan to see If I can create some Essbase ‘gadgets’ that can be used in the browser and then dragged to the desktop (cool feature shown in a JavaFX video).  Comment if you have ideas and stay tuned for posts on my progress.

Tuesday, July 15, 2008

System 9 Gadgets

A while ago I created some System 9 gadgets for the Windows Vista sidebar.   The project went well but when Hyperion was bought by Oracle it kind of got lost and forgotten.  Well I found the source while going through some old files and I decided to dust them off.  I removed the old branding and made sure they worked with the newest version of System 9 (11.1). 

image

image 

There are 2 gadgets, one that lets you browse the System 9 repository and another that stores favorite reports that you set in the first.  The gadgets are great for the user that opens the same key reports on some sort of periodic basis.

I think these are pretty useful and some users may want them.   Next steps are to figure out how to post them and to see if I can quickly convert them to Google gadgets.  I will update the blog when I get them posted.

Friday, July 11, 2008

I Guess I was Wrong

About a month or so back I did a post on Silverlight and that post lead to a comment on iPhone support.  At the time I completely punted on my response saying that the mobile market will have to narrow before you will see any sort of BI applications for the phone.  Well I am officially eating crow and admitting it.  Here is a press release from yesterday…

Oracle Announces Oracle® Business Applications for iPhone Available on Apple App Store

Ok, Ok I was wrong, and I admit it but the real news here is that this helps make my case about User Experience being a key driving point for future BI applications.  If users get this great experience on their phones they will also expect it on their desktop or in their browser.

Tuesday, July 1, 2008

Silverlight and EPM

So we went on a mission to see if we could build our first Rich Internet Application for BI and EPM and here is what we did and what we found out.

We used Silverlight for our first try.  We selected Silverlight over other RIA technologies because; one we knew C# and two there is a pretty good beta available for Silverlight.  We are considering other technologies but wanted to start with what we could use and get running the fastest.

We started with lots of research and came up with two projects.  The first project consisted of building what we called a Provider DLL (thanks Mike) that talked HTTP and XML to the existing Smart View back-end.  This gave us access to the Planning and FM repositories (Forms, Business Rules and Calculations) and access to Essbase (Data and Calculations).  The second project was the UI, this was done with a mix of Expression Blend and Visual Studio.  This turned out pretty awesome and was very easy but we did find that there is not a whole lot out there as far as controls go for BI and EPM.  We had to build all of our own controls.  Here are some screen shots.

image

image

image

The really cool part about the application is the async nature of RIA’s.  Basically everything is async and this really makes for a rich and crisp UI experience…  No browser lockups, fast operations, run multiple operations at once, etc.  Overall RIA’s seem to have a place in more than just consumer applications and we will continue to explore the possibilities of applying this technology to BI and EPM.  Stay tuned for more on this topic.

Another Site Specific Browser

I got a comment pointing me in the direction of another site specific browser Bubbles.  This is a Windows SSB that has many of the same features as the ones I spoke about in my earlier post on this topic.  This one also has some cool extension capabilities that enhance the SSB experience.  For example you can get an extension for Yahoo mail and you will get System tray notifications when you get new mail.  I applied this to Workspace and every thing worked great, here is a screen shot:

image

The extensions could be powerful in the context of BI and EPM.  The first thing that comes to mind is notifications like the ones in Smart Space or some how tie into the notifications in Workspace.  For now I just like having Workspace always running in my system tray.

Wednesday, May 28, 2008

Site Specific Browser for EPM Applications

So for the past few posts I have been talking about blurring the lines between desktop and web applications and the technologies that will get us there. And in my first post on this topic I mentioned a technology called 'site specific browsers'. Site specific browsers are just that, it is a browser window dedicated to one site or in the case of BI and EPM a web based application. The installed application gets a shortcut on the user's desktop or the start menu and is a simple click away from running. You can read more about site specific browsers and how Mozilla Labs describes their product 'Prism'.


So in doing some searches I found that there are 2 major options with site specific browsers, Fluid and Prism. Fluid is Mac only so for my testing I used Prism. I decided to throw a couple of BI applications at it and see what I thought of the user experience. (I ignored minor bugs or issues as this stuff is still not official product). So I put Workspace (9.3.1) and OBI (10.1.3.3.2) in Prism and played around a bit. Here are some screen shots:


Workspace with a planning form loaded.



OBI with the default Paint Dashboard.

Both applications worked pretty well out of the box and it was nice not to have all the clutter and overhead that a browser carries with it. It was also nice to have the applications launch from a shortcut on the desktop. Some of the things I didn't like were as follows:


  1. There were times where it would have been nice to have navigation (ability to go back). This is not an issue with Prism itself, it was the fact that the application was designed to live in a browser.
  2. This does not change the application experience that much. (I did not expect it to) Basically if you are happy with the application experience this will improve on it. If you hate the way the application works then this will do little.

Overall this is a very cool concept but you are simply making web applications run as if they were desktop applications. I will use Prism for things like Google Mail or Yahoo Mail but at the end of the day, from a user experience perspective, I still prefer Thunderbird or Outlook for email. It would be cool to see if an RIA (Rich Internet Application) developed in Flex or Silverlight can run in a site specific browser…

Tuesday, May 27, 2008

More on JavaFX

OK I will be totally honest I don't have a whole lot on this one, simply because it is the newest entry in the market. It does look promising from the videos I have seen and what is being said about platform support sounds great. I just hope we can avoid all the issues I have seen over the years with JRE and version compatibility… I have signed up to preview the SDK and when I get a hold of it I will be sure to share more. I do want to share one cool feature I have seen on video. It is the ability to start with the application in the browser and then drag it to the desktop. Here the video that shows this:



The feature I am talking about is about 2:10 into the video and I think this will be a key differentiator that the other RIA (Rich Internet Application) players will quickly try to copy.

Wednesday, May 14, 2008

Silverlight 2.0

In my post on desktop and web convergence I said I would spend some time on each of the technologies I mentioned, so here we go. I will start out with Silverlight only because for the past 2 years I have been immersed in c# and smart clients so it was a pretty simple jump. Don't expect that after reading this post you will be an expert in Silverlight as I have only scratched the surface. I figure the best way to start is to list the pros and cons; here are some things I think fall into the pro category:

Language Support

Silverlight allows development and extensions using a verity of programming languages including JavaScript, C# and VB.Net. This will help ease the learning curve for existing developers familiar with these languages. Silverlight also has a Dynamic Language SDK that allows developers to communicate with the .NET libraries included with Silverlight. This makes it open to many other language possibilities like Python and Ruby.

IDE availability:

This is often time a con for newer technologies but for Silverlight this is a pro, it's integrated into Visual Studio 2008 it has a separate design environment of its own (Expression Studio). Studio is truly for the designer and allows for UI driven creation of animations and overall user experience. Having great IDE's for both the designer and the developer is a big plus.

Platform and browser support:

Silverlight supports many platforms and browsers. This is different than one might expect from Microsoft but Silverlight supports IE, Safari, and Mozilla and will run on both Window and the Mac. Plus there is now support for a growing list of mobile devices.

User Experience Support:

Silverlight has a wide variety of features that support a rich user experience, this combined with the power of Expression Studio make for crisp UI's. Features include; media support, panel and canvas support, animations with timelines, AJAX support, etc.

Here are some things that I considered cons:

Limited .Net Framework:

This one can go either way but for me it is a con. Silverlight comes with a limited set of the .Net framework assemblies (to keep the client install small) and for developers that are used to desktop development this will be difficult. For others new to the .Net world they this will not be a con.

Separate IDE's for Design and Development:

I am always looking for that one IDE that does it all and I tend to cross the line between designer and developer so switching in and out id Visual Studio and Expression Blend was not so smooth. I wish they would just stuff Blend into Visual Studio but I am sure many disagree on this.

Keep in mind that Silverlight 2.0 is currently in beta and like any other beta software you should use and install with care. Here are some cool Silverlight samples.

Wednesday, May 7, 2008

Another Desktop/Web Technology

Just as I was thinking about what technology I should start with from my last post another company decided it was time to hop on this desktop/browser train. Sun announced JavaFX at the JavaOne conference yesterday. JavaFX is the latest entry into this space and this should help to fuel innovation but will add to the confusion when trying to decide what platform to develop on. This technology along with the others has many compelling features like rich user experience, browser and desktop capabilities, and it's cross platform.

Stay tuned next week when I start to dig into each of these technologies...

Thursday, May 1, 2008

Desktop and Web Convergence

This is not a new topic but it is certainly new for BI and EPM. For the past 5 or so years the focus has been on providing users with functionality while attempting to have zero or limited client deployment. In other words build your front end to run in a browser, preferably with no plugin's (HTML and JavaScript only). Unfortunately this has become more difficult as users have demanded more interactivity and performance from clients. They get this from the consumer application space; while in ITunes they use cover flow to select a song or while checking stocks with a vista gadget the chart animates open and closed. Really we could just select a song in a list view and see the stock chart in a popup window but that would not be cool nor would it differentiate the application from a competitors'. Let's face it innovative user experience is hot! Lucky for us there is now some great technology to help us meet the needs of our end users while still allowing for simple application deployment. Here are a few:

Google Gears

Adobe Air

Microsoft Silverlight

XBAP –XAML Browser Application

Microsoft ClickOnce

Site specific browsers like Fluid and Prism

To try to cover these in one blog entry would not do any of them justice, so stay tuned…

Wednesday, April 16, 2008

Blog Name Change...

You may have noticed a subtle change in the name of the blog. It has changed from 'Oracle EPM Smart Space Technology' to 'Oracle EPM and BI Technology'. This is because many of our current endeavors are moving beyond a single product and we want to blog about them. This small change will allow for more posts on more topics. Anything EPM, BI and the technologies that power them are now fair game.

Thanks!

Tuesday, March 18, 2008

Tip: Using a Non-Standard Port for the Collaborator Database

In Smart Space 9.3.1, one of the common “bumps” in the installation road is when you try to use a non-standard port for the Collaborator database. This is because the configuration utility does not properly update the wildfire.xml file for this situation. To remedy this mistake, simply find the wildfire.xml file and look for the following line:

jdbc:jtds:sqlserver://serverName/databaseName;appName=jive

Change the above line by adding the port number (i.e. 14330) after the serverName like so:

jdbc:jtds:sqlserver://serverName:14330/databaseName;appName=jive

Monday, March 3, 2008

Guest Blog: Smart Space from an end-user’s perspective

I had the pleasure of being an early user of Smart Space while Mike, Matt and the team were building it.

I’ve been using software since the days of Wordstar, dBase II, and Visicalc (on CP/M before DOS no less). Using Smart Space was not like using software. This was an environment I was experiencing. I think Matt’s vision of “I just want to ride a bike” is spot on.

Smart Space is:

Intuitive: I didn’t know I was doing enterprise performance management, data mining, query & analysis – I thought I was making decisions (I further didn’t know I was making those decisions based on judgments & knowledge learned from information that came from data!). Gadgets solve problems.

Social: my favorite part of using Smart Space was collaborating with other users. I could slice & dice data and quickly see an anomaly (variance outside of a threshold, for example), and instantly ping a colleague about it, share my view with her and record the decisions/actions taken as a result.

Personal: my desktop was role & function specific, that is it was set up (by me) to only contain those gadgets, workflow, and points of view that had to do with the role I played. So it should be with enterprise performance management: finance cares about the balance sheet, Operations cares about the supply chain, sales cares about revenue and pipeline, and so on. Executives care about summarized results and trends, managers care about tracking targets and variance, and analysts care about cause and effect. And, in an “EPM enlightened” organization, people across all functions care about cross-functional things. They would have gadgets that let them get to revenue growth, operational efficiency, customer satisfaction, and so on.

Ready at hand:” Smart Space is always-on EPM. It’s always there, always ready, and becomes an extension of my work – like the phone, IM, e-mail, and coffee.

Expandable: there is a fairly large (and growing) community of EPM and BI devotees: customers, consultants, vendors, analysts. These folks are candidates for contributing (dreaming-up & developing) the library of gadgets available to get your job done. I just thought of one while typing this (I’ll let you know what it is as soon as I get a developer to write it for me, any volunteers?)

This is pretty exciting stuff, and I can’t wait to see what Matt & Mike have in store for us in ’08.
-Ron
Ron Dimon
Business Foundation
EPM Advisory

Monday, February 25, 2008

Desktop and Gadget Sharing


One cool feature that is often overlooked in Smart Space is its ability to share desktops and gadgets with other users. To help understand this feature you need to understand what I am talking about when I use the term 'desktop'. I am referring to Smart Space desktops not Windows desktops. Smart Space Desktops are simply a collection of gadgets and services that a user has self-assembled. The user can have many of these 'sets' of gadgets that they can switch between throughout their working day. Back to the sharing part… Sharing these desktops with fully configured gadgets is a powerful feature. Imagine a financial analyst creating a desktop full of useful gadgets and passing it to everyone in their group, or an IT administrator creating a set to push out to the executives.


There are 2 major ways to do this. The first I call the 'thumb drive' method; the user creates a set of gadgets on a Smart Space desktop and then saves that set to a file (archives it). This file can be passed around in email, on thumb drives, or even on floppy disks (does anyone have one of these?). The second I call the 'push' method, in this scenario the user creates the set of gadgets and then tells Smart Space what user should get it (uses the collaboration engine). The users will then get a toast message (taskbar notification) that they have been passed and new desktop and then they can install it.


Either way is great for sharing content and will help customers deploy a unified application across their enterprise.

Monday, February 11, 2008

Personal Substitution Variables

A cool feature of the Smart Space SDK is the ability to create a set of global Smart Space variables that can be used by any gadget. These are essentially name value pairs that are called LocalProperties in Smart Space.

I used this feature in my latest batch of Essbase gadgets. I wanted the ability to set the Time dimension member for all of my Essbase query gadgets in one place and not have to go to each gadget to change this member. I knew that one option would have been to use the Essbase Substitution Variable functionality found in the Essbase product. But I did not want to make this a variable for all Essbase users which is what the Essbase Substitution Variable would provide.

I created a simple MyVariables gadget that allows the user to create personal variables.




These variables can then be used by other gadgets. In the case of the Essbase gadgets, I implemented a special syntax whereby any member name that is preceded by two ampersands (&&TODAY) represents a local variable. When constructing the query, the Essbase gadget then makes a call to Smart Space whenever it encounters a member name with this syntax to get the value of that variable. It replaces the syntax (&&TODAY) with the variable value (“20080823”) and issues the query.

This is another example of the great new benefits of having Smart Space running on your client. It is the analytical footprint that will allow for powerful new capabilities such as creating your own personal substitution variables.


public String getPreference(String key)
{
return Services.PreferenceManager.LocalProperties.Load(key);
}

public void savePreference(String key, String value)
{
Services.PreferenceManager.LocalProperties.Save(key, value);
}

public void deletePreference(String key)
{
Services.PreferenceManager.LocalProperties.Remove(key);
}

public void getPreferences()
{
listViewVars.Items.Clear();
try
{
String[] sPrefKeys = Services.PreferenceManager.LocalProperties.GetAllKeys();

ListViewItem item = new ListViewItem();

foreach (String sPrefKey in sPrefKeys)
{
String sPrefValue = getPreference(sPrefKey);
item = this.listViewVars.Items.Add(sPrefKey);
item.SubItems.Add(sPrefValue);
}
this.Refresh();
}
catch (Exception e1) { }
}

I Just Want to Ride a Bike…

I came across an article in Hemispheres Magazine (UAL publication) about this time last year. The article was about cycling, and last February I was just getting back into cycling after a long break from it, so I was intrigued. Aside from getting back into cycling I was also buried in everything Smart Space attempting to build and launch this new product. I was shocked how much this article related what I was doing in software to what Shimano was planning to do for cycling. The article started off talking about how the Lance Armstrong era of cycling was over and the wave of high end bike sales was coming to an end in the U.S. So Shimano went off to figure out how they could get people to again love the sport of cycling and therefore buy more products. The conclusions they found is where all the similarities came. They found that people had very fond memories of cycling and really enjoyed the idea of it but could not wrap their head around the complexity of what cycling has become. Things like 10 speed cogs, carbon forks, STI shifters, and clip less pedals had started to overwhelm the average cyclist. The basic conclusion was that people just wanted to ride a bike; simplicity. This is what I really related to; the goals of Smart Space are in line with this, end users want simplicity. Many end users don't want to worry about connection settings, indexes, caching, dimensionality, etc. they just what to know how their travel expenses will impact the department's budget for this quarter or get the status of their sales pipeline. I saw that the key for Shimano and Smart Space was in simplicity. So whenever I think about a feature or plan out a new gadget I think about the idea that people just want to ride a bike.

Here is the article so you can decide for yourself if the concepts really relate:

http://www.ideo.com/pdf/Hemispheres_2007-02.pdf

Thursday, January 31, 2008

What is the difference between a gadget and an application?


When talking to people about Smart Space I hear this question come up all the time. I have found that most people have very different views on this topic so take what I have to offer as merely another opinion. In my earlier post I talked about the definition of a gadget and stated the following:


Gadgets (or Widgets) are mini applications that expose key content (bits of data) or features generally from a larger (full) application and they deliver these features or data in a simple and visually pleasing manner.


So when I read this I key in on some key concepts that help me to differentiate between an application and a gadget. First, I wrote that gadgets are "mini applications", and to me this means that they are smaller than an application and, at times, related to a full application. When I say smaller I mean smaller in two ways, smaller in physical footprint and smaller in the screen real estate that the gadget takes up. Second, gadgets focus on "key content"… "or features" where an application will have many features and tons of content. Lastly the gadget should present this information in "a simple and visually pleasing manner". In other words when a gadget is giving me information I should not have to guess at what it is telling me, the presentation of the data is just as important as the data itself.


Here are a few examples:


In Smart Space there is a nice search gadget that lets me search for content in Hyperion Reporting and Analysis (System 9). It is very simple, just enter a search term and get results. This is the kind of search I do 99% of the time and that is why this makes a great gadget. If I want to get more advanced I could open the Hyperion Reporting and Analysis application in my browser and navigate the search page to perform the search with a number of other key options. The gadget takes up very little room on my desktop and covers most if not all of my Hyperion Reporting and Analysis search needs, but the application is there when I need it.


In our beta I wrote a notepad gadget that is great for taking quick notes and having them always visible on my desktop but I would not want to write this blog entry using it. For writing emails, document or blog posts I want to use an application like Word that is full of great features for writing.


In the Smart Space Key Contacts gadget I can limit my list of users that I communicate with, down, from the long list that includes people I have seldom contact with, to a much more focused list. At a glance I can see who is available to chat, and with a single click I can start my IM application. In this case the gadget provides visual indication of my key contacts that are available and launches me from the gadget experience to the application experience.


Here is an example from the consumer gadget world and this should drive my point about presentation of the data. I will use images to demonstrate this:


Both deal with system monitoring but the gadget gives me the basics and at a glance tells me what I need to know. (My CPU is fine but memory consumption is a bit high) If I want features and details then I go ahead and open the application.


To conclude I want to keep things simple, so when creating a gadget don't try to satisfy every use case otherwise you will have an application on your hands, make sure that you are building something a user wants to run on their desktop all the time, and make sure what you present has the right design for a user to 'get it' at a glance. I have found that these same Ideas can be applied to almost any application and I think about these concepts whenever I am building a new gadget.

Sunday, January 27, 2008

Sending A Message - Using Essbase Custom Defined Functions

In my last post, I talked about how the messaging capabilities contained within the Smart Space product can be leveraged in non-traditional ways. One of the best ways is by using the Smart Space Java API.

I am a big fan of the best OLAP database on the planet: Essbase. Essbase has a great feature where a developer can write their own custom Java functions that can then be called by the Essbase calculator. I have always wanted to have the ability from within an Essbase calculation script to notify Essbase users that a calculation has completed. The combination of the Smart Space messaging Java API and the Essbase custom defined function (CDF) will now allow me to fulfill that dream.

When writing to the Smart Space Java API, there are a number of JAR files that are required from Smart Space (inform.jar, smack.jar, smackx.jar, smackx-debug.jar and log4j.jar). There are four main operations in the Smart Space API: connecting, disconnecting, creating the message and sending the message. As of today, both a discussion message (a message that uses the discussion dialog) and a notification message (a message that uses the Smart Space toast dialog) can be sent using the Java API.

This 9.3.1 code sample shows the three Smart Space messaging operations exposed in the proper format to be used as an Essbase custom defined function.

package com.hyperion.essbase.cdf.smartspace;

import com.hyperion.smartspace.inform.info.*;
import com.hyperion.smartspace.inform.impl.InformImpl;
import java.util.List;
import java.util.ArrayList;

public class SSMessage {
private static InformImpl inform = new InformImpl();
private static String sServer;

public static void main(com.hyperion.essbase.calculator.Context ctx,String[] args)
{
sendMessage(args[0],args[1],args[2]);
}

public static void connect(String sColabServer, String sUser, String sPassword) {
inform = new InformImpl();
try
{
System.out.println("Trying to connect");
sServer = sColabServer;
inform.connect(sServer, 5222, sUser + "\\40native\\20directory@" + sColabServer, sPassword);
}
catch (Exception e1)
{
System.out.println("Error: " + e1.getMessage().toString());
}
}

public static void disconnect() {
try
{
System.out.println("Disconnecting");
inform.disconnect();
inform = null;
}
catch (Exception e1)
{
System.out.println("Error: " + e1.getMessage().toString());
}
}

public static void sendMessage(String sType, String sToUser, String sMessage) {
MessageType mType = new MessageType();

try
{

if (sType.toUpperCase().equals("DISCUSS")) {
mType = MessageType.Chat;
} else if (sType.toUpperCase().equals("MEET")) {
mType = MessageType.GroupChat;
}
else
{
mType = MessageType.Headline;
}

List recipients = new ArrayList();
recipients.add(sToUser + "\\40native\\20directory@" + sServer);

//send created message
if (inform.isConnected() == true)
{
//create jabber message with recepients list and type
Message message = inform.createMessage("t", "t", recipients, mType);
//create body
message.setBody(sMessage);

inform.sendMessage(message, recipients);
System.out.println("Message sent");
}
else
{
System.out.println("Message not sent");
}

}
catch (Exception e1)
{
System.out.println("Error: " + e1.getMessage().toString());
}
}
}

Once this code has been compiled and registered with Essbase as a CDF, the functions can then be accessed from with an Essbase calculation script. This example script sends a discussion message for every value in the database where there is a negative variance for January Sales using the Sample Basic Essbase database. It also shows how to send a notification message to any user.

Set UpdateCalc Off;Set ClearUpdateStatus After;

RUNJAVA com.hyperion.essbase.cdf.smartspace.SSConnect
"servername"
"essbaseBOT"
"password";

RUNJAVA com.hyperion.essbase.cdf.smartspace.SSMessage
"DISCUSS"
"mlarimer"
"The following items currently have a negative variance to budget for Jan Sales:" ;


Fix (@LevMbrs("Market",0),@LevMbrs("Product",0),"Jan","Actual")

"Sales" (IF("Variance" <>
@JechoString(@Name(@CurrMbr("Market")));
@JsendMessage( "DISCUSS", "mlarimer", @JgetConcatenate(@LIST(@Name(@CurrMbr("Market"))," -> ", @Alias(@CurrMbr("Product"))," = ", @JgetString("Variance"))));
ENDIF);
EndFix

RUNJAVA com.hyperion.essbase.cdf.smartspace.SSMessage "NOTIFY" "mlarimer" "one" ;
RUNJAVA com.hyperion.essbase.cdf.smartspace.SSMessage "NOTIFY" "mlarimer" "two" ;
RUNJAVA com.hyperion.essbase.cdf.smartspace.SSMessage "NOTIFY" "mlarimer" "three" ;

RUNJAVA com.hyperion.essbase.cdf.smartspace.SSDisconnect;


Note: This example is very simplistic as it uses a hardcoded username and password in the script itself. There are a number of ways to use variables that can replace the username and password and thus not have them hardcoded in the script.

I am really excited about the future of a product like Oracle EPM Smart Space. It will enable developers to build cool new solutions that have never been possible to build in the past.


Wednesday, January 23, 2008

Publishing Gadgets

In the world of Gadgets and Widgets getting a new gadget is as simple as downloading and installing one from a Gadget site, message board or blog. This is great for making a framework pervasive but would wreak havoc on the complex IT communities that implement EPM or BI solutions. Security is an obvious concern but also the idea of maintaining and understanding what users have installed becomes impossible in a scenario like this. When designing Smart Space we often argued this topic wanting to keep idea of gadgets open and pervasive while maintain control for customers. This is how the idea of Gadget publishing came to be.

Gadget publishing gives an administrator the ability to control what gadgets his or her users can download and install. It also allows the administrator to recommend gadgets to users giving administrators some assurance as to what gadgets are installed on a user desktop. Gadget publishing is done using the same technology we use to deploy and maintain the Smart Space client (often referred to as the framework); Click Once. Going into details on Click Once would warrant an additional post, so I will keep it short for now. Click Once helps to provide a safe and secure environment for users to download and install the gadgets while providing automatic updates. The gadgets are also digitally signed with a certificate so users will be assured of their safety when installing.

I am a simple guy so I will put this is simple terms. When Smart Space is installed in an environment the administrator essentially runs a 'store' where they will maintain an inventory of gadgets or other components. The users can go to this store and download from the 'stores' inventory with confidence.

Here is how it is done. The administrator will first have to install the Smart Space Administration Utility. This utility will probably only be installed by one or two people and does require administrative privileges to install. The installation files for this get laid down when the Smart Space server is installed and can be usually accessed from the following URL: http://[ServerName]:17080/SmartSpace/Installations/AdminUtility/Setup.msi. (For installation and setup help check out the Administrator's Guide for Smart Space) Once installed and configured you should be able to open the administration utility and get to the Sign & Publish tab.

From this tab you can do the following; publish or remove the framework (Smart Space client), publish or remove gadgets, download already published gadgets, sign gadgets, etc. Most of the time you are going to just sign and publish gadgets; but if this is a first time installation you will probably sign and publish the framework and the gadgets. In either case the process is the same but it is key to make sure the framework is properly published otherwise users will not be able to get any gadgets. The utility should be pretty self explanatory and there is plenty of help in the Administrator's guide but I will run through the steps for publishing a gadget.

  • From the Sign & Publish tab click Add.
  • Browse for a framework or gadget file to publish. (.SmartSpaceGadget or .SmartSpaceFramework)

    These files are compressed files with all the bits needed for the Click Once installations and deployments. An administrator will find the framework and default gadgets in the directory where they installed the Administration Utility (usually C:\Program Files\Oracle EPM\Oracle EPM Smart Space Administration Utility).
  • Once on the list from the action dropdown verify that it says Publish.
  • Click Apply.

This will move the gadget file to the server and place all the bits in the correct location so that users will see it as available to them in the Smart Space palette on their client.

To summarize, gadgets can be a great end user tool but in the world on enterprise software there needs to be some level of control.

Friday, January 18, 2008

Sending A Message - Intro

One of the cool things about using Smart Space is that you immediately become a part of the community of Smart Space users. You get this for free because the Smart Space client has built in messaging capabilities.

This opens up a wealth of opportunities for one to communicate with other Smart Space users in both traditional and non-traditional ways.

With Smart Space, you can chat with one or more users using the Smart Space Discussion dialog or send a toast notification to one or more users. (A toast is that small message box that appears and then disappears in the lower right hand corner of your screen.) For example, one could discuss a financial report with another Smart Space user by simply using the Discussion dialog to send the user a link to the desired report.

A non-traditional way messaging is utilized by the Smart Space system is in the publishing of a Smart Space desktop to one or more users. Publishing is a topic for another day so I will not elaborate for now. But in a nutshell, if you think that you have a great desktop full of gadgets and content, you can “publish” this desktop to other Smart Space users using the messaging infrastructure built into Smart Space. Those users would get a message that a new desktop has been published and prompted to install it.

Another non-traditional use of messaging within Smart Space is to use the messaging API (both .NET and Java). I have successfully used the Smart Space Java messaging API to create an Essbase Custom Defined Function (CDF) that will send a message to any user from within an Essbase calculation script. This could be used to notify a set of users that a calculation has completed. It could also be used to send a message to a user that something in their data needs attention such as a variance or missing data.

The “Always On” nature of the Smart Space client is a fantastic benefit of having an analytic client installed on your desktop. With this messaging footprint, the sky is the limit when it comes to new possibilities for enhancing your BI/EPM experience.

Stay tuned for more on this subject…

Tuesday, January 15, 2008

Build Your First Smart Space Gadget

Whenever I start a new development endeavor I almost always look to sample code to get started, and it is even better if it is a simple sample. So with that I will attempt to give you my version of a ‘Hello World’ sample for Smart Space gadgets. Changing things up a bit I will make this a notepad sample as this is pretty common in the Gadget/Widget world.

For this sample I am using Smart Space 9.3.1 and Visual Studio 2005 and will be writing my code in C# (sorry VB’ers). I have the Smart Space client installed on my machine and I have the Smart Space SDK Wizard installed. The SDK Wizard is what enables you to create gadget projects in Visual Studio. Let’s get started:

First launch Visual Studio and select New Project from the File menu. You will get the following new project dialog. In this dialog select the root node for the language you plan to develop in. Smart Space has templates for Visual C# or Visual Basic. Select the gadget template, type a name for your gadget solution and click the ‘OK’ button. Remember the project name will end up being the name of the gadget that your users will see, so select something easy like DeskNotes or Notes instead of something like gadget1.



Once you click OK the project will get created and you will be presented with the following dialog. From this dialog you simply need to give the gadget a namespace. This is used to identify the gadget in the xml file associated with the gadget. (currently named gadgets.xml)



Once you click finish on the dialog you can begin writing code or interacting with the project.
To keep this sample simple we are going to use the designer in Visual Studio to layout our gadget. For this sample, layout should be simple, all we really need is a textbox.


  1. In the project double click the user control named Gadget and you will be put in design mode.

  2. In the toolbox select the textbox control and add it to the user control.

  3. Edit the properties of the textbox to make it like work like a note pad. Here is what I changed:

    • Set Multiline to True
    • Set Dock to Fill
    • Set BackColor to Yellow
    • Set BorderStyle to None

  4. Resize the gadget to a starting size that you want when the user opens the gadget.



From here you can run your project to test it out and see your first gadget in action. Please take note that we have not written one line of code!



Now let’s add a bit of code to make this gadget more useful. For starters lets add menu items to change the color of the notes. You can add this code on almost any event for the gadget but I usually use the load event for the gadget user control.

//create the commands to be added to the default menu
ICommand commandYellow = CommandHelper.CreateCommand("Yellow", "Yellow", "Yellow");
ICommand commandBlue = CommandHelper.CreateCommand("Blue", "Blue", "Blue");

//add events for the commands
commandYellow.Executed += new EventHandler(commandYellow_Executed);
commandBlue.Executed += new EventHandler(commandBlue_Executed);

//add the commands to the default gadget menu
this.Services.Appearance.Menu.AddCommand(commandYellow);
this.Services.Appearance.Menu.AddCommand(commandBlue);

This will add two sub menus under the default gadget menu named Yellow and Blue. You can also add these to the toolbar with a slight variation in the code.

//add the commands to the gadget toolbar
this.Services.Appearance.Toolbar.AddCommand(commandYellow);
this.Services.Appearance.Toolbar.AddCommand(commandBlue);

All that needs to be added is the code to execute when the events are fired on these new commands. Here is a sample for one.

private void commandBlue_Executed(object sender, EventArgs e)
{
this.textBox1.BackColor = System.Drawing.Color.Blue;
}

Now the user can decide what color they want their note to be. Now there is one last thing to do to make this gadget really useable; save the text and color of the note so it will be restored when the user switches Smart Space desktops or restarts Smart Space. As a developer this is something you can handle on your own but is can get pretty tricky because of gadget and desktop instances in Smart Space. Because of this there are some methods and interfaces that will make this easy.

To do this start off with a new public structure with variables to store the settings, and you need to then create a local variable of that type.

public struct GadgetPreferences
{
public String noteText;
public Color noteColor;
}

private GadgetPreferences preferences;

When closing the gadget add code to save your preferences. This is usually done in the ‘stop’ event for the gadget but can be done at anytime.

public override void Stop()
{
preferences.noteText = this.textBox1.Text;
preferences.noteColor = this.textBox1.BackColor;

//save the preferences for the gadget
this.SaveGadgetPreferences(preferences);
}

When loading the gadget you will want to restore these preferences if they exist. Again this can be done in many places but I usually do them in the load event for the gadget user control.

//get the preferences for the gadget
preferences = this.LoadGadgetPreferences();
this.textBox1.Text = preferences.noteText;
this.textBox1.BackColor = preferences.noteColor;

When loading the preferences you may need to account for the fact that the preferences are blank or null. I often have some if statements or try catch blocks to assist when loading the preferences.

Well there you have it, a fully functional notepad gadget. You may decide that you want to expand on the concept and allow for more colors, use a RichTextBox control, support various fonts, use images for the notes background, etc.

Friday, January 11, 2008

Smart Space: What is it?

Smart Space is a radical departure from the traditional BI/EPM application. For years the BI/EPM market has been focused on providing more and more features. These features are added to backend services bringing us to the ‘system’ we have today. However most of these features are simply added to existing user interfaces. Over time these interfaces, though packed with features, have become difficult to use, underperforming and nearly impossible to customize. It seems that the market has shifted the focus away from analytic consumers toward the power users which is narrowing the reach of BI/EPM solutions.

With Smart Space, we have taken a completely new approach. It is simple and elegant. We leverage the power of the entire Windows client (including the browser) to deliver a rich end user experience leveraging the powerful back end EPM processes in place today. Very few are taking this approach today and it clearly differentiates Oracle from any other BI/EPM vendor.

So, let’s look at Smart Space in a little more detail…

Smart Space creates a BI/EPM environment within the Windows desktop. This is done by installing a small, lightweight engine that is tightly integrated with Windows. The installation uses a technology called ClickOnce which is simple with automatic update capabilities. Let’s face it, customers expect any client software to be easy to install and self maintaining.

Smart Space is then “Always On”, taking advantage of the power of the desktop with its ability to multitask. Because Smart Space is “Always On”, the user connects to the BI/EPM system one time and never has to connect again. This combination of a single login and being “Always On” is a perfect example of a simple enhancement that will make BI/EPM software much more useable and responsive.

Instead of creating one large application with hundreds of features, Smart Space breaks down an application into its functional pieces. These subsets of functionality are then presented to the user in the form of gadgets. The users are then free to choose the functionality they need and organize their gadgets according to their workflow.

Smart Space also enhances the analytical experience by introducing simple collaboration into the BI/EPM environment. The collaboration capabilities of Smart Space allow for “in context” discussions about the BI/EPM content that is both secure and auditable.

Smart Space will change the way people use BI/BPM software. Instead of using BI/BPM only when necessary, Smart Space allows a wide variety of knowledge workers to easily integrate this valuable BI/BPM information into their everyday desktops.

Thursday, January 10, 2008

Gadget/Widgets, What are They and Why Do I Need Them?

I hear these terms a lot now a days when talking about software, and just a year or so ago I would of thought a widget was a generic term for a product and a gadget was some new electronic device. Not anymore, these terms have quickly taken on new meaning and have a place in the world of delivering information. The bad thing about these terms is that everyone uses them a little different and there are already variations on the terms. So I am going to give you my take on these terms as I see if and how they apply to Business Intelligence (BI) & Enterprise Performance Management (EPM).

First let’s try and make things simple and assume that the terms Widget and Gadget are synonyms and understand that I usually use the term Gadget. So in this post when you see the word ‘gadget’ you can replace it with ‘widget’ in your head if you so desire. My simple explanation for why there are two terms is because more than one company decided to use these ‘things’ and they have decided to differentiate. Short explanation Apple used the term ‘Widgets’ so Microsoft decided to use the term ‘Gadgets’. So that brings us to the key players in the space, I am sure there are more but I see four key players on the consumer side of things.

These companies all have gadgets and the frameworks that run them but many of them have different variations. These variations fall into three general categories. Desktop, web, and mobile with each of the above companies playing in one or all of the three categories. Even with all of these variations I think I can sum up in general what the purpose of these things are:

Gadgets (or Widgets) are mini applications that expose key content (bits of data) or features generally from a larger (full) application and they deliver these features or data in a simple and visually pleasing manner.

Examples:
Data (Weather) – The larger application is your weather person or weather.com, these people and sites have lots of great data points but all I really care about is current conditions and tomorrows conditions. I really don’t have a desire to understand how isobars or barometric pressure impacts the weather. Thus a gadget.


Feature (Play Music) – The larger applications are iTunes, WMP, Zune, Songbird, Music Match and many others, these are cool full applications packed with rich features but I just want to play a song or playlist most of the time. Thus the gadget.

You can apply this concept to almost any feature you use most often or data you look at on a regular basis. The variations of desktop, web or mobile do not really matter the definition holds in any case.

Now that we know what gadgets are lets think about if we need this new application class in our life. Here I think the answer is simple to arrive at. Just ask yourself if you have ever opened a program for a single feature or piece of information? If yes then explore the possibility that others are doing it. I doubt that very many people can say no to this question. I used to do it every morning before going on my runs. I would go to weather.com and look up the forecast for my zip code and filter through all the other features to get the temp so I could decide to how to dress for the run. Now I just glance at the gadget and I can tell if I need a hat or not.

So now we know what they are and we think that they have at least some utility but can we apply these concepts to BI and EPM? This is the very question among others we had to answer when we were creating Smart Space. We came to the conclusion that BI and EPM companies where building products and adding features based on the needs of their most active users. This makes for really good, feature rich applications that some user may find offer too much. So we starting playing with BI and EPM concepts and applying them to gadgets and it worked. Here is an example:

Reporting – Over the years we have found that many users look at the same reports over and over again. Maybe it is the monthly closing process and there is a ‘book’ of reports the accounting department reviews, or a sales representative is looking at pipeline data every day. This is the feature. The larger application would be the BI tool used to present this data or reports like Oracle Answers, Financial Reporting, or Publisher. So why not let the user pick the reports or report pieces that they feel are most useful for their tasks and have them always open and ready for them. Thus a gadget.

Smart Space Smart Book Gadget:

Because the concept was so easily applied we decided to make gadgets one of the many key features in Smart Space. The gadgets in Smart Space are complemented by a bunch of other great features that make the gadgets easy to use and lend to the overall user experience.

With Smart Space gadgets we decided to not use an existing gadget framework or engine for a number of reasons. Above I used the word ‘consumer’ when I talking about existing gadget frameworks or engines and this is because to date they have been focused on the mass market and have not applied the concept to businesses or business applications. For example they have lots of gadgets for weather, stock, fantasy football, cpu meters, and even countdown to the OC. The point is that these are great, I use them, my kids have used them, but they have not crossed over to business application and the needs of business. These special needs are what differentiates Smart Space gadgets from consumer gadgets. Some of the key needs are as follows.

Gadgets are just one part of the overall user experience and there are many other features needed to enhance or complement the gadgets. For example Smart Space has a top notch Windows shell integration that allows user to easily add BI and EPM content to their gadgets. This shell integration presents application content in an enterprise repository as if it were a flash drive. Consumer frameworks do not offer these features.

Deployment and control came up as a major issue and we spoke with customers. IT organizations managing a rollout of BI application do not want their users to just go and download gadgets. Also IT wants control over who develops the gadgets that the users can install. Administrators also told us that they need this framework to be able to install on restricted user desktops. With the consumer frameworks the control and deployment differences were show stoppers. Smart Space allows administrators to publish gadgets to a ‘gadget store’ for user to select from and the users can download and install the client and new gadgets with no administrative rights.

So in summary, whatever you call it, gadgets or widgets they are a key part of computing for the consumer space and this trend will continue to move into the business space. I challenge everyone to share thoughts and ideas on how you would apply these concepts to a business application.

Wednesday, January 9, 2008

Welcome Post from Matt

Hey this is my first blog post of any kind and I am pretty psyched up to get this thing rolling. A few years ago I would have told you that I am anti-blog and would have asked ‘what the heck is a blog anyways?’ but it seems the market has proven me wrong on this topic so why not join. This blog is going to deal with Smart Space and its surrounding technologies. I hope to have posts that deal with many topics including but not limited to the following.
  • Tips and tricks for smart space users.
  • Gadget samples and ideas.
  • Development kit samples, code snippets and tricks.
  • My views on delivering BI or EPM to the end users.

The reason I say ‘not limited to’ is because I, on occasion, have been known to rant about a few topics like the Bears, American Idol and my Guitar Hero band ‘Temporal Lobe’ so don’t be surprised if you see a post or two on these topics.

OK back on course. I want to start this post with something relevant for the early adopters of this product so I will start with a tip for developers or administrators. When you install the Smart Space client on a user’s desktop it will get laid down in some funky directories and understanding what the layout is and why can be helpful for Smart Space developers and administrators.

Where does it get installed?
Smart Space client gets installed using a technology called ClickOnce and therefore this technology dictates it installation location. You will find the install among other things in the following location.

Windows Vista - C:\Users\[username]\AppData\Local\Apps\2.0
Windows XP – C:\Documents and Settings\[username]\Local Settings\Apps\2.0


Once you are in this directory you will find different parts of the application in various different sub directories. You may also find other ClickOnce deployed applications here. The important thing is to understand the key locations. Here are the directories I most often find myself in:

Desktop, Gadget and Application preferences - \Data\[weird random string]\[weird random string]\[weird random string that starts with smar..tion]\Data\Preferences

Ex. Data\1H2AP0TZ.ENR\ON0QYBGW.60P\smar..tion_9bec160018cb55d5_0009.0003_3c33ae78baedec6c\Data\Preferences

This will vary from machine to machine so sometimes it is best to just drill into data and look around or do a search on the file ‘ApplicationPreferences.xml’ under the Data directory. Once you are here you can drill into the canvases directory to get the Desktop and Gadget preferences. Please do not mess with these file unless you really know what you are doing or are willing to reinstall because you can screw things up. If you go up one level from there to the Data directory you will find a History folder. This is where you can find the messaging logs for the product.

Ex. Data\1H2AP0TZ.ENR\ON0QYBGW.60P\smar..tion_9bec160018cb55d5_0009.0003_3c33ae78baedec6c\Data

Log Files - \[weird random string]\[weird random string]\[weird random string that starts with smar..tion]\Logs

Ex. R4MAR924.8AM\BXGAMVH9.C9Q\smar..tion_9bec160018cb55d5_0009.0003_3c33ae78baedec6c\Logs

If you have trouble finding these files just go to the installation directory (above) and search on the file named ‘SmartSpace.log’ or go to the Smart Space Control Panel and click the Logs icon.



Binaries – The binaries are simply one level up from the logs directory and you should rarely if ever be in this directory. Any binaries you might need for gadget development will ship with the Gadget Development Kit Wizard.

Ex. R4MAR924.8AM\BXGAMVH9.C9Q\smar..tion_9bec160018cb55d5_0009.0003_3c33ae78baedec6c\Logs

Why does it get laid down in these weird directories?
The only thing I can really say is that it gets structured this way because these are the rules for ClickOnce. If you want more details on why ClickOnce does this you should research this technology. Using this technology provides all kinds of good things to the Smart Space product like safe and secure deployments, infrastructure for automatic updates, and my favorite installation on a restricted user’s desktop (no administrative rights) so because of this we deal with the seemingly odd directory structure.

Well that concludes my first post and I hope it helps at least one person! If you are reading this post and have no idea what I am talking about then I invite you to find out more about Smart Space by visiting the Smart Space OTN page http://www.oracle.com/technology/products/bi/epm/smart-space/index.html

Later!s