了解 InfoPath 物件模型和開發環境

Microsoft InfoPath 2013 支援兩種程式設計模型,以在窗體範本中開發商業規則,並支援從 Managed 程式代碼進行外部自動化。

InfoPath Forms Services 可在 SharePoint Server 2013 中使用,提供填寫 InfoPath 窗體的網頁瀏覽器體驗。 以瀏覽器相容表單範本 (.xsn) 所建立的表單,若是部署至執行 InfoPath Forms Services 的伺服器,則在沒有安裝 InfoPath 的電腦上,這些表單會從網頁瀏覽器中開啟,若有安裝 InfoPath,這些表單就會在此應用程式中開啟。 InfoPath Forms Services 還提供一個物件模型,讓相關於 InfoPath 表單範本發佈與管理的伺服器工作能夠自動化。

InfoPath 2013 支援 Visual Studio 2012 程式設計環境及其相關聯的程式設計語言,本主題稍後會加以說明。

InfoPath 程式設計模型

InfoPath 2013 支援兩種物件模型,可在表單範本中開發商業規則:

  • InfoPath Managed 程式碼物件模型

  • 新的 InfoPath 2003 相容 Managed 程式碼物件模型

此外,InfoPath 2013 可讓您撰寫 Managed 程式代碼,從外部應用程式將 InfoPath 自動化。

InfoPath Forms Services 提供一個物件模型可將伺服器工作自動化,例如,從伺服器上執行的程式碼來驗證及上傳表單範本,此工作需要有伺服器管理員的存取權和使用權限。

注意事項

