Remarks by Bill Gates, Chairman & Chief Software Architect, Microsoft Corporation
Microsoft Office System Developers Conference 2006: “It’s More Than You Think”
March 21, 2006
ANNOUNCER: Please welcome Senior Vice President for Information Worker Business, Microsoft Corporation, Steven Sinofsky. (Applause.)
STEVEN SINOFSKY: Well, good morning, everybody, or good evening, depending on what time zone you’re from. I definitely would like to welcome everybody to our Office Developer Conference, and certainly welcome all the people joining us over the webcast this morning.
So, a little bit of good news/bad news. The good news is, we have an amazing amount of stuff for you to look at, and learn about, and hear about in the 2007 Office System. It’s also a lot of stuff. So, pace yourself, take some time to absorb it all, and really enjoy the great new developments that we’ve got in the Office System this time. We’re incredibly excited, and I really thank everybody for joining us today.
I don’t want to waste too much time. We have our keynote speaker coming up, and I would like to introduce him. Normally we introduce Bill as the Chief Software Architect of Microsoft, which is his job, of course, but this release of Office is very special because Bill has been incredibly involved. So, in a sense, he’s sort of the director of program management for Office’s release. So, please direct your feedback on anything to Bill appropriately.
Bill has been incredibly involved in this release, and I’m really excited about that because whether it’s been talking about SharePoint and our ability to connect to business data, the user interface for SharePoint, the new user interface in all of the client applications, Bill has been really involved. And so, when he speaks about this, he’ll be speaking about many of the decisions that he helped us make, and that he was part of. So, without further ado, allow me to introduce our Chief Software Architect and Chairman, Bill Gates. (Applause.)
BILL GATES: Well, good morning. As Steven said, I am thrilled about Office 2007. It’s really an amazing release, and it’s going to be fun over these few days to take you through it and talk about the opportunities it creates as the development platform. It is dramatically better as the development platform than any previous release of Office. In fact, as I’ll describe, we say that it’s revolutionary in terms of the class of applications that people just haven’t been able to write in the past, but now, with what we’ve done with Office 2007, we think we’ll see an explosion of these applications.
What are some of the trends that we had in mind as we developed Office 2007? First, we had the great performance improvements in the Windows Intel-type hardware, both on the client with great graphics and visualization capabilities, and then on the server where now with 64-bit capability and SQL [Server] and Exchange and SharePoint and other products taking advantage of that, the ability to deal with massive amounts of information in a very efficient way has all become very practical. Low-cost hardware dealing with all the different information and being able to mine it in rich new ways.
Our users, of course, are more mobile than ever before. Portable machines are an increasing percentage of the systems that people are using. They’re taking them on trips, into meetings, and over time we even see the arrival of the portable device turning into a tablet type device, so ink and speech, those things become a natural element of the interaction. We have a new way of connecting applications together. The Internet gave us the ability to have bits flow from any place to any other place, but now we have high level protocols that let us think of the Internet as a programming environment, where a piece of software, a component of an application, can exchange information in another application. The standards here, of course, started with XML, but then they built up to have a set of protocols, the Web service protocols, around those. And we see those being adopted and giving people a lot of flexibility not to have monolithic applications, but rather to do this kind of exchange through service-oriented architectures and bringing information together in a much better way.
The pervasiveness of all these digital tools, whether it be the broadband Internet in homes, or simply PCs, people organizing their lives, doing business through the PC, that’s becoming more and more common. We talk about that in two ways. First, digital workstyle, people who use these tools to the greatest effect to get things done, and then digital lifestyle where even at home where there’s music, photos, memories, family calendars, people are using a wide array of software and getting more out of the computer experience.
You can say the whole economy is going digital, but we’re just at the beginning of that. Today, TV is still broadcast ads sent to all the same people, and most things are built with a lot of paperwork, but this will change, and change year by year. And part of that is the software breakthroughs that we’re investing so much in. You’ve probably seen our R&D budget is the largest of any company in the world, and that’s based on the optimism we have about this use of software and the role that it can play.
Where did we see the opportunity? There were many things, but I think the biggest thing we saw is that people are putting in structured systems, ERP, CRM, a variety of those systems weren’t getting what they wanted out of those systems. Many of the things that required people to get involved with, the exceptions, simply weren’t handled well in that environment, and yet the connection between the unstructured world, the office where people are working with other people, and this very structured world, there was not a good connection there at all. A lot of people would try to build special applications to fill in that gap to deal with that, so-called composite applications, or they would go and buy very specialized server tools, but those were just a narrow slice of what they needed. And so we said, we’ve got to deal with that. Office has this huge opportunity as the interface that people are used to. When we talk to people about, how do you want to interact with your business intelligence information, it’s very clear they want an Excel front end to let them do that. When we talked to them about CRM, they want an Outlook front end to do that. When we talked to them about collaboration, they want something that’s simple and bottoms up and still gives them visibility into their business information. And so there has been a results gap, and the new capabilities in Office are aimed at actually getting rid of that.
The Road to Results
The 2007 Office system has a number of elements in it. Probably the people here have seen as we’ve come on we’re adding to each of these areas. The tools themselves, of course, big improvements, the Office Online Services, the client software in Office, and then, of course, the strength of the server piece, which I would say has grown dramatically in this release. The role of SharePoint, and you are going to hear about that, as the basis for this new class of applications, the basis for a new way of being able to share information, I think that will be a very, very strong change that you’ll hear throughout the several days here.
The breadth of what we’ve done in Office 2007, even I think is quite amazing. If we’d only done the XML, that would have been a huge thing. If we’d only done user interface, or the neat new features, any of those would have been fantastic, but the most important is the idea of this new platform, making it very easy through templates to build the collaborative, information sharing applications. Even concepts like blogging or Wikipedias are just simply there, and you can pull it into the SharePoint environment to have your users use these modern approaches for working together, and yet it can be in the context of the project that they’re working on, or the issue that’s being debated with the structured information and unstructured information all there in one simple place.
So, the scenarios we really think we’ve made a breakthrough on includes business intelligence, collaboration, content management, and business process integration. And yet, we’ve done that without having separate tools for each one of those things. We’ve essentially taken on the server level SharePoint, and of course the Office client on the PC itself as the way that a lot of those scenarios can be addressed. So, it’s in a sense standardizing and greatly simplifying the creation of a world class of applications that in most cases we’re either very hard to do or just simply didn’t get done at all.
Open XML File Formats
XML, you’ll hear us talk a lot about that, we started out commitment to XML back in 1996, when Microsoft and some small companies proposed that as a document format standard, and years after that we saw this really addressing a broad set of needs, even kind of opening up the world of data that has been stuck in a very rigid tabular format, but, with XML, the ability to describe hierarchy, and have a variety of information all brought together in one place, including rich schema, we thought super important.
So, it’s really with the .NET announced in the year 2000 that we made this commitment to put XML into all of our products, and we’ve gone through several steps in that evolution. First, we put converters on the outside of the products so we could just read and write XML formats. Then we had a stage where we had some understanding of XML inside the products, but it wasn’t the native representation. And now, here with Office 2007, we actually have the logical file format in XML. And so the idea of moving data in and out of documents is radically different. In the past, you had to think about the user interface of the application and work through that user interface in order to read and write information from the document. And, of course, we still have that because there are scenarios where that’s appropriate, but here you can simply think up the name ranges in the document, and moving information in and out is as simple as simply writing to that named range and doing the update there.
This evolution we’ve seen with Office, we’ve seen it with other Microsoft products, SQL went through the same thing, had converters on the top, some understanding at the query level, and now with the version of SQL we shipped late last year native understanding of the XML format. So, it’s a company-wide thing, and fortunately also an industry-wide thing that everybody is playing along with, and people are just starting to see the full benefit of what this can mean.
We’ve taken these document formats and we’ve submitted them to a standards organization. These will be very stable file formats, and yet they let you do these rich Office solutions in a much simpler way than ever before. So, you can take these documents, put them in a digital archive, and have access to these things in a very simple way. The kind of team work we’ve done here we’re very proud of because we think it’s simplified many, many of these solutions.
We’ve got a new organization we’re announcing called openXMLDeveloper.org. No organization is good unless you put the word “open” right at the front, so we’ve got it right out there. In fact, you know, these are three of my favorite words, “open,” “XML” and “developer,” and that’s all in one organization. And so this is a number of companies coming together, Microsoft of course played a leadership role, but we have Intel and Apple and dozens of institutions that care about this idea of these formats being very well documented so lots of people can write applications that can read and write these things. There’s a Web site that’s sort of the place people get together to make comments, and have the resources, talk about when meetings make sense. So, it’s a real community, and we think this is an important step that we’ve taken to make sure that people feel comfortable in building on these formats.
The Office client is where we did the most work, and as part of this conference, the Beta 1 technical refresh will be available to everyone here. And, the first thing you’ll see when you power this up is the new user interface. It’s a results oriented interface. It’s got an ability to be extended in a way that’s much better than what we had before. What we found before is that things were hidden beneath those menus, and people didn’t know where in that two-dimensional structure we were putting things. And so we had a lot of requests for pieces that were actually in the product. Now, with this Ribbon approach that is unified across many of the applications, you have context, and so you know what you’re working on, if you pick different objects, the Ribbon changes in an automatic way. And so, we think this is great for end users, certainly the usability testing on this has been fantastic, but we also think it creates a framework for extensibility that we haven’t had before.
We now have applications level adding. You don’t have to simply associate the add-ins with individual documents or template types, you can have the add-in capability at the application. And that’s important, I know, for a lot of the work that many of you do.
As we move away from the client, and you’ll be seeing a lot about that, we move up to this server level. As I said, that’s become really kind of an equal partner in terms of why the new version of Office is a very, very big deal. What we saw is that on the server people were buying solutions that were very specific, document management, collaboration, workflow, search. And many of those weren’t products that were super-high volume, so they’d be higher priced, and typically a business would not choose to provide that capability to everyone in the organization, and so you’d often have this partitioning where some people had the capability, and some people didn’t and if you got a workflow that spanned the people who didn’t that was a real problem. And writing an application where you wanted aspects of every one of those things was very, very difficult. There wasn’t an end user tool that was at critical mass. Likewise, there weren’t a set of templates that were just growing and growing to represent the kind of Web site you’d like when you want to get people collaborating in a particular way.
Tools for Any Skill Level
So that’s the position that SharePoint stepped into. We’ve had some of that to date, but it’s only with SharePoint 2007, with the connectors, with the workflow, with the richness we’ve built in here that we really say, this is going to redefine how people think about collaboration. I’d go so far as to say that in the same way that back in 1996 we made the client software in Office kind of commonsense, that when you hired a temporary worker you could say, well, of course you know how you use Excel, when you went to a conference you could take your PowerPoint presentation and know that people knew how to work with that. You could do enclosures in e-mail and send those things around. People knew how to use those tools. They had that software in a very pervasive way.
We believe the same thing over a period of years will happen with SharePoint, where these standard templates are things that everybody will know, they’ll build on, they’ll customize, and they’ll simply come to expect it. In some ways what we’re seeing is that a lot of the collaboration that was done solely with e-mail, where you’d put in attachments, add people to the thread, try and get conversations to come to a close at some point, some of the thing that e-mail was not good at for collaboration were actually shipped into this SharePoint environment.
You saw us try and prime the pump on that a bit with the last version of Outlook, where when you do attachments we’d actually prompt you with a pane and say, would you like to create that SharePoint site? Well, over these last few years we’ve gotten more and more IT departments to put up SharePoint in this self-provisioning form, where you not only get to pick a site, but you get to pick the template and get going without there being any IT overhead, manual work in terms of doing that.
Some of the other elements to drive to critical mass included the ability to federate the authentication, so you could reach out and have people in another organization without having to learn a new password, new name that would be administered in a very complex, probably inadequate way.
So there’s a ton that’s gone on at this server level. We’ve got the search, which is a real breakthrough for corporate search. We know this is structured information, it’s part of what you want to find out as you’re entering in those search requests. So the idea of these data connectors that enumerate that, that can go up to SAP and Active Directory, and bring you the information that can provide answers, I think people will never look back once they see that. They’ll understand that search can’t just be only about the documents, it’s got to be about the documents and the structured information.
We’ve got the Excel service that runs on the server, so the idea of reports, and easy capabilities to actually be run on the server, where it can have more resources, and then made available through a reach type approach, because we’d have that browser-based access, we think that really opens up a lot of scenarios to use Excel in a way that’s never been possible before. InfoPath, of course it was new last time, with the services we’ve got that now becomes available to browser users, and we think that will make that far more pervasive.
One of the great integrations we did was we took our content management server, which was a separate product, and had some richness of its own, and we decided we’d host that on top of SharePoint. And that was fantastic for us, because understanding how to have user interface flexibility, and very rich scale, and taking the workflow elements that came out of that content management scenario and making sure our general workflow platform could easily support those. This was a fantastic exercise for us. So what we ended up with is a content management solution that’s far better, and making the SharePoint platform far better as we brought those two things together.
Workflow is simply there in this environment. The actual runtime is very, very powerful for people who want to get the full capabilities there, obviously to move up to the Visual Studio level and even look at that workflow XML. But, the common scenarios are actually very easy to get at without getting down to that level. We will drive the critical mass here of these data connectors, and we think that’s a key thing that enables the navigation scenarios.
What we do have now is the SharePoint Designer, a tool that lets you do a lot of the work at a very simple level, and really you can say we’ve got this spectrum of tools that give you a pretty incredible choice, Visual Studio at the high end, InfoPath, Access, and SharePoint designer for different application type at the middle, and then of course a lot of capabilities even before you get to that, simply because the templates give you choices and many people will just simply work at that level.
Each of these tools is far more powerful than before. Access is a favorite of mine, I’ve often used that to build applications. And here, the connection up to SharePoint, where you can not only query lists, but update them and have replication back to that SharePoint server. It’s a pretty phenomenal thing. Access forms and reports have gone a lot further in terms of their WYSIWYG capability, and we’ve got the new UI actually reaching into Access as well, to make things a lot easier.
SharePoint Designer, of course, comes from our Front Page work, now what we’re showing is that we’ve really got a version that is aimed at the customization of the SharePoint environment, so it can understand the workflow engine that we’ve built in there. And we have support now for a much broader range of rich XML and Web standards in this designer product.
Visual Studio Tools for Office
So a lot going on with these development tools, we are connecting to the managed code world, the Visual Studio Tools for Office let you take .NET skills and use them to do Office-type work. So we’re coming out with a version 3 community technical preview, and you’re the first people who are going to get that. We’ll hand that out as part of the conference, and we really do want your feedback on that.
This is getting a new capability for Office programmability, the application level add-ins that I mentioned, the connection up to the new UI. And it’s the got a new loader infrastructure to make it very simple to bring in these add-ins in a very reliable and simple way.
I’ve talked through a lot of pieces, I hope I’ve whetted your appetite. The best way to understand about how these advances really come together is to see it demonstrated. So let me ask Jay Paulus, who is a group product manager from the Office team, to come up and show us some of the depth we’ve got here.
Welcome, Jay. (Applause.)
JAY PAULUS: Good morning everyone. I’m excited to have a chance to show off part of the new 2007 Office system. Everybody told me, don’t try to show it all, don’t try to show everything, there’s not enough time, you’ll never bet through it, and I said, come on, come on, I want to show everything. They said no way, no way you can’t fit it, it’s way more than you think. So I said, OK. We’ll just have to boil it down.
So I’ve got a pretty straightforward demo here. There’s not a lot of stuff on top, so we can kind of see how things are working. It’s going to show you kind of four main things. We’re going to show how we can us the server, Office SharePoint Server, to connect to backend data and present that stuff in interesting ways. We’re going to use some of the built-in workflow in SharePoint to kick off our workflow using an InfoPath form, and that workflow is actually going to do some document assembly and create a Word document, an RFP document. Then we’re going to step out and look at the file format, and how you can integrate data into the file format using the XML structure. Then we’re going to use some of the Office UI extensibility to finish up that RFP doc using some custom UI inside of Word. So let’s get right to it.
So here I am sitting in my Office SharePoint Server site, and there are kind of four big things that are new in this site that were really not possible before. So the first thing is this kind of clean chrome around the outside here. This is all driven by an ASP.net master page. So in this way for a given site I can install my own ASP.NET master page, thanks to integration with ASP.NET 2.0, and this master page is actually under version control by SharePoint. So I have nice control over deploying updates to my site, and being able to rollback to previous versions.
The next thing that I’m doing here that’s new, I’ve got this thing here, it’s called a Filter Web part, where my mouse is hovering her. This Filter Web part actually allow me to select a value, or a list of values, and then push that through other Web parts on the page. So this is a new part of the site framework, the Web Part Interaction Framework. This filter part here actually is going to drive selections down into these two Excel parts. That’s the third new part of this portal, the fact that I can take Excel spreadsheets and publish them into the portal, this nice formatting here, and this nice chart here are all coming from Excel, and Excel spreadsheets that we’ll actually go in and modify.
The fourth thing that we’re going to look at on this portal is, this is a data-driven list, this is actually driven by the business-data catalogue. In the business-data catalogue, it’s a metadata system where I define the entities that exist in my backend system, then those entities are reused throughout my portal. So things like products, or suppliers, or parts become entities as defined in the business-data catalogue, and I can just reuse those things.
So let’s take a look at some of this stuff really quick. So the first thing I’ll do is open this simple filter, and I’m going to filter it down to this part number G482, and if you look at the Excel list here you’re going to see that when I click okay here that selection is actually going to push into that Excel chart, and you’ll see the page will refresh, and I’ll get a different view on that Excel sheet. So that nice formatting there is actually dynamically being generated by Excel services in the backend, and then republished out to the site here.
You can see on these Web parts now, they’re showing me that the filter is in effect, so active filters coming from product code, so that’s a really cool thing. Let’s say I decided I didn’t really like this graph and I wanted to update the way that thing looks. I’m going to jump out to Excel here, and here I am in Excel, and notice that this looks a lot the same. There’s really a lot of work that’s gone into allowing the business analysts to create this Excel view, and then publish it up to the server, and really have it look just the same as they would expect.
The big thing here is I’ve got this named range here called product code, it’s the filter for this pivot chart, the pivot chart, or pivot table is actually a bound pivot table, it’s bound back to my Adventure Works database, a slightly modified Adventure Works database with different part numbers. But, it’s bound to the backend database. So by having that other Web part push the value into this spreadsheet at this level, it causes this to filter and then re-render into the portal.
The next tab I have here, this is another pivot table that’s bound to the backend data, and again, another named range that accepts the filtering criteria, and then filters what drives this chart. So if all I want to do is change this chart type I’ll go in and say, change chart type, and this is an inventory thing. I’m going to just pick a pie chart, which actually makes no sense for inventory, but I’ll do it anyway. And all I’m going to do is hit save. So I’m the business analyst, and I said, that view is no good, let me just hit save, and it saves out to SharePoint. I’ve already gone through a publishing step that I’m not going to redo here now. Back to my portal here and just hit refresh, retry, to send my selections back up, my filtering selections back up, and what I expect to see here is my new chart show up in the portal. And there it is. So it’s just that simple for business users to get involved in the portal. (Applause.)
Yes, don’t be afraid. Those guys do a lot of work. They’ll be glad to hear that. OK. So here I’m taking information and publishing it in interesting ways. This next step down here, this is my business-data catalogue entity here. Again, this is another way to show the business-data catalogue. These product codes are actually bound in from my backend database. Again, when I click here, I use the business-data catalogue mechanism to push those selections over to this parts list, so this is kind of like a bill of materials set up. This is my first entity here, this product. My second entity here is a part for that product.
The cool thing I can do on any given entity in the BDC is I can define these things called custom actions. Those custom actions show up here in this context sensitive menu. And so I can say here, invite suppliers to bid. I can also if I wanted to created different UIs, I’m going to select that actual part, and what you’ll see is up here, this is actually a separate Web part up here that’s re-rendering those lists of actions.
So here I have the list of custom actions here, I also have the same list of custom actions up here. I’m going to go ahead and click on this, and there’s a little bug there, I don’t get the little finger for some reason, but I’m going to click on this, and what this does is it’s context sensitive. It’s a command that says instantiate an InfoPath form with the following parameter, and it takes the parameter from this row. And so you see this part code CA5965; that actually gets passed into this InfoPath form, and you can see it’s passed right there, and that’s done by way of a simpler URL here. It calls into the InfoPath form services, which is rendering this InfoPath form via the browser, and it takes this input parameter and prepopulates the form with that, so very simple integration between the two.
Now I have my nice InfoPath form here, it’s just a small form, very simple. I’m just going to go in and pick a due date for this thing. Let’s go into, say, April 12th is when the RFP is due. And now I’m going to hit submit.
And so again this is just all simple InfoPath programming. You could have just a business analyst can design this form or a developer can design this form and actually add code behind it, and that stuff will all execute on the server.
So here I’ll hit submit and now we’re moving along. This form actually goes into a document library on SharePoint.
I’ll close that, and we’ll just really quickly look at that form library. This is where all the request forms go into. You can see here based on this column I have a workflow associated with this library. So now what’s happened is that form took the data from my content sensitive action, it passed in that data into the form. Now, the form now goes into this library with the workflow, and the workflow can now take that information that was passed in and take action on it.
So we can take a quick look at that workflow that is associated with this library. Here I am in Visual Studio and what you see here is the graphical design surface for the Windows Workflow Foundation. And here I just have a simple workflow here, we’ve added some branching just to kind of make it look interesting, but the major things are here I have basically an event handler that kicks off the workflow and is basically saying when a file is added kick off this workflow. That actual event handler comes here from my SharePoint specific workflows here on the side.
Then I’ve got a while loop here that executes a custom code activity, I’ve got some branching activity here, and then now I get down here to this custom code activity. That custom code activity is actually from just the base Windows Workflow Foundation set of workflow activities, so I can use all these things. I can use the SharePoint activities, I can use the base Windows Workflow activities to build my workflows that will host inside SharePoint.
So if I double-click into this thing, we’ll go in and we’ll see the code for this workflow, and we won’t get super deep on this, but basically what it does is it sets up a string which points me to the template for my RFP document. This is a Word document template that basically has some custom XML binding into the document.
Then what I do is based on that template I go out and I basically create a text string based on the InfoPath into the workflow, and then I construct a filename, I inject that custom XML into the Word document, and then I construct a new filename here and save it into the SharePoint library. So that’s all that thing does, and then it sends me an e-mail after it’s done.
So if I jump back out there, I should have received an e-mail, 9:33, yeah, that’s it. It actually is pretty instantaneous because it’s a simple workflow. But basically a new workflow has been assigned to me.
If we go out here and let’s look at the library where that thing gets dropped into, it goes into shared documents. I’m going to refresh here and expect to see my new document here. Here it is. So there’s the part number where I constructed that filename, and there’s the date that I used, this is the due date that I used to construct this RFP.
So what I’m going to do is – that’s kind of the server stuff. We published some data, we connected the back-end data in Excel, we posted into the server, we used the business data catalogue to connect directly to back-end data and publish it in the server, we kicked off a workflow; now I want to look at this document, get onto the client side of things and look how that XML is actually integrated in here.
In order to do that, I’m going to save this out to the desktop and we’ll take a closer look at it. Here we go saving out to the desktop, that’s done. Simplify things. So here’s my doc. So first of all we just take a look in there, and what I have here are some Word content controls, right in here I have some Word content controls. So here’s the part number, here’s the due date. Again, this stuff was just bound into the Word doc by the custom XML.
Let’s go take a look at what that is. So I’m just going to close this up, don’t want to save changes, and just to show you how simple this stuff is, the new XML file formats are actually just a zip archive container of various XML parts. So I’m going to rename this as this. Yes, I do want to change it, thank you very much.
So here I am looking inside the archive. The particular container I’m worried about here is that I’ve got document properties, the document bodies in there, all the document contents are in there and navigable through the XML file structure.
If I look inside the custom XML, the one I’m looking for is actually this item two. So I’ll drag that out onto the desktop and now I’m just going to open this thing with Notepad so you can see what’s in here.
So here you’ll see my custom XML elements. Here is my part code, here is my date that I selected; I’ve got some other elements in here for name and e-mail. These are the contact info for the RFP owner. But basically let me just go in here and change this part code to say this is going to be my widget: Jay’s ODC widget. Then I’ll save this, say yes, and I have a funny refresh thing here running this over Virtual Server, and sometimes I get a funny refresh. Would I like to replace, yes, so I’m just replacing that custom XML snippet.
So now, thanks to the Word custom controls, that custom XML is going to bind to the doc. I’m just going to say now, I’m not even going to rename it, I’m going to say open up with Microsoft Word, just open the zip file, and I’m getting that funny redraw, but there I get my XML that I just typed in there binding into the document, so it’s just that simple. (Applause.) Yep, those guys will be glad to hear it, too, yep.
So it’s just that simple. So it’s really easy to understand this stuff, the XML is very straightforward and once you set up the binding into the Word document it all just kind of happens automatically.
So that’s me kind of binding data into the document using XML. Now, the next thing I want to do is add some custom UI to this Word-based application to help somebody finish off the – my screen just went black. Oh, I just switched to a new screen. There we are, got it back, very good, not sure what happened there.
What I want to do is add some custom UI. So we want to look at here’s the Ribbon controls that Bill talked about, this is the context sensitive Ribbon that really brought a lot of the commands to the surface, and makes it easier for people to get work done.
Now, I’m working at Fabricam, I want to make my functions really easy for these people to get to. And so what I have is this extensible Ribbon. And so I’ve just created a couple of simple buttons here. This one allows me to assign the owner. You remember that XML binding that was in the doc for contact information? This button basically just pushes information into that XML binding.
So here I’ve put in some nice pictures and here’s my friend Drew Liddell, and I’m going to say, yeah, Drew has to own it, and there goes his name into the document.
I’ve also taken – I’ve used this custom Ribbon to add a button here that brings up custom task panes. So in Visual Studio Tools for Office we’ve made it very easy to program against these custom task panes, we’ll see that in a minute.
One of the things I have in the custom task pane here is a view on that custom XML. And here you can see that that assign owner button basically just bound in the data again into the XML.
Some of the other cool stuff I can do here is I can go in and select this stuff. This stuff again, these controls are just bound to the XML, so it’s very simple programming to just make the connection between the documents and the data.
I’ve also created a tab over here that allows me to change the date just using this nice calendar control directly from in the documents here. So you can see it’s just very dynamic. It’s also two-day, I can go into the document itself here, and if I can get my mouse to do the right thing, and you can see it’s basically just two-way binding, so it’s pushing data back and forth. So it’s very easy for me to build UI that lives in the Ribbon, lives in the task pane, pushes data into the doc and gets data out of the doc; so a nice development model for me to go in here and build my applications.
So just to take a look at how that stuff works, again I’ll just call up one more Visual Studio project here, and it’s the Word RFP add-in. The first thing we’ll do is let’s take a look at this, this is the Ribbon XML. So this is the XML that defines my custom buttons. It’s basically just a matter of defining where the images are, defining what the functions are that that button needs to call, and defining the tool tip information. It’s really straightforward XML definition file, and then you just need to have the image resources deployed to the machine.
The next thing we have here is the custom task pane. Again, this is just standard Visual Studio programming. So I can just drag a button onto this surface and add controls to the thing. If I double-click into this calendar control you’ll see how simple it is to bind this information. It’s really just all this stuff right here, that’s it, that’s what binds that control into the custom XML. And it’s really all the work is being done by this line right here, I’m basically using XPATH to navigate to my XML node that I want, and then setting it to the short date string from inside of this event handler on that calendar control, and it’s really just that simple, and that’s thanks to the power of Visual Studio Tools for Office and the integrated design environment here.
All right, so that is getting pretty close to the end. I think I made pretty good time. So there’s one more really cool thing I want to show you, and we’ll get out of here, and that is in the Excel services thing, so this is the spreadsheet that I published up to the server again. So this is one more sheet inside the Excel spreadsheet that we published. This thing is just a simple calculation. It takes a number in here like 500 and it calculates this allowable defect rate here of 9.1.
Because Excel services is programmable, I’ve actually added code into my Word add-in that uses that calculation from Excel to actually update the spreadsheet. So if I go in here and key, say, 500 parts, I expect to get that defect rate back. Although I didn’t. Maybe I shouldn’t be doing this. Let’s try 500 again, one last try. Ah, here we go.
And so what it’s doing is it’s calling out to that Excel service on the spreadsheet and it updates this value in the document.
So now again it’s like the business analyst can change that model of what the allowable defect rate is and just resave the Excel spreadsheet, and my business app gets updated without me having to change any code. So the business guys write Excel, I write code, and thanks to the server sitting in the middle we can just work together very seamlessly; it’s a really powerful concept.
All right, so that winds me up here. And I’ve got one more quick thing I want to show you, which is kind of on a totally different topic, and I’m going to have to switch machines for that, assuming we can do that. We’re going to bring up the eBay machine. Hey, I’ve got a reminder; that’s handy. (Laughter.) Just in case I forgot.
So there’s been a lot of talk lately in the press and various places of composite apps and Web 2.0 and kind of the new concept for building applications, and it’s basically all about using existing Web services in the sky to kind of compose new applications and experiences.
So I’m going to use some Web services off of eBay and show how we think about that model composing applications inside of Office and putting information right where people want to use it.
So here I’m looking at eBay, almost everybody knows eBay, I’m got the stuff I’m watching here and I’ve got some stuff that I’m bidding on. I’m an Elvis guy apparently, and I like velvet Elvis stuff.
So what I’m going to do is use eBay’s existing Web services that publish out that same information and I’m going to bring that stuff into Outlook. So I’m in here, I’m working every day, I run my life in Outlook. And so what I’ve done is I’ve created an add-in called the eBay add-in and it adds this node into Outlook here. So when I click on the top level of the node, I get the eBay homepage, it tells me how to set it up and what this add-in is all about. When I expand it, I’ve actually added a folder here for my bidding items and my watching items. So I look in here, I get the power of Outlook storing things as I would expect, so showing me the auctions that are expiring today so I can take auction on them. I’m using down here in the preview pane I’m using the new Outlook custom form regions to control the way the body of that item gets rendered.
If I double-click this one, since it is expiring today, I want to make sure that my bid doesn’t get overrun. It turns out that I’m actually not winning this item right now. Again, here I’ve got Outlook custom form region to control the way that the body of this thing looks. And again I’ve used a custom XML definition on the Ribbon to actually give me a button to say, oh yeah, let me just go place a bid. So that button just pops me directly out to the app and lets me go and get caught up on things.
So some of the power of having this stuff all integrated in Outlook, I can use things like the new to-do bar. So when I bring up the to-do bar, it’s my quick at-a-glance, like, hey, what’s happening today, and I can see here that I’ve got today, hey, polish my blue suede shoes, nice joke. And then tomorrow I need to actually take action on some of these auctions. If I go into my calendar view, I can see here it is, here’s my reminder, and I can see day by day I can see these tasks that have been inserted into it for me.
So it takes this information off the Web as part of my daily life and just gets it right in here in the tool where I live and spend a lot of my time.
And with that, I’ll wrap up, say thanks very much, and bring Bill back up. Thank you. (Applause.)
The Microsoft Platform
BILL GATES: Well, that will start to give you a sense of the kind of power we’ve got, the kind of extensibility we’ve got.
The one last point I wanted to make, of course, is that Office fits into the overall Microsoft product family. We’ve got the work we’re doing in our Business Solutions group that we call Dynamics, a lot of innovation there, and very connected with all these Office capabilities that you saw. We’ve got the new release of Windows coming out, Windows Vista coming out late this year, and so excited about that, and Office doesn’t require that but does things to take advantage of that.
And so all these different things are fitting together, the advances in the BizTalk, SQL Server and Office taking advantage of those, the latest version of Visual Studio, so it’s an overall system that we’re very excited about how the architecture is coming together so that these products reinforce each other.