Form Development and Deployment Lifecycle
Developing and deploying an InfoPath form template for use on a server running InfoPath Forms Services requires knowledge of how to create a browser-compatible form template, how it becomes browser-enabled, and the various states that a form template can have after it is deployed.
The Form Template Lifecycle
A browser-compatible form template goes through many stages on its way to becoming a browser-enabled form template, meaning that it can be filled out in the browser. Figure 1 illustrates the stages, or states, that a browser-compatible form template can have.
Figure 1. Lifecycle of a Form Template
A browser-compatible form template must first be created for this process to begin.
Creating a Browser-Compatible Form Template
A form template created in Microsoft Office InfoPath 2007 can be compatible with the InfoPath client, or with the client and InfoPath Forms Services. Either designated initially or changed after the form template has been created, the compatibility information is available on the status bar in the InfoPath design user interface, on the Design Checker task pane, and on the Compatibility page of the Form Options dialog box.
For more information about creating a browser-compatible form template, see Developing and Deploying Form Templates for InfoPath Forms Services.
For more information about the subset of controls available when designing browser-compatible form templates, see Design-Once Feature Compatibility.
Deploying a Browser-Compatible Form Template
There are two different categories of browser-compatible form templates; those that contain code and those that contain only declarative business logic, such as rules, calculations, and conditional formatting. Deploying form templates that contain managed code involves more steps and requires a server administrator. For more information about deploying both types of browser-compatible form templates, see Developing and Deploying Form Templates for InfoPath Forms Services.
The following are the various states that a form template can have on a server running InfoPath Forms Services.
Uploading: The user form template, which does not contain code, is being deployed from within InfoPath to a SharePoint site, or the administrator-approved form template, containing managed code, is being deployed from the Upload Form Template page of the SharePoint Central Administration site.
Converting or Pending Conversion: The form template is awaiting conversion or is being converted.
A browser-compatible form template becomes a browser-enabled form template when it has finished converting.
Normal: The form template has been converted and is available for use in a browser. The form template is browser-enabled.
Upgrading: The form template is being upgraded from a previous version. At this point, no new forms can be created from the old form template files. Depending on the option chosen from the Upload Form Template page of the SharePoint Central Administration site, existing form sessions based on the old form template are either allowed to complete or are terminated.
Quiescing or Quiesced: The form template is being retired or has been retired from use on the server running InfoPath Forms Services. Existing sessions may be allowed to complete in the time specified on the Quiesce Form Template page of the SharePoint Central Administration site.
Removing: The form template and associated files are being removed from the site.
Error: An error has occurred in the form template. See the details of the error for more information.
Automating Form Template Administration
The following members of the Microsoft.Office.InfoPath.Server.Administration namespace, available in the Microsoft Office.InfoPath.Server.dll located at drive:\Program Files\Microsoft Office Servers\12.0\Bin, can be used to automate the management of form templates. You can return the form template state by using the FormTemplateStatus property of the FormTemplate class. The values are based on the FormTemplateState enumeration.
Converting or Pending Conversion: There is no way to explicitly invoke the conversion process for a form template. The ReconvertAll method may be useful when all deployed form templates need to be reconverted.
Normal: Use the FormTemplateCollection to access individual form templates.
Upgrading: Upgrade form templates by using the UpgradeFormTemplate method.
Removing: Use the RemoveFormTemplate method to remove it from the server.