InfoPath Filler 2013 可以開啟和執行在舊版 InfoPath 中建立的 InfoPath 窗體範本解決方案,該解決方案使用以 JScript 和 VBScript) (腳本語言撰寫的商業規則。 但是,對於以指令碼寫成商務邏輯的表單範本,InfoPath Designer 2010 並不支援建立或修改這類表單範本。

InfoPath Managed 程式碼物件模型

InfoPath 2013 Managed 程式代碼物件模型會在兩個元件中實作,這兩個元件都命名為 Microsoft.Office.Infopath.dll。

其中一個版本的元件會實作 InfoPath 物件模型的子集,其中只包含部署為已啟用瀏覽器之窗體範本的商業規則中所支援的類型和成員,這些窗體範本是在 SharePoint Server 2013 上執行且具有 InfoPath Forms Services 的窗體範本。 針對這個組件所撰寫之具有商務邏輯的表單範本,將會在 InfoPath Filler 和網頁瀏覽器中開啟及執行。

另一組件版本則實作其他類型和成員,這些類型和成員可提供的功能,是供瀏覽器使用的表單範本其商務邏輯所不支援。 針對這些在此組件中的其他類別和成員所撰寫之具有商務邏輯的表單範本,僅能在 InfoPath Filler 編輯器中開啟及執行。

注意事項

您可以撰寫條件式邏輯,使用 Environment 類別的屬性來判斷在表單範本執行) ,InfoPath Filler 或網頁瀏覽器 (哪個環境。 藉由使用此條件式邏輯,您的商業規則可以在在網頁瀏覽器中運作的程式碼,以及針對只在 InfoPath Filler 編輯器中運作的類別和成員所撰寫的程式代碼之間進行分支。 如需詳細資訊,請 參閱撰寫決定運行時間環境的條件式邏輯

至於您在為表單範本進行新增及編譯時 InfoPath 會使用哪個組件,則取決於您在InfoPath Designer 中開始設計新表單時,從 Microsoft Office Backstage [新增] 索引標籤中選取的是 [空白表單][空白表單 (InfoPath Filler)] 表單範本。 使用 [空白表單] 表單範本建立的表單,所用的組件是只包含部署為供瀏覽器使用之表單範本其商務邏輯所支援的類型和成員。 使用 [空白表單] 表單範本建立的表單,可在網頁瀏覽器和 InfoPath Filler 中開啟。 使用 [空白表單 (InfoPath Filler)] 表單範本建立的表單,所用的組件是實作其他類型和成員,也就是這些類型和成員提供的功能,是供瀏覽器使用的表單範本其商務邏輯所不支援,這些表單僅能在 InfoPath Filler 中開啟。

提示

開始設計表單範本之後,您可以變更表單相容性設定來變更使用的元件。 若要這樣做,請按兩下 [開發人員] 索引標籤上的 [語言],然後按兩下 [類別] 清單中的 [相容性]。 在 [ 表單類型 ] 清單中,選取 [網頁瀏覽器 窗體],以建立可在SharePoint Server 2013 上部署為瀏覽器相容表單的表單。 選取 [InfoPath Filler 表單] 以建立只能在 InfoPath Filler 編輯器中執行的表單。 [ 表單類型 ] 清單中的其他選取項目支援與 InfoPath 2007 和 InfoPath 2003 相容。

此物件模型這兩個版本的類別和成員都會透過 Microsoft.Office.InfoPath 命名空間來公開。 下表列出元件在 InfoPath 2013 安裝目錄中的所在位置。

組件 描述
Microsoft.Office.InfoPath.dll (位於 C:\Program Files\Microsoft Office\Office15\InfoPathOM\InfoPathOMFormServices)
物件模型的子集,其中只包含要在部署至執行 InfoPath Forms Services 之伺服器的窗體範本商業規則中執行的類型和成員。
Microsoft.Office.InfoPath.dll (位於 C:\Program Files\Microsoft Office\Office15\InfoPathOM)
「完整」物件模型,包括不會在部署至 InfoPath Forms Services 之窗體範本的商業規則中執行的類型和成員。

注意事項

[!注意事項] 在設計階段撰寫及編譯程式碼時,會使用本節前述所參照的組件。 在執行階段,在 InfoPath 中開啟表單範本時所用的組件,位於 InfoPath 安裝所在之電腦的「全域組件快取」(GAC) 中。 當在執行 InfoPath Forms Services 的伺服器上從網頁瀏覽器中開啟表單範本時,所使用的組件會位於此伺服器上。

提供兩個組件有助於確保商務邏輯只會包含針對支援之表單編輯器 (網頁瀏覽器或 InfoPath Filler) 的合適物件模型成員所發出的呼叫。 例如,當您在編輯程式碼時,IntelliSense 功能 (如陳述式完成及內嵌文件) 將只會針對目標表單編輯器適合的物件模型成員顯示及運作。

在 Microsoft.Office.InfoPath 組件所公開之 Managed 程式碼物件模型的兩個版本中,導覽及更新商務邏輯中的 XML 資料儲存區需要呼叫 System.Xml.XPath.XPathNavigator 類別的成員。 在 InfoPath 2003 中,導覽及更新 XML 資料儲存區需要呼叫 MSXML 類別的成員 (適用於以 JScript 或 VBScript 建立的商務邏輯),或是需要透過 Microsoft.Office.Interop.InfoPath.SemiTrust 命名空間提供之 MSXML 類別的包裝函式進行呼叫 (適用於以 C# 或 Visual Basic 以及 Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET 所建立的商務邏輯)。

使用 XPathNavigator 類別的成員可讓相同的商業規則程式代碼支援在 InfoPath 用戶端中開啟的窗體範本,以及從 SharePoint Server 2013 開啟且網頁瀏覽器中 InfoPath Forms Services 開啟的 Web 窗體範本的 DOM 操作。

如需如何在 InfoPath Managed 程式代碼表單範本的商業規則中使用 XPathNavigator 類別成員的相關信息,請 參閱使用 XPathNavigator 和 XPathNodeIterator 類別

新的 InfoPath 2003 相容 Managed 程式碼物件模型

InfoPath 2003 相容的 Managed 程式碼物件模型,最早是出現於 Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET 所隨附的 InfoPath 2003 Service Pack 1 中,用來以 Managed 程式碼撰寫表單範本中的商務邏輯。 InfoPath 2013 仍支援此物件模型,以提供與 InfoPath 2003 的相容性。

這個物件模型的類別和成員會透過 Microsoft.Office.Interop.InfoPath.SemiTrust 命名空間公開。 此物件模型會在下列元件檔案中實作,該檔案位於 C:\Program Files\Microsoft Office\Office14 資料夾中。

組件 描述
Microsoft.Office.Interop.InfoPath.SemiTrust.dll
針對使用 C# 或 Visual Basic 撰寫的表單範本商業規則,針對 InfoPath COM 物件模型提供 COM Interop。

注意事項

雖然 InfoPath 2013 仍支援使用 Microsoft.Office.Interop.InfoPath.SemiTrust 元件所提供的 COM Interop Managed 程式代碼物件模型建立商業規則,但使用此物件模型所撰寫的商業規則不支援透過 InfoPath Forms Services 部署至 SharePoint Server 2013 的瀏覽器啟用表單範本。 供瀏覽器使用的表單範本,其自訂商務邏輯必須使用 InfoPath Managed 程式碼物件模型。

從 Managed 程式碼自動化 InfoPath

除了以 Managed 程式碼撰寫商務邏輯之外,開發人員還可以使用在外部應用程式中執行的 Managed 程式碼來自動執行 InfoPath。 這項功能以及撰寫程式碼所需的組件,最早是出現在 InfoPath 2003 Service Pack 1 中。 自動化 InfoPath 的物件和成員已更新,可在您撰寫 InfoPath 2013 的外部自動化程式碼時提供其他功能。

用於外部自動化的類別和成員是透過 Microsoft.Office.Interop.InfoPathMicrosoft.Office.Interop.InfoPath.Xml 命名空間所公開。 撰寫自動化程序代碼所需的元件檔案位於 C:\Program Files\Microsoft Office\Office14 資料夾中。

組件 描述
Microsoft.Office.Interop.InfoPath.dll
針對使用 C# 或 Visual Basic 撰寫的外部自動化程式代碼,針對 InfoPath COM 物件模型提供 COM Interop。
Microsoft.Office.Interop.InfoPath.Xml.dll
會針對使用 C# 或 Visual Basic 撰寫之外部自動化程式碼中的 XML DOM 操作,提供 MSXML 上的 COM Interop。

如需 Microsoft.Office.Interop.InfoPathMicrosoft.Office.Interop.InfoPath.Xml 命名空間所提供之物件模型的詳細資訊,這些命名空間專門用來使用來自外部應用程式的 Managed 程式代碼將 InfoPath 應用程式自動化,請參閱 InfoPath 開發人員中心

InfoPath Forms Services 物件模型

自動化 InfoPath Forms Services 管理工作的Managed程式代碼物件模型會在位於 <Microsoft SharePoint Server 2013 安裝上磁碟驅動器>:\Program Files\Microsoft Office Server\15.0\Bin 的 Microsoft.Office.InfoPath.Server.dll 中實作。

組件 描述
Microsoft.Office.InfoPath.Server.dll
用於自動化 InfoPath Forms Services 工作的物件模型,例如上傳、啟用或停用已啟用瀏覽器的表單範本。

如需 InfoPath Forms Services 物件模型的詳細資訊,請參閱 MSDN 上提供的 SharePoint Server 2013 軟體開發人員套件 (SDK) 。

InfoPath 開發環境

您可以使用已安裝 Microsoft Visual Studio Tools for Applications 2012 附加元件的 Visual Studio 2012,在 InfoPath 2013 窗體範本中執行商業規則的開發。

注意事項

InfoPath 2013 不支援建立或編輯使用以 JScript 或 VBScript 撰寫之商業規則的表單範本,不過 InfoPath Filler 支援開啟舊版 InfoPath 中建立的腳本型窗體範本。

另請參閱