<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Wade Dorrell's MSDN blog</title><link>http://blogs.msdn.com/b/wadedor/</link><description>Intelligence is for everyone</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Lighter stuff: Office 2010 ribbon customizability</title><link>http://blogs.msdn.com/b/wadedor/archive/2010/09/02/lighter-stuff-office-2010-ribbon-customizability.aspx</link><pubDate>Thu, 02 Sep 2010 23:30:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10057516</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=10057516</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=10057516</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2010/09/02/lighter-stuff-office-2010-ribbon-customizability.aspx#comments</comments><description>In Office 2010 you can personalize the ribbon. It’s very easy to do . (And it has the benefit of not being accidentally customized, and easily reset, which was not the case with the toolbars in Office 2003 and prior .) Because “High Importance” and “Low...(&lt;a href="http://blogs.msdn.com/b/wadedor/archive/2010/09/02/lighter-stuff-office-2010-ribbon-customizability.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10057516" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/user+experience/">user experience</category><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/office/">office</category></item><item><title>Thanks for a great SharePoint Conference!</title><link>http://blogs.msdn.com/b/wadedor/archive/2009/10/23/thanks-for-a-great-sharepoint-conference.aspx</link><pubDate>Fri, 23 Oct 2009 22:25:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9912287</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=9912287</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=9912287</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2009/10/23/thanks-for-a-great-sharepoint-conference.aspx#comments</comments><description>&lt;p&gt;Thanks for attending SharePoint Conference 2009 &amp;amp; talking with us about your scenarios, troubles, what you’d like to see us turn the ratchet on, and what you love. I talked with a slice of you about PerformancePoint Services, but also the whole insights ecosystem for SharePoint 2010… Excel Services, Reporting Services, Visio Services, and more.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Packed house at our “Creating dashboard as easy as 1, 2, 3” PerformancePoint Services session" border="0" alt="Packed house at our “Creating dashboard as easy as 1, 2, 3” PerformancePoint Services session" src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/ThanksforagreatSharePointConference_E6F6/image_8553fde1-d15b-4173-b6b0-9b883d1460ca.png" width="632" height="416" /&gt;&amp;#160; &lt;br /&gt;&lt;strong&gt;Above:&lt;/strong&gt; &lt;em&gt;Packed house at our “Creating dashboard as easy as 1, 2, 3” PerformancePoint Services session. Sorry about the room acoustics… we got a late room upgrade… you can get the video recording &lt;/em&gt;&lt;a href="http://www.mssharepointconference.com/pages/members/sessiondetails.aspx?sid=SPC222"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;&lt;em&gt; sometime next week.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I love conferences because they get me so fired up. Jason said I took on the attributes of a certain CEO for a few moments when talking about &lt;a href="http://www.powerpivot.com/"&gt;PowerPivot&lt;/a&gt;. Yeah, I think I might have. What fires me up is that you love it, you came to a conference to fill your brain with it, and we’re putting the bits in your hands soon (November.) I think that’s worth a dance or two.&lt;/p&gt;  &lt;p&gt;Want to know more about features of PerformancePoint Services for SharePoint 2010? Keep your eyes on the &lt;a href="http://blogs.msdn.com/performancepoint/"&gt;PerformancePoint Services product team blog&lt;/a&gt; for a series of posts about each feature.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912287" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/performancepoint/">performancepoint</category><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/presentation/">presentation</category><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/sharepoint+2010/">sharepoint 2010</category></item><item><title>More to come…</title><link>http://blogs.msdn.com/b/wadedor/archive/2009/09/25/more-to-come.aspx</link><pubDate>Sat, 26 Sep 2009 02:55:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9899758</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=9899758</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=9899758</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2009/09/25/more-to-come.aspx#comments</comments><description>&lt;p&gt;I’ve left this blog mostly untouched for the past 6 months. Here’s what I’ve been up to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Tightening rivets on Office 2010 wave products. The ship’s looking good!&lt;/li&gt;    &lt;li&gt;Going through real world scenarios using the latest bits. You probably know Microsoft calls this ‘dogfooding’. I dogfood daily. I do PerformancePoint Services, and SharePoint of course, but also Outlook, Excel, Word, and PowerPoint. I’ve also hit InfoPath, SharePoint Designer, and Access in the last few months. By the way, Excel 2010 is looking really great. (Have you seen &lt;a href="http://blogs.msdn.com/excel/archive/2009/09/23/easy-and-even-fun-data-exploration-introducing-excel-2010-slicers.aspx"&gt;slicers&lt;/a&gt;?)&lt;/li&gt;    &lt;li&gt;We’re getting ready for Microsoft SharePoint Conference in October. Here’s a &lt;a href="http://www.mssharepointconference.com/pages/SessionSneakPeak.aspx"&gt;sneak peak of a few of the sessions; PerformancePoint Services is in the mix&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;We’re working with TAP customers on deployment of early bits.&lt;/li&gt;    &lt;li&gt;We’re getting people aligned for the next wave.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There hasn’t been much that’s PerformancePointy I can blog about… but I’ll be back soon!&lt;/p&gt;  &lt;p&gt;In the meantime, some ideas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Read through &lt;a href="http://blogs.msdn.com/performancepoint"&gt;http://blogs.msdn.com/performancepoint&lt;/a&gt; to make sure you miss a note about the in-market functionality&lt;/li&gt;    &lt;li&gt;Think about &lt;a href="https://spc2009.dynamiceventsreg.com/"&gt;going to the SharePoint Conference&lt;/a&gt; if you can.&lt;/li&gt;    &lt;li&gt;Get ready for PerformancePoint Services for SharePoint 2010!&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9899758" width="1" height="1"&gt;</description></item><item><title>Free Software Development &amp; Tech Event in Boise</title><link>http://blogs.msdn.com/b/wadedor/archive/2009/02/17/free-software-development-tech-event-in-boise.aspx</link><pubDate>Tue, 17 Feb 2009 19:36:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9427824</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=9427824</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=9427824</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2009/02/17/free-software-development-tech-event-in-boise.aspx#comments</comments><description>&lt;p&gt;Boise Code Camp 2009 is a free, popular (400+ registrants last year) and educational conference on a Saturday (March 28) down at Boise State University. Speakers from our community, and a few respected north-westerners, cover software development, IT, business, and a few very geeky topics. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Application development in the cloud, lots of jQuery, Mindstorms &amp;amp; Wiimotes, software &amp;amp; copyright law, agile methodologies…&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Code Camp’s looking for speakers! If you’ve an idea, and an hour to present on the 28th, you’ve got a month to prepare… but first please &lt;a href="http://www.boisecodecamp.org/SessionsandSpeakers/tabid/60/Default.aspx"&gt;look at current sessions and consider submitting now&lt;/a&gt;. My SharePoint BI colleague, Greg, is going to talk about iPhone application development, “from idea to $” as I pitched it to him.&lt;/p&gt;  &lt;p&gt;For more information, head to &lt;a title="http://www.boisecodecamp.org/" href="http://www.boisecodecamp.org/"&gt;http://www.boisecodecamp.org/&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9427824" width="1" height="1"&gt;</description></item><item><title>PerformancePoint just got sharper</title><link>http://blogs.msdn.com/b/wadedor/archive/2009/01/23/performancepoint-just-got-sharper.aspx</link><pubDate>Fri, 23 Jan 2009 21:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9373198</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=9373198</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=9373198</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2009/01/23/performancepoint-just-got-sharper.aspx#comments</comments><description>&lt;P&gt;We announced an update to the Microsoft BI roadmap today.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/winme/0901/35195/Guy_Weismantel_BI_Announcement_MBR.asx" mce_href="http://www.microsoft.com/winme/0901/35195/Guy_Weismantel_BI_Announcement_MBR.asx"&gt;The video by Guy Weismantel, Director of Microsoft BI&lt;/A&gt; is the authoritative source on the change at the moment, and I expect there will be press release/FAQ at &lt;A href="http://www.microsoft.com/presspass/default.mspx" mce_href="http://www.microsoft.com/presspass/default.mspx"&gt;Microsoft PressPass&lt;/A&gt; (I don’t see it as of 2:20 Mountain Time). The mother load of discussion sources, if you can step carefully, are on FriendFeed:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://friendfeed.com/search?q=performancepoint&amp;amp;who=everyone href="http://friendfeed.com/search?q=performancepoint&amp;amp;who=everyone" mce_href="http://friendfeed.com/search?q=performancepoint&amp;amp;who=everyone"&gt;http://friendfeed.com/search?q=performancepoint&amp;amp;who=everyone&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Basically you’ll hear we’re moving the scorecard, dashboard, and analytics capabilities we ship today into SharePoint. If you know that product, you probably saw that one coming. You’ll also hear that the planning product is no more. Maybe you saw that one coming, maybe you didn’t. There are some good investments that team’s made that I think you’ll see soon enough.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9373198" width="1" height="1"&gt;</description></item><item><title>Dashboard Deployment Without Folders</title><link>http://blogs.msdn.com/b/wadedor/archive/2008/12/05/dashboard-deployment-without-folders.aspx</link><pubDate>Sat, 06 Dec 2008 03:39:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9180841</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=9180841</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=9180841</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2008/12/05/dashboard-deployment-without-folders.aspx#comments</comments><description>&lt;p&gt;When deploying a dashboard to a document library from PerformancePoint 2007 Dashboard Designer, Dashboard Designer creates each dashboard page .aspx file in a folder named the same as the dashboard:&lt;/p&gt;  &lt;p&gt;&lt;img title="Picture of document library showing folder holding pages" style="display: inline" height="261" alt="Picture of document library showing folder holding pages" src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/DashboardDeploymentWithoutFolders_F1B3/image_cc8cabfb-c488-48f3-9ca4-31a3e1aea29a.png" width="485" border="0" /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;But what if we don’t want folders?&lt;/p&gt;  &lt;h3&gt;The “Create View” Way&lt;/h3&gt;  &lt;p&gt;I created a view for &lt;em&gt;“Insurance Dashboards”&lt;/em&gt; with the “Show all items without folders” setting turned on, and set it as the default:    &lt;br /&gt;    &lt;br /&gt;&amp;#160;&lt;img title="image" style="display: inline" height="98" alt="image" src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/DashboardDeploymentWithoutFolders_F1B3/image_469c6425-7aa3-4b0e-8148-0e1c1868d8ac.png" width="465" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;The folders still exist, but users visiting the document library get a flattened list of all pages by default.&lt;/p&gt;  &lt;h3&gt;The “SharePoint Workflow” Way&lt;/h3&gt;  &lt;p&gt;With SharePoint workflow we can remove folders as dashboards are deployed.&lt;/p&gt;  &lt;p&gt;First, I create a document library for the purpose of deployment. I called it “&lt;em&gt;Insurance Dashboards - Deploy&lt;/em&gt;”.&lt;/p&gt;  &lt;p&gt;Next, I create a new workflow in SharePoint Designer that copies any item created in “&lt;em&gt;Insurance Dashboards – Deploy&lt;/em&gt;” to “&lt;em&gt;Insurance Dashboards”.&lt;/em&gt; (Serendipitously, the folder structure won’t be maintained by the copy… )&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img title="image" style="display: inline" height="516" alt="image" src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/DashboardDeploymentWithoutFolders_F1B3/image_0ff4409c-40d3-4ae0-aac4-cee9c976b947.png" width="551" border="0" /&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;When deploying a dashboard in Dashboard Designer I target “&lt;em&gt;Insurance Dashboards – Deploy” &lt;/em&gt;instead of “&lt;em&gt;Insurance Dashboards&lt;/em&gt;”:&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="display: inline" height="201" alt="image" src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/DashboardDeploymentWithoutFolders_F1B3/image_20fbc2e8-413d-47af-8045-254d16634a8f.png" width="570" border="0" /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;The workflow makes a copy of each page to &lt;em&gt;“Insurance Dashboards”&lt;/em&gt;, leaving the folder structure behind.&lt;/p&gt;  &lt;h3&gt;Thoughts on The “SharePoint Workflow” Way&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;We might add a step that deletes the deployed after the copy occurs.&lt;/li&gt;    &lt;li&gt;How might we handle page collisions? (We might rename, do a forced overwrite, or go into a holding pattern when this happens. I haven’t tried any of these things yet.)&lt;/li&gt;    &lt;li&gt;This pattern might be useful for other things, such as altering the content of some dashboard pages, particularly to add a custom web part. This is also something I haven’t tried, but if anyone has, please let me know!&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Any other thoughts? Please leave comments here on the blog.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9180841" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/performancepoint/">performancepoint</category><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/workflow/">workflow</category></item><item><title>Treemap + Silverlight =&gt; Gasp!</title><link>http://blogs.msdn.com/b/wadedor/archive/2008/11/24/treemap-silverlight-gasp.aspx</link><pubDate>Tue, 25 Nov 2008 01:25:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9139241</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=9139241</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=9139241</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2008/11/24/treemap-silverlight-gasp.aspx#comments</comments><description>&lt;p&gt;From &lt;a title="http://blogs.msdn.com/gpde/" href="http://blogs.msdn.com/gpde/"&gt;http://blogs.msdn.com/gpde/&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Microsoft’s Global Product Development team in Europe recently completed its Treemap control for visualizing hierarchical data, seen below.&amp;#160; You can read more about it here and leave your feedback. &lt;/p&gt;    &lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/gpdepix/images/9074704/original.aspx" /&gt;&lt;/p&gt;    &lt;p&gt;If you are excited by what you see us doing, check us out at &lt;a href="http://www.joinmicrosofteurope.com/"&gt;www.joinmicrosofteurope.com/&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can skip a few steps straight to the demo here: &lt;a title="http://www.joinmicrosofteurope.com/TreemapDemo/" href="http://www.joinmicrosofteurope.com/TreemapDemo/"&gt;http://www.joinmicrosofteurope.com/TreemapDemo/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Wow!&lt;/p&gt;  &lt;p&gt;Putting this in the context of PerformancePoint, remember that you can get a similar visualization in PerformancePoint dashboards by using ProClarity Analytics Server’s “Performance Map” visualization.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9139241" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/proclarity/">proclarity</category><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/user+experience/">user experience</category><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/silverlight/">silverlight</category><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/heatmap/">heatmap</category><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/performance+map/">performance map</category></item><item><title>PerformancePoint Monitoring + Silverlight: KPIs and Scorecards</title><link>http://blogs.msdn.com/b/wadedor/archive/2008/11/17/performancepoint-silverlight-interoperability-monitoring-web-service.aspx</link><pubDate>Mon, 17 Nov 2008 20:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8927163</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=8927163</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=8927163</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2008/11/17/performancepoint-silverlight-interoperability-monitoring-web-service.aspx#comments</comments><description>&lt;P&gt;PerformancePoint Monitoring doesn't have as robust a prescription as &lt;A href="http://www.ssblueprints.net/sharepoint" mce_href="http://www.ssblueprints.net/sharepoint"&gt;Silverlight Blueprint for SharePoint&lt;/A&gt;, but yes, PerformancePoint Monitoring &amp;amp; Silverlight can be used together.&lt;/P&gt;
&lt;P&gt;PerformancePoint dashboards are SharePoint web part pages, so web parts or master pages using Silverlight for menus, visualization, charting, or any other thing, are right at home in (or surrounding) a PerformancePoint dashboard.&lt;/P&gt;
&lt;P&gt;Another integration point is the web service &lt;EM&gt;PmService.asmx&lt;/EM&gt;. You can learn more about this service through &lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.performancepoint.scorecards.server.pmservice.aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.performancepoint.scorecards.server.pmservice.aspx"&gt;PerformancePoint SDK documentation of its client proxy&lt;/A&gt;. In this article we’ll call the &lt;EM&gt;GenerateView&lt;/EM&gt; method of this service to retrieve and work with a scorecard/KPI data set, and visualize that data in Silverlight 2. &lt;BR&gt;&lt;/P&gt;
&lt;H3&gt;The Objective&lt;/H3&gt;
&lt;P&gt;Here’s a simple scorecard containing everyone’s favorite KPI, “Freight Cost Below 29”.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG title=image style="DISPLAY: inline" height=48 alt=image src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/PerformancePointSilverlightinteroperabil_DAC0/image_fe1a4d42-2739-4301-aeff-b178913f9560.png" width=197 border=0 mce_src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/PerformancePointSilverlightinteroperabil_DAC0/image_fe1a4d42-2739-4301-aeff-b178913f9560.png"&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We’ll render this same data lovingly within a Silverlight 2 application that looks like:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;IMG title=image style="DISPLAY: inline" height=29 alt=image src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/PerformancePointSilverlightinteroperabil_DAC0/image_a3bbe2a3-509f-44b0-bd1f-4e2be3f128ee.png" width=98 border=0 mce_src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/PerformancePointSilverlightinteroperabil_DAC0/image_a3bbe2a3-509f-44b0-bd1f-4e2be3f128ee.png"&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;If a scorecard contained additional cells, we could obviously do a lot more… a value trend sparkline, or multiple KPI slices in a ticker-style UI… but we’ll start with a simple &amp;lt;Button/&amp;gt;.&lt;/P&gt;
&lt;H3&gt;Step 1: PmService.asmx &amp;amp; Cross-Domain Callers&lt;/H3&gt;
&lt;P&gt;Here’s an essential development/security tip: If our Silverlight application isn’t hosted at the same host/port as &lt;EM&gt;PmService.asmx&lt;/EM&gt;, we’ll need to deal with cross-domain calling issues. Learn more at &lt;A href="http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx"&gt;MSDN: Make a Service Available Across Domain Boundaries&lt;/A&gt; or &lt;A href="http://timheuer.com/blog/archive/2008/08/20/fixing-troubleshooting-debugging-silverlight-and-data-services.aspx" mce_href="http://timheuer.com/blog/archive/2008/08/20/fixing-troubleshooting-debugging-silverlight-and-data-services.aspx"&gt;Tim Heuer's excellent Silverlight blog&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Step 2: Creating/Configuring The Service Reference&lt;/H3&gt;
&lt;P&gt;Configuring a service reference for a Silverlight 2 project is familiar for those who've built .NET client/service applications, but perhaps not for PerformancePoint Monitoring developers… we can't use the previously mentioned client proxy because its assembly references the .NET client runtime, not the Silverlight runtime.&lt;/P&gt;
&lt;P&gt;So we generate new, Silverlight-specific, client proxy and associated classes from WSDL by using Visual Studio’s “Add Service Reference” against &lt;EM&gt;http://myperformancepointserver:40000/WebService/PmService.asmx?wsdl&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;The generated proxies contains references to “ArrayOfXElement”, which keeps them from compiling. For the purposes of this article, you can remove any code that references ArrayOfXElement until the proxy does compile.&lt;/P&gt;
&lt;H3&gt;Step 3: Call &lt;EM&gt;GenerateView&lt;/EM&gt;&lt;/H3&gt;
&lt;P&gt;We create an instance of PmServiceSoapClient, the client proxy generated from WSDL, and call the service method GenerateView. The GUID parameters to GenerateView are Scorecard ID and ConfiguredView ID. (We find these in a.bswx file containing the scorecard.)&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=csharpcode&gt;PmServiceSoapClient client = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; PmServiceSoapClient();            
client.GenerateViewCompleted += &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; EventHandler&amp;lt;GenerateViewCompletedEventArgs&amp;gt;(client_GenerateViewCompleted);
client.GenerateViewAsync(&lt;BR&gt;   &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Guid(&lt;SPAN class=str&gt;"3449fb9f-458b-44d4-8509-f75e1ad99e78"&lt;/SPAN&gt;),&lt;BR&gt;   &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Guid(&lt;SPAN class=str&gt;"7bb670e0-2ad8-4ed9-a1e1-0e63003d4402"&lt;/SPAN&gt;),&lt;BR&gt;   &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;,&lt;BR&gt;   &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;Step 4: Get The Scorecard Data Set&lt;/H3&gt;
&lt;P&gt;Silverlight forces the asynchronous calling pattern, and so the handler for GenerateViewCompleted’s called on a non-UI thread. It's important that changes to elements within the visual be made on the UI thread.&amp;nbsp; Our method UpdateVisualization updates the visual using data from e.Result, so we use Dispatcher.BeginInvoke to be sure it’s called on the UI thread:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; client_GenerateViewCompleted(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; sender, GenerateViewCompletedEventArgs e)&lt;BR&gt;{&lt;BR&gt;    Dispatcher.BeginInvoke(() =&amp;gt; UpdateVisualization(e.Result));&lt;BR&gt;}&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;STYLE type=text/css&gt;









.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;H3&gt;Step 5: Bind the GridViewData to the Visuals&lt;/H3&gt;
&lt;STYLE type=text/css&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;Here's UpdateVisualization, which grabs the (0,0) GridCell and binds a few values to a button through a data model class:&lt;/P&gt;&lt;PRE class=csharpcode&gt;        &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; UpdateVisualization(GridViewData gridViewData)
        {
            &lt;SPAN class=rem&gt;// This example works off the 1-row header, 1-column header&lt;BR&gt;            // &lt;/SPAN&gt;&lt;SPAN class=rem&gt;structure of our simple example scorecard.&lt;/SPAN&gt;
            IEnumerable&amp;lt;GridHeaderItem&amp;gt; coordinates = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt;[] { &lt;BR&gt;               gridViewData.RootRowHeader.Children[0],&lt;BR&gt;               gridViewData.RootColumnHeader.Children[0] };&lt;BR&gt;&lt;/PRE&gt;&lt;PRE class=csharpcode&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN class=rem&gt;            // GetCell is an extension method, see Appendix &lt;/SPAN&gt;
            GridCell cell = gridViewData.GetCell(coordinates);&lt;BR&gt;
            &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; text = cell.DisplayElements[0].Description;
            GridColor gridColor = cell.FormatInfo.BackColor;
            button.DataContext = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; DataModel {
                Description = text,
                StatusColor = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; SolidColorBrush(Color.FromArgb(gridColor.A, gridColor.R, gridColor.G, gridColor.B))
            };
        }&lt;/PRE&gt;
&lt;STYLE type=text/css&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;Here’s the data model class:&lt;/P&gt;&lt;PRE class=csharpcode&gt;        &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; DataModel
        {
            &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; Description { get; set; }
            &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; SolidColorBrush StatusColor { get; set; }
        }&lt;/PRE&gt;
&lt;STYLE type=text/css&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;And the relevant XAML:&lt;/P&gt;&lt;PRE class=csharpcode&gt;    &amp;lt;Button x:Name=&lt;SPAN class=str&gt;"button"&lt;/SPAN&gt; Height=&lt;SPAN class=str&gt;"21"&lt;/SPAN&gt; Width=&lt;SPAN class=str&gt;"90"&lt;/SPAN&gt;&amp;gt;
        &amp;lt;Button.Content&amp;gt;
            &amp;lt;StackPanel Orientation=&lt;SPAN class=str&gt;"Horizontal"&lt;/SPAN&gt;&amp;gt;
                &amp;lt;Ellipse Width=&lt;SPAN class=str&gt;"12"&lt;/SPAN&gt; Height=&lt;SPAN class=str&gt;"12"&lt;/SPAN&gt; Fill=&lt;SPAN class=str&gt;"{Binding StatusColor}"&lt;/SPAN&gt; VerticalAlignment=&lt;SPAN class=str&gt;"Center"&lt;/SPAN&gt;/&amp;gt;
                &amp;lt;TextBlock Text=&lt;SPAN class=str&gt;"{Binding Description}"&lt;/SPAN&gt; VerticalAlignment=&lt;SPAN class=str&gt;"Center"&lt;/SPAN&gt;/&amp;gt;                
            &amp;lt;/StackPanel&amp;gt;
        &amp;lt;/Button.Content&amp;gt;        
    &amp;lt;/Button&amp;gt;&lt;/PRE&gt;
&lt;STYLE type=text/css&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;And the result:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;IMG title=image style="DISPLAY: inline" height=29 alt=image src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/PerformancePointSilverlightinteroperabil_DAC0/image_ae86f832-3c60-4f2c-a518-34a7a8ac43e8.png" width=98 border=0 mce_src="http://blogs.msdn.com/blogfiles/wadedor/WindowsLiveWriter/PerformancePointSilverlightinteroperabil_DAC0/image_ae86f832-3c60-4f2c-a518-34a7a8ac43e8.png"&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This isn’t fancy, but hopefully it gets you past the major hurdles, and on to a much more interesting dynamic visualization using Silverlight 2.&lt;/P&gt;
&lt;H3&gt;Appendix: GetCell for GridViewData&lt;/H3&gt;
&lt;P&gt;Here's an extension method for the WSDL-generated GridViewData, GetCell. This is used to look up a cell for a given combination of headers.&lt;/P&gt;
&lt;P&gt;The cell keying algorithm could change in future versions of PerformancePoint. Please let me know if you run into issues using this.&lt;/P&gt;&lt;PRE class=csharpcode&gt;        &lt;SPAN class=rem&gt;/// &amp;lt;summary&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;/// Returns the GridCell for the coordinates defined by the GridHeaderItems. Returns&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;/// null if the coordinates refer to an empty/out-of-range cell.&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;/// &amp;lt;/summary&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; GridCell GetCell(&lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt; GridViewData t, IEnumerable&amp;lt;GridHeaderItem&amp;gt; coordinates)
        {
            &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; key = generateKey(coordinates);

            DictionaryWrapperOfStringGridCell table = t.Cells.Table;
            &lt;SPAN class=kwrd&gt;for&lt;/SPAN&gt; (&lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; i = 0; i &amp;lt; table.Keys.Length; i++)
            {
                &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (table.Keys[i] == key)
                {
                    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; table.Values[i];
                }
            }

            &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;;            
        }

        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; generateKey(IEnumerable&amp;lt;GridHeaderItem&amp;gt; coordinates)
        {
            &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; coordinates
                .Where(coordinate =&amp;gt; &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt; != coordinate.DimensionName)
                .OrderBy(coordinate =&amp;gt; coordinate.DimensionName)
                .Select(coordinate =&amp;gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt;.Format(&lt;SPAN class=str&gt;"{0}:{1}{2}_"&lt;/SPAN&gt;, coordinate.DimensionName, coordinate.DimensionValue, coordinate.Id))
                .Aggregate(&lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; StringBuilder(), (stringBuilder, keyPart) =&amp;gt; stringBuilder.Append(keyPart), sb =&amp;gt; sb.ToString());
        }&lt;/PRE&gt;
&lt;STYLE type=text/css&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;STYLE type=text/css&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;STYLE type=text/css&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;STYLE type=text/css&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8927163" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-08-92-71-63/PerformancePointSilverlightGenerateView1.zip" length="107600" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/wadedor/archive/tags/silverlight/">silverlight</category></item><item><title>Working with well-known properties and PmService</title><link>http://blogs.msdn.com/b/wadedor/archive/2008/07/24/working-with-pmservice-s-wsdl-generated-classes.aspx</link><pubDate>Thu, 24 Jul 2008 18:42:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8769467</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=8769467</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=8769467</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2008/07/24/working-with-pmservice-s-wsdl-generated-classes.aspx#comments</comments><description>&lt;p&gt;Tim Kent at Adatis did &lt;a href="http://blogs.adatis.co.uk/blogs/timkent/archive/2008/07/24/performancepoint-monitoring-web-service-part-2.aspx"&gt;a nice writeup&lt;/a&gt; on how to work with the &amp;quot;well-known properties&amp;quot; Name, Description, and Person Responsible of a PerformancePoint Monitoring first-class object (a KPI, a Scorecard, a Data Source, etc.) when calling the PmService web service.&lt;/p&gt;  &lt;p&gt;I've always wondered why they're &amp;quot;well-known&amp;quot; if you have to memorize a GUID to work with them... &amp;quot;well-known if you have a good memory&amp;quot;, perhaps. It should be easier than that, and I've entered a usability bug against this for the next version.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8769467" width="1" height="1"&gt;</description></item><item><title>Sparklines plugin for jQuery</title><link>http://blogs.msdn.com/b/wadedor/archive/2008/07/21/sparklines-plugin-for-jquery.aspx</link><pubDate>Mon, 21 Jul 2008 19:12:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8761886</guid><dc:creator>Wade Dorrell [old profile]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/rsscomments.aspx?WeblogPostID=8761886</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/wadedor/commentapi.aspx?WeblogPostID=8761886</wfw:comment><comments>http://blogs.msdn.com/b/wadedor/archive/2008/07/21/sparklines-plugin-for-jquery.aspx#comments</comments><description>&lt;p&gt;Ran into this on the tubes this morning:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This jQuery plugin generates sparklines directly in the browser using data supplied either inline in the HTML, or via javascript. &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="http://omnipotent.net/jquery.sparkline/" href="http://omnipotent.net/jquery.sparkline/"&gt;http://omnipotent.net/jquery.sparkline/&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In theory you'd be able to use this to sparkline-ize a PerformancePoint scorecard or analytic grid that returns CSV data in a cell, using this technique:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;&amp;lt;span class=&amp;quot;sparklines&amp;quot;&amp;gt;1,2,3,4,5,4,3,2,1&amp;lt;/span&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;$('.sparklines').sparkline('html');&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I'm not familiar with how to follow non-jQuery DOM modifications (all PerformancePoint webpart content is dynamically injected into the DOM) with jQuery That seems like the tricky part. Thoughts?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8761886" width="1" height="1"&gt;</description></item></channel></rss>