分類存檔: InfoPath 2007 // 表單伺服器

快速撞擊: 直接從 SPListItem 在 SharePoint 中讀取 InfoPath XML

我過工作的一個專案需要從 InfoPath 表單中提取附件. 有一些好的資源來解析 InfoPath 表單 (只是 XML 檔有哪些, 所以它是其實很簡單).

雖然我建設專案, 我開始下載 InfoPath 表單並將它保存到我的本地硬碟上. 我的 c# 代碼直接從該實例讀取. 不過, InfoPath 表單真正生活在 SharePoint 表單庫內. 我做了一點善良的半搜索來找出如何直接從圖書館讀,幾乎放棄了, 在這種情況下我會將表單保存到本地臨時目錄和讀它從那裡. 不過, 沒有必要去完這些程式,你可以閱讀它直接從庫. 這小小的代碼片段展示了如何:

/// 類定義的東西, 包括:
私人 SPFile mySharePointFile; /* SPList 的一部分 */
// 這裡是更多的代碼和內部類的方法,我們有:
XmlTextReader 有;
有 = 新增功能 XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.無;

textReader.Read();

// 如果該節點的值

同時 (textReader.Read())
{

......,等等等等......

他們的關鍵位以上是我們可以讀取直接通過 OpenBinaryStream InfoPath() 上 SPFile 作為 XmlTextReader 的建構函式的參數的方法調用. 它的偉大工程.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 標籤:

以程式設計方式從 InfoPath 表單中提取附件 (包括它們的名稱!)

我有一個用戶端,利用 InfoPath 和工作流費用的入門級解決方案. 在審批過程中的一個點, 我需要生成具有良好 InfoPath 資料以及附件本身的所有電子郵件, (歎息) 有人可以注意到這些資料,手動重新到 Oracle 資料庫的應用程式鍵.

它不是很難到達或解析 InfoPath 表單. 我不知道如何處理附件, 然而. 後一兩個小時的撬撥左右互聯網 (永恆!) 發現了這篇文章: http://support.microsoft.com/kb/892730

它提供一些方便的代碼,以從表單中的一個節點中提取附件. (您仍然需要找到的節點及其所有的, 但這是只是 XML 解析).

我知道附件是 base64 編碼,原先只提取的路徑下的 base64 資料, 解碼它並將它保存. 不過, 我很快意識到我不知道如何獲取檔案名本身,直到發現了上述第條.

我其實已經很早發現, 但其人格分裂推遲. 一方面, 這篇文章 * 說 * 真好,InfoPath 2007. 然而, 代碼和說明,所有關于 Visual Studio 2003 和對 InfoPath 的引用 2003.

底線, 第條規定的代碼工作對我來說 (到目前為止). 我可以得到我的 InfoPath 表單, 我可以解析它, 我可以查找和解碼附件和我知道它的名字. 你還能找到更多問一個人的生活?

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 標籤: ,,

如果你擔心您的 SharePoint 環境可能會有點不健康, 讓我來的幫你解決, 與健康檢查.

使用 InfoPath FBA 環境中管理審核組

我有我需要實現基於表單身份驗證中使用 InfoPath 的開支審批流程 (FBA) 使用表單服務環境 (基於 web 的 InfoPath).

有兩個批准組和過程的工作方式:

  • 使用者填寫一份開支報告,並將它提交審批.
  • 這將觸發發送電子郵件至第一個級別的核准者組.
  • 第一級批准人審查並批准或拒絕該報告.
  • 如果第一個級別的人批准它, 系統會通知第二級別的核准者.

InfoPath 側的事情, 我有不同的部分隱藏/顯示基於該使用者是否之一的這些審核組成員.

在使用者名的 FBA 環境中() 函數始終返回空白, 不幸的是. 我已經建立了一個自訂清單被稱為"審核組".

不要添加清單中的任何其他列.

打開表單時, 它有一個像這樣的規則:

image

"設置欄位的值"在這裡:

image

這基本上說: 通過尋找任何查詢的查詢批准組自訂清單和篩選器的行位置標題值 ="北歐".

如果返回的任何值, 然後當前使用者是該組的成員. 我知道它包含該值,因為該字串的長度大於零.

通過確保審核組清單中的各個項關閉迴圈. 在運行時, 如果當前使用者不具有適當的安全訪問到該專案然後查詢不會返回它, 字串長度將為零,現在你知道當前使用者不是該組的一部分. 根據需要在表單中,您可以使用這一事實.

這是超級簡單的撰寫. 我趕時間或我會提供更多細節.

我不知道我在 FBA 的環境中,它是多麼重要. 這可能會在非 FBA 環境中工作,但我可以想像情況下,這會很有用.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 標籤: ,

InfoPath // 一種解釋為"未處理異常時呈現表單 System.Xml.XmlException 的: 解析名稱時意外的檔結尾已經發生. “

今天工作 InfPath 表單上,並撞著了一位老朋友, "未處理的異常時呈現形式 System.Xml.XmlException: 解析名稱時遇到意外的檔結束已發生"。

這發生在我身上很久以前,我不知道到底是我沒有去解決它. 老實說, 我覺得我已經被轉換為一個新專案,從來沒有見過這種解決 (我更換了對付那頭痛). 還記得嗎這是魔鬼的問題. 我花了幾個不成功的天處理它. 從那時起, 見過這至少一次在過去一年來在 MSDN 論壇上,從來沒有真正看到它的答案.

我打到今天,幸運的是這次 , 有剛才的變化到表單. 我退縮了這種變化和這個問題消失了. 原來它是可以創建從範本生成在圍牆的形式伺服器端解析錯誤的方式使用 InfoPath 設計器.

以我為例, 問題被引起這些步驟:

  1. 向資料來源添加新的元素,作為一個文字欄位.
  2. 將其放到表單上.
  3. 在下拉清單中更改它的顯示.
  4. 告訴下拉清單中,把其從自訂 SharePoint 清單中的值.

我不知道是否這些步驟會導致出現問題或也許, 以某種方式本身的清單中的資料是一個問題. 我要去試驗一下,看看是否我可以把釘鬧市區他參數,對此,任何更多的細節.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 標籤:

嵌入內部 InfoPath 表單開發人員說明

我仍然生活在 InfoPath 表單的世界,使那些"小"的變化之一向表單所需的, 不幸的是, 打破了我兩個星期前通過與它的命名約定. 我對自己說, "人去看看這東西一年從現在,說, ' 保羅在想些什麼? 由朱庇特, 他的命名約定沒有任何意義!”

我意識到我能為此創造一個表單上的視圖,然後, 再來一次, 意識到,我可以一直一直這樣的事情. 我添加到 InfoPath 表單這樣的"開發人員備註"視圖:

image

這樣,使用者不能訪問這種觀點已經將表單配置,因此, 它只是與 InfoPath 用戶端在設計檢視中可見. 現在我感覺到有點接種反對一些未來的未知開發人員看著我的表單和關於我的壞想法. 恍惚之間!

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 標籤:

管理 InfoPath 視圖

我似乎走到了 InfoPath 的階段,, 從藍色, 我製作一大堆表格. 我的手指學習如何使用該工具好,然後經過九個月的乾旱得再從頭學習.

我在 InfoPath 階段中,我感到了很多意見與創建 InfoPath 表單. 您可能注意到的是,在 InfoPath 的一件事 2007 用戶端顯示視圖按字母順序排列. 這是一個真正的滋擾幾次. 這些天我最好的技術是將視圖名稱號碼開頭,他們總是在我想要的順序顯示, 此處所示:

image

我希望我已經一直在做這.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 標籤:

InfoPath 表單小賣部, 基於表單的身份驗證 (FBA) 與檔的唯一名稱

已經對某些 InfoPath 表單本周在 MOSS 中 FBA 環境中工作和學習, 後要部署到生產環境中使用 FBA 表單區域的使用者名() 功能不起作用. 我用它來生成唯一的檔案名.

井, 該函數不會在 FBA 環境中工作 (至少, 不走出困境). 和, 經過思考, 我曾計畫的方式使用使用者名不會保證了唯一的檔案名在任何事件.

我的解決辦法是使用現在() 函數和觸發表單的載入規則. 我需要將檔案名稱分配資料元素,當它是空白:

image

image

這種方法的優點是只有一次集檔案名稱. (再不在螢幕抓圖, 但只有火當"myFilename"為空時的規則放一個條件). 我用來在資料來源級別設置的檔的名稱. 通常, 我會做的東西 (壞) 喜歡這個:

image

問題是,如果在週一打開表單,使用者 A 和使用者 B 改變了它在週二, 由於兩個不同的使用者將其保存為不同的使用者名稱,你就會最終具有兩種不同形式.

所以, 煩人 FBA 可以是一般和使用 InfoPath 特別是, 它讓我重新思考小但很重要的技術細節和做法,否則不會做!

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 標籤:

快速和簡單: 讓 InfoPath 表單唯讀 (InfoPath 表單在 MOSS 中的服務)

有這樣一個常見的業務方案:

  • 使用者填寫 InfoPath 表單.
  • 提交表單.
  • 長時間運行的工作流過程揭開序幕.
  • 在工作流運行時, 我們不希望有人來更改表單的內容.

本例中 office.microsoft.com 描述如何創建一個單獨的視圖"" 並將標記為唯讀的整體觀. 這是一個可行的方法,但缺點是你有效地創建兩個整個版本的同一個表單,必須現在保持他們同步手動. 如果將欄位添加到可編輯檢視, 然後必須將其添加到不可編輯檢視以及. 隨著時間的推移, 與不同的開發人員, 可以有一些分歧.

此替代方法可能會在某些情況下更好地工作:

  • 稱為"IsEditable"在表單中添加新欄位.
  • 它的預設值設置為 true.
  • 促進它發佈到 MOSS 時.
  • 在工作流中, IsEditble 的值設置為 false.
  • 回到表單.
  • 添加一條規則,"後打開的表單", 禁用您保存按鈕當為 false 時 IsEditable.

這種方法的缺點是,所有的欄位仍會在螢幕上編輯. 使用者可以得到一個錯誤的印象,他們其實可以更改內容. 你可以減輕,置於表單禁用一些文本, 在可能的情況下大跨頁的頂部的紅色字母.

在一個專案中, 我創建了一個"工作流狀態" 視圖. 隨著工作流, 它會更新已晉升從表單的特定狀態欄位. 當使用者打開該表單, "打開表單" 規則自動切換到視圖和使用者有漂亮的小摘要狀態.

</結束>

訂閱我的博客.

切換視圖視圖基於 InfoPath Form 中的使用者 ID

我們已開發 InfoPath 表單具有多個視圖,支援新員工 / 入職流程. 當公司雇傭的一個新的人, IT 部門和其他團體需要採取的行動 (設置工資單, 啟用對相應的應用程式的訪問, 找到一張桌子, 等). 我們使用表單,但表單的不同視圖為每個這些職能.

在這個公司, 在業務流程中所涉及大多數是人的精通 IT 的, 所以,當他們訪問的表單, 其預設視圖是一種"功能表" 查看與直接給他們的特殊功能的按鈕. 不過, 我們需要簡單化的新員工直接經理. 這個人不應該看到任何 IT 相關的東西. 事實上, 她應該看到的只是一個視圖表單的不會連選項以查看其他視圖.

在我們的案例, 直接經理的帳戶直接綁禮貌的形式 連絡人選擇器 (而我總是想叫"人員選取器" 因為某些原因).

步驟如下:

1. 在設計模式中, 轉到工具-> 表單選項-> 打開和保存.

2. 選擇"規則".

3. 創建一個新的規則,其操作是"切換以查看" 和其條件利用使用者名() 功能.

使用者名() 返回"簡單" 沒有域使用者名. 如果我用"domainpagalvin"的憑據登錄到 SharePoint, 使用者名() 返回"pagalvin".

連絡人選擇器提供一個連絡人資訊的三位. "AccountID" 部分是對於這種情況下最有用. 唯一讓這甚至有點挑戰的是,連絡人選擇器 (在我的環境無論如何) 返回的域和使用者 ID, 如在"domainpagalvin". 這阻止我們做直接的平等條件自 AccountID (""domainpagalvin) 永遠不會平等的使用者名() (""pagalvin).

我們可以繞過此使用"包含" 運算子: AccountID 包含使用者名().

我們可以採取它進一步和 pre 掛起一個硬式編碼域使用者名前面() 讓我們平等檢查和消除誤報的風險上的函數包含運算子.

我們將不得不真的像自動切換為其他基於 AD 安全性群組成員身份的使用者視圖. 舉個例子, 當"它分析的成員" 組訪問表單, 自動切換到 IT 分析視圖. 我們沒有時間來實現它, 但我首先想到的是創建一個 web 服務,會有像"IsMemberOfActiveDirectorySecurityGroup"的一種方法, 將它傳遞使用者名() 並返回返回 true 或 false. 有沒有人有任何其他嗎, 更多聰明的主意? 有任何 SharePoint 的函數,我們可以利用從 InfoPath 來做這個決定?

</結束>

Technorati 標籤: