To provide reasonable context for discussing new InfoPath features, let's look at the different versions of the product and what each brings to the table. Version 1, officially released as InfoPath 2003 on August 19, 2003, is Microsoft's inception into the XML forms and data collection markets. As such, it bundles competitive features to allow for a rich form experience. This section recaps the highlights of InfoPath 2003.
The InfoPath design mode is all about creating nice-looking forms that include basic functionality. The design surface, or view, is similar to that of Microsoft Word. The content of the view flows from left to right, top to bottom, and serves as the presentation layer for the form's data. Absolute positioning, such as what PowerPoint offers, would make InfoPath form design cumbersome when accommodating different resolutions and monitor sizes. Therefore, layout tables are used instead as the positioning paradigm of choice—equivalent to that of many professional Web sites. Tables offer a familiar and flexible option when demanding pixel-by-pixel, picture-perfect parity.
For those of us with a less than acute sense for visual design, color schemes spice up even the most boring forms. A single click on the Bright Blue color scheme adds a subtle blue color theme to parts of your form template's controls and layout tables. If you don't care for the effects of Bright Blue, you can choose another scheme at your convenience at any time. Color schemes more dramatically affect Repeating Table controls more than other controls. The header and footer backgrounds, text, and table borders comply with the current theme.
InfoPath 2003 introduced a general set of controls for inclusion in forms. Figure 1.1 shows the Controls task pane. As you would expect, the InfoPath design mode includes controls such as Text Box, List Box, Drop-Down List Box, Check Box, Bulleted List, Numbered List, Plain List, Option Button, and Button. The Section, Optional Section, Repeating Section, and Repeating Table controls support InfoPath's structural editing features. These editing features allow the end user, while filling out the form, to modify the structure of the XML data as the XML Schema allows. Structural editing is what makes InfoPath such an attractive offering compared with its alternatives. The Hyperlink, Expression Box, Picture, and Rich Text Box controls round out the controls available in InfoPath 2003.
Figure 1.1 Controls task pane in InfoPath 2003
We mentioned earlier that the data and the presentation layers are two disparate concepts. We've already discussed the presentation layer, but we haven't yet focused on the data. When we refer to "data," we really mean "data and structure." XML consists of hierarchical elements that may or may not contain text content. The definition for the XML structure is bounded by the rules of the XML Schema. (We will talk more about XML Schema in Chapter 4.) InfoPath abstracts away the XML Schema details through the Data Source task pane (DSP; see Figure 1.2). The DSP is a design-mode feature that shows what the XML Schema allows. If you don't have an XML Schema lying around, there's no need to worry. InfoPath automatically builds the XML Schema as you insert new controls onto the designer view. Inserting a control into the form may create either a field or a group in the DSP. This process populates the DSP based on which controls are selected. The newly inserted controls are bound to the newly created data source. The word binding describes the connection between what the user sees and what data is stored behind the scenes. We'll talk more about binding in Chapter 4.
Figure 1.2 Data Source task pane in InfoPath 2003
Binding sounds easy, right? It is—for most situations. But due to the flexibility of hooking up any data source to any controls, getting into odd binding dilemmas is inevitable. Design-time visuals are icons displayed on your form controls as you design your form template. These visuals serve as handy reminders to a designer that the form may be broken. We will discuss this versatile feature in more detail in Chapter 4.
Besides the visual zest, let's look at the different ways to pull external data into an InfoPath 2003 form. Secondary data sources are used to connect to databases, SharePoint libraries or lists, and Web services. Say your car registration form template has a Drop-Down List Box control containing all 50 states in the United States. When creating your form template, you could enter each state manually when creating the list items for the control, but it's probably easier to point the Drop-Down List Box control to an existing database. SharePoint servers are somewhat ubiquitous in high-tech small business. Pulling a real-time list of manager names or part numbers into your form allows it to always be up to date with no intervention on your behalf.
Web services have created a growing sensation throughout the Internet community for the last several years. Any popular search engine will yield innumerable results when you query for Web services. Ironically, many search engines also expose a Web service for you to do the searching. InfoPath supports connecting to these Web services without you, as the form designer, writing a single line of code. All you need to know is where the Web service resides. So forget about details like the Web Service Definition Language (WSDL), input parameters, and output parameters that you would need to understand if using other form tools. However, if you wish to deal with those aspects of the Web service using InfoPath 2003, you can access them by writing script code against the InfoPath OM.
The InfoPath OM in version 2003 is designed as a programmatic extension to many features provided in the InfoPath UI and some features that are not. The OM is not a superset but rather a supplement to the functionality available from the UI. To access the OM in InfoPath 2003, you could choose to write either JScript or VBScript in the Microsoft Script Editor (MSE). MSE is the Microsoft Office–bundled development environment of choice for scripting languages. InfoPath even has an extensive help system built into MSE that provides on-demand, context-sensitive help while scripting InfoPath objects.
So let's say that we've made the final touches on our new InfoPath form template by adding some JScript code using MSE. We're all ready to roll the form template out to our team. It's time to publish our form template. Publishing is a short process to deploy the form template to a location accessible by users. A few steps through a wizard is all it takes to properly put your template on a network file share, SharePoint site, Web server, or other shared location.
We've exhausted our brief talk of the InfoPath design mode for now. Let's peek at some of the important features you can find while filling out a form. As mentioned earlier, the UI is instantly familiar. You can expect the standard Microsoft Office set of features, such as cut, copy, and paste; a dizzying array of font formatting options; spell checking; find and replace; and clip art (to name a few).
What's so special about InfoPath? It sounds a lot like Word in many ways. However, InfoPath has two key advantages: An InfoPath form uses XML data, and InfoPath offers data validation, which is not found in Word. If you are an application developer, you will appreciate the tight integration between XML data type validation and the InfoPath UI. You can think of data validation as a way to guide your users to format their input as you determine. For example, if you want a phone number, you could easily use a text box that accepts any text the user types. But with data validation, you can disallow a phone number if it's not ten digits or has non-numeric characters. InfoPath's validation model is also extensible by using the InfoPath OM and writing custom form code.
A popular way to make your form template more interactive is to use conditional formatting. Take an expense report form that adds up prices from a list of items purchased during a business trip. You can design the form template so that if the sum of expenses is more than $1,000, the text for the total value will change from a calm black to an attention-getting bold red. Conditional formatting can be used throughout your form template to not only change fonts but to show and hide regions of your form as well.
It's great to have your users happily filling out your forms. But how do you make sense of the data saved in XML files? InfoPath has convenient, built-in reporting features to bring together data for you and your users. The first of these reporting functions is form merge. When a user selects multiple saved forms, InfoPath aggregates the data from each saved form into a single new one. A common use for this feature is rolling up status reports for the boss. InfoPath also exposes custom form merging for advanced developers by allowing them to write their own custom XSLT. InfoPath 2007 made some great improvements to this customization experience by supporting custom merge actions in design mode. Another way to report InfoPath form data is to export it to Excel. Sometimes InfoPath may not be the best environment to do complex spreadsheet functions like pivot tables. Exporting the data to Excel is a simple click away, and you can customize the process by exporting specific parts of the data. Once data is exported to Excel, you can create pivot tables and charts to help you analyze the data. Since InfoPath is a powerful data-gathering tool, reporting options such as form merging and export to Excel help round out the story for bringing data together in a useful way.