每月檔案: 11 月 2007

MOSS 告訴我我的列名稱是保留或使用中 … 但它不是

更新 12/04/07: 請參閱 此 Microsoft 知識庫 (http://support.microsoft.com/kb/923589) 相關資訊.

實際上, 原來它是, 但 調皮 MOSS 不得不使困難.

我的客戶沒有他 MOSS 網站上週末一些開發工作. 它是有點混亂,他真的這樣做, 但最終的結果是這:

  • 他試圖添加一個名為"數量的網站列" 和青苔的答覆: "您輸入的列名稱已在使用或已保留. 請選擇另一個名稱。"
  • 他試圖將其添加到另一個環境和那作品. 因此, "數量" 不是一個保留的名稱.
  • 他將嘗試查找現有的網站列命名為"數量" 在該網站集. 他找不到它.

我做了一些 研究, 甚至一些編碼, 打蠟哲學 終於找到一個名為數量列做了, 事實上, 存在. 正是在"_Hidden" 集團. 因此, 我們找不到它通過 SharePoint 使用者介面.

它怎麼去那裡? 我不知道, 但我有一種理論 (或者是我的老婆會調用它, "等等"). 地方線沿線, 一 神話般的四十範本 添加,並可能在一個網站中的網站集啟動. 它然後被停用 (或網站中刪除). 網站欄, 然而, 但在"_Hidden 依然" 集團. 如果有人知道更好, 請讓我知道通過 電子郵件 或在評論中發佈.

SharePoint 說的真話. 它是幾乎不值得指出的,該消息不是很有用,因為它可以. 它會很高興看到這消息叉成兩個不同的消息在未來: 1) 說的列名稱保留或不是. 2) 如果它未被保留, 顯示該網站, 或者至少組, 在已使用的列的名稱.

</結束>

Technorati 標籤: , ,

本 OM 資料通過一個自訂清單 (或, 然而另一個 OM 資料 Displayor [像 YACC, 但不同])

今天, 我花了的幾個小時追蹤消息"您輸入的列名稱已在使用或保留背後的根本原因. 請選擇另一個名稱。"

可以創建這一欄, 刪除並重新創建另一個環境中, 所以我知道這不是一個保留的名稱. 不過, 我只是找不到列中任何地方通過任何網站上標準的 SharePoint 使用者介面網站集合中.

我過帳到 MSDN 論壇在這裡 和不屈不撓 安德魯 · 伍德沃德 我指出了方向的基礎物件模型資料.

我去 codeplex 找到一些工具,將説明我同行到 OM 的基礎資料和説明我找到麻煩.

嘗試了幾種工具,他們非常酷和有趣,但在結束, 使用者介面並不是適合我的目的. 我不批評他們以任何方式, 但顯然工具製造商不心中有我的問題,他們在創建它們的 UI 時 :). 大多數人似乎要投資大量的時間和精力創建工作站 / 用戶端應用程式提供樹狀檢視, 用滑鼠右鍵按一下內容功能表等等. 這些都是很好,所有, 但這是很多的工作,以創建頂級的使用者體驗,也是非常靈活.

我真的很需要這個問題的答案. 我想到,如果我能得到的所有網站列到一個自訂清單中的網站集合中, 我可以篩選, 排序和創建視圖,能幫我找到這個假想現有列 (它沒有, BTW). 我走在前面,後來,和一兩個小時, 我的網站中的所有列已都載入到與分組的自訂清單嗎, 排序,等等。. 五分鐘後答案.

如果我成功接管世界, 我想我會命令所有 SharePoint 工具供應商必須認真都考慮堆焊他們自訂清單中的物件模型資料. 這種方式, 我擁有的力量 若要搜索任何方式我想 (約束, 答案是肯定的, 由標準 sharepoint 功能).

設計器 SharePoint 工作流自訂操作 — 觀察 <設計器將文字方塊綁定類型 =”StringBuilder” … />

只是有一個非常重要的區別這兩個定義之間的快速觀察:

<文字方塊綁定欄位 ="InParam1" DesignerType ="StringBuilder" Id ="2" 文本 ="輸入參數 #1"/>

與比較:

<文字方塊綁定欄位 ="InParam1" Id ="2" 文本 ="輸入參數 #1"/>

第一次像這樣顯示 SPD 中:

圖像

雖然這樣,後者所示:

圖像

我不確定這些截屏有多大幫助,但我會盡力製作它們,因此您必須查看它們🙂

這是觀察: StringBuilder 使您可以生成一個字串 (很明顯) 字串文本和工作流資料混合在一起 (通過"添加查找" 在左下角的按鈕). 當您使用添加查找按鈕, 它在表單中插入一個權杖"[%權杖 %]". 當 SharePoint 調用自訂操作, (在我的案子中的 C# 代碼), SharePoint 將此標記本身傳遞, 未標記的值. 如果您使用預設的設計器類型 (第二種類型), SharePoint 擴展標記並將標記的實際值傳遞到您的行動.

StringBuilder = 壞, 預設的設計器類型 = 好.

答案是肯定的, 這就是沒有我真正的意思. 不要試著向你自訂的操作傳遞一個參數,當設計器鍵入 = StringBuilder. 使用預設的設計器類型和鏈 StringBuilder 到它前面如果您需要構建複雜的字串,在您的工作流 (順便說一句這正是自己所做的要創建的電子郵件操作的動態主題, 但那是另一個博客條目的主題, har har).

<結束 />

過早的工作流啟動 — 非醫療解決方案

更新: 請參閱此 MSDN 的討論, 特別是最後一項: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. 它描述了一個可能短路這整件事的條件. 在短, 它可能使至少一個欄位強制一樣簡單.

我有一個文件庫,支援八個內容類型.

我有一個 SharePoint 設計師工作流,想要計算和分配"提醒日期" 通過簡單地減去 30 另一列從天, "截止日期". 這應該只發生為內容類型之一, "保險". 企業目標是產生一個顯示兩個類別的保險單據的 KPI: "即將過期" 和"過期。" (您可以閱讀更多關於這種 KPI 和更多堅固下鑽取 在這裡).

已配置了要火當創建新專案和修改專案時的工作流. 想法是,當一份保險的檔上傳, 我們計算"警告日期" 基於到期日期. 一雙視圖與 KPI 清單,當使用者點擊其主頁時突出顯示這些條件有關的工作.

這一戰略不能當上傳文檔.

我上傳的文檔和我被介紹元資料輸入螢幕. 在這一點, 我已經麻煩. SharePoint 已經, 過早地從我的視角, 發射工作流. 我還沒有機會來選取正確的內容類型,也不指定截止日期. 在同一時間, 工作流不會觸發,當我在這個時候按下提交按鈕. 還有一些內置的邏輯,"相信" 那第一次提交是的一部分"創建" 事件. 所以 … 我的工作流已發射並執行它的時候, 傳遞給它的中繼資料的預設值.

最佳解決方式就我知道的是插入"暫停直到" 工作流中的活動. 我有為工作流暫停 1 分鐘. 雖然它暫停, 我選擇的正確的內容類型, 輸入中繼資料和提交. 暫停的時間完成和工作流收益根據需要. (請注意,在我的環境, 從 SPD 的計時器工作流活動不能開箱即用. 你可能會有同樣的麻煩. 請參閱 在這裡 更多詳細資訊).

我不喜歡"魔法延遲" 工作周圍. 如果使用者上傳的文檔和電話響了,隨後的交談中,會發生什麼經久暫停? 我可以做更長的停頓, 但我還是不喜歡它.

我在這裡在 MSDN 論壇上寫了這: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1

SharePoint 安全基礎知識入門 / 避免常見的陷阱

更新 12/18/07: 請參閱刪除或修改預設的組名的一些技術的後果 Paul Liebrand 文章 (也見他下面的評論).

概述:

SharePoint 安全是易於配置和管理. 不過, 它已被證明是真的包裝他們的手在它附近一些第一次管理員難以. 不只如此, 我見過一些管理員來到一個完美的理解,在週一只把它丟了週五因為他們沒有做任何配置在這段時間. (我承認我自己有這個問題). 這篇博客希望提供一個有用的 SharePoint 安全引子和指向一些安全配置的最佳實踐.

重要說明:

這種描述基於開箱即用 SharePoint 安全. 我個人的經驗被面向各地苔蘚,所以可能會有一些苔蘚的具體東西在這裡, 但我相信它是準確的 WSS. 我希望看到的任何錯誤或遺漏的任何人都將點,在評論中或 電子郵件通知我. 我會改正後匆忙.

基礎知識:

為施行本概述, 有四個基本方面的安全: 使用者/使用者組, 安全物件, 權限等級和繼承.

使用者和組 打破降到:

  • 個人使用者: 拉扯了從活動目錄或直接在 SharePoint 中創建.
  • 團體: 從 active directory 直接映射或在創建 SharePoint. 組是使用者的集合. 組是全球化的網站集合中. 他們永遠不會"綁" 安全物件的特定物件.

安全物件 打破降到最少:

  • 網站
  • 文件庫
  • 清單和文件庫中的個別項
  • 資料夾
  • BDC 的各種設置.

那裡其他的安全物件, 但你得到的圖片.

權限等級: 捆綁的顆粒 / 在清單中包含諸如創建/讀取/項目剪除的低級別的存取權限.

繼承: 預設情況下從其包含的物件實體繼承安全設置. 子網站從其父項繼承許可權. 繼承他們網站的文件庫. 等等等等等等.

與使用者和組物件有關的安全物件的權限等級和繼承通過.

最重要的安全規則,來理解, 曾經🙂 :

  1. 組是簡單的使用者的集合.
  2. 組是全球網站集內 (e 小節. 沒有這種東西在網站級別上定義的一個組).
  3. 不耐的組名稱, 團體卻不, 在和自己的, 有任何特定的安全水準.
  4. 組在某一特定的安全物件的上下文中具有安全.
  5. 你可以到每個安全物件的同一組分配不同的權限等級.
  6. Web 應用程式策略勝過這一切 (請參閱下面的).

安全管理員組和使用者清單的海洋中失去了總可以依靠這些公理來管理和瞭解他們的安全配置.

常見的陷阱:

  • 組名稱錯誤地暗示的許可權: 外框, SharePoint 定義一組組名字暗示了固有的安全級別. 考慮"參與者"組. 一個熟悉 SharePoint 安全性可能會看看那名字,假設,那組的任何成員可以"作出貢獻" 對任何網站/清單/庫在門戶中. 這可能是真的,但並不是因為該集團的名字恰巧是"討論參與者". 這是唯一真正開箱即用,因為該集團提供了權限等級,使它們能在根網站添加/編輯/刪除內容. 通過繼承, "派遣" 集團也可能在每個分網站添加/編輯/刪除內容. 一個可以"打破" 繼承鏈和更改一個子網站的權限等級的成員的所謂的"參與者" 組不能在所有作出貢獻, 但只能讀取 (舉個例子). 這不會是一個好主意, 很明顯, 因為它將是非常令人困惑.
  • 組不在網站級別定義. 它很容易被混淆的使用者介面. Microsoft 提供了方便的連結到使用者/組管理通過每個網站的"人和組" 連結. 很容易相信,當我在網站"xyzzy" 我創建一個組通過 xyzzy 的人和團體聯繫起來,我只是在 xyzzy 創建只存在一組. 這不是個案. 我實際上已經創造了一群為整個網站集.
  • 組成員身份不會由網站不同 (e 小節. 到處都使用組是相同): 考慮"擁有者組" 和兩個網站, "HR" 和"物流". 它會正常想兩個獨立的個體將會擁有這些網站 — HR 擁有者和物流擁有者. 使用者介面輕鬆安全管理員責難這種情況下. 如果我不知道更好, 我可能會訪問的人和群體通過人力資源網站連結, 選擇"業主" 組並向該組添加我的 HR 主人. 一個月後, 物流上線. 訪問從物流網站中的使用者和使用者組, 添加"業主拉起" 集團. 我看到那裡 HR 擁有者和刪除她, 我在消除她從擁有者在物流網站的思考. 事實上, 我在消除她從全球的擁有者組. 接著而來的歡樂.
  • 故障到基於特定角色的名稱組: "核准者" 組是一個完美的例子. 什麼可以這組批准成員? 他們在那裡能批准它? 我真的想人物流部門能夠批准人事相關檔嗎? 當然不是. 始終命名組基於其在組織內的角色. 這將減少風險的組分配特定的安全物件所需的權限等級. 基於其預期角色名稱組. 在前面的 HR/物流場景, 我應該創建兩個新組: "HR 業主" 與"物流業主" 和分配每個合理的權限等級和那些使用者做他們的工作所必需的最低金額.

其他有用的參考:

如果你讓它這個遠:

請讓我知道你的想法通過評論或給我發電子郵件. 如果你知道其他有益的參考, 請這樣做!

Technorati 標籤:

快速而方便地: 創建資料檢視 Web 組件 (DVWP)

有豐富的 WSS 的偉大資訊 3.0 資料檢視 Web 組件 (DVWP) 從幾個來源網上. 不過, 我發現它是出奇地難以找到非常基本的第一步的資訊. 這裡是另一篇文章中的"快速和容易" 要解決這系列.

按照這些步驟來創建一個資料檢視 web 部件 (DVWP). 它們基於"公告" web 部件, 但適用于大多數清單.

  1. 創建通知 web 部件並將其添加到網站.
  2. 在 SharePoint 設計器中打開網站.
  3. 打開該網站的 default.aspx.
  4. 選擇通知 web 部件,然後按右鍵.
  5. 從內容功能表中, 選擇"轉換到 XSLT 資料檢視".

SharePoint 設計器將通知您此網站現在從其網站定義自訂. 這未必是壞事, 但也有重要的影響 (性能, 升級, 其他人) 超出了這個小小"快速和容易的範圍有哪些" 條目. 要獲取關於此主題的詳細資訊, 我推薦兩本書 在這裡 以及您最喜愛的互聯網搜索.

確認你是正確:

  1. 關閉並重新打開 web 瀏覽器 (為了避免意外地重新發佈原始的"添加新的 web 部件").
  2. 選擇 web 部件的下拉箭頭,然後選擇"修改共用 Web 組件" 從功能表中.
  3. 工具面板打開向右.
  4. 小組已經從其慣常的 set 選項更改成這:
圖像

“不能從 SharePoint 清單中獲取清單架構列屬性” — 描述-變通

這一周, 我們最後轉載的問題,報告了由遠端使用者: 當她試圖匯出為 excel 清單的內容, 事情似乎開始工作, 但然後 Excel 會彈出一個錯誤: "不能從 SharePoint 清單獲取清單架構列屬性". 她跑了辦公室 2003, windows XP 和連接到苔蘚.

搜索互聯網,並看見一些投機但沒有內容 100% 確定. 因此, 這篇文章.

問題: 匯出視圖以 excel,包含日期 (日期 = 列的資料類型).

什麼為我們工作: 轉換到"單行文本"日期. 然後, 將其轉換回日期.

這解決了這個問題. 很高興看到轉換工作, 實際上. 這是很緊張,這種方式轉換的事情會失敗, 但它卻沒有.

此 bug 已引發了巨大的陰影對用戶端的頭腦中的日期資料類型, 所以我們要找出一個明確的答案,從 Microsoft 和我希望後,在下一個短的時間與他們正式的答案和修補程式資訊在此處更新.

其他參考資料:

http://www.kevincornwell.com/blog/index.php/cannot-get-the-list-schema-column-property-from-the-sharepoint-list/

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2383611&SiteID=1

<結束>

訂閱我的博客.

Technorati 標籤: ,

快速和簡單: 嵌入超連結通過電子郵件發送從 SharePoint 設計師工作流

每月一次或兩次, 有人張貼論壇問題: "如何包括指向是從 SharePoint 設計器電子郵件可點擊的 URL 的超連結?"

提交不進一步評論: (很好, 其實有進一步的評論意見後圖像):

圖像

貝基 Isserman 跟進一個有用的解釋如何在電子郵件中嵌入到專案的連結: http://www.sharepointblogs.com/mosslover/archive/2007/11/20/addition-to-paul-galvin-s-post-about-sending-an-e-mail-with-hyperlinks-in-spd.aspx

新的發行版本: SharePoint 設計師工作流擴展 (字串操作函數)

更新: 在這裡看到的商業化這一專案的思考: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

我一直忙著我的 Codeplex 專案,目前重點是提供字串操作擴展到通過 SharePoint 設計器創建的工作流.

詳細資訊,請參閱在這裡:

專案主頁: http://www.codeplex.com/spdwfextensions

釋放: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

版本 1.0 包括以下新功能:

函數 說明 (如果不相同.net 函數,)
Num 條目() 返回數位的"條目" 根據指定的分隔符號分隔的字串中.

舉個例子: 在一個字串中的 Num 條目",b,c" 帶分隔符號"," = 3.

條目() 根據指定的分隔符號分隔的字串中返回的第 n 個標記.
長度 String.Length
替換() String.Replace()
包含() String.Contains()
返回"true 一詞" 或者"false"一詞.
子字串(啟動) String.Substring(啟動)
子字串(啟動,長度) String.Substring(啟動,長度)
ToUpper() String.ToUpper()
String.tolower() String.ToLower()
StartsWith() String.StartsWith()
返回"true 一詞" 或者"false"一詞.
EndsWith() String.EndsWith()
返回"true 一詞" 或者"false"一詞.

解釋的 BDC 執行階段錯誤

我引起體現使用者介面上,並在一個 BDC 錯誤這一周 12 配置單元日誌 在運行時.

第一次, 這似乎在使用者介面中:

找不到要插入的所有識別碼值正確執行,具有名稱的 SpecificFinder MethodInstance 欄位 … 確保輸入的參數都有與為此實體定義每個識別碼關聯的 TypeDescriptors.

這裡是一個螢幕擷取畫面:

clip_image001

我也可能導致該消息出現在 12 配置單元日誌中的,將 (使用我的專利的 high-tech-don't-try-this-at-home "神秘的錯誤" 方法):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0在 BusinessDataWebPart.OnPreRender x0B8C SharePoint 門戶伺服器業務資料 6q4x 高異常: System.InvalidOperationException: 識別碼值 ”, 類型的 ”, 是不正確. 預期的識別碼值的類型 'System.String'. 在 Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(物件[] subIdentifierValues, LobSystemInstance lobSystemInstance) 在 Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(實體的實體, 物件[] userValues, LobSystemInstance lobSystemInstance) 在 Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(查看 desiredView) 在 Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() 在 Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

我到處尋找,發現了一些線索 MSDN 論壇, 但是他們並沒有足以讓我明白自己在做什麼錯. 我看過網路的廣播 泰德帕蒂森 那我 公司 伺服器和來實現我的問題上存了.

在我的 ADF, 我連接到 SQL 資料庫,如圖所示:

            <屬性 名稱="RdbCommandText" 類型="System.String">
              <![CDATA[
                選擇 SETID, CARRIER_ID, EFFDT, 描述, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      國家, 位址 1, 位址 2, 位址 3, ADDRESS4, 城市, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      縣, 狀態, 郵政, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, 電話, 擴展, 傳真, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG 從 dbo.PS_CARRIER_ID_VW 與 (nolock)
                在哪裡
                  (SETID <> 份額) 和
                  (較低(CARRIER_ID) >= 低(@MinId)) 和
                  (較低(CARRIER_ID) <= 低(@MaxId)) 和
                  (較低(描述) 喜歡低(@InputDescr))
                ]]>
            </屬性>

我提供了該 SQL 從一個 DBA 人,據我所瞭解,它是 特別 他們只是為我創建視圖. 有唯一的鍵是 CARRIER_ID.

這裡是我介紹的 bug:

      <識別碼>
        <識別碼 名稱="CARRIER_ID" TypeName="System.String" />
        <識別碼 名稱="描述" TypeName="System.String" /> 
</識別碼>

地方線沿線, 我曾設法迷惑自己的意思 <識別碼> 添加描述,即使它不是實際上的識別碼. 我從識別碼設置,就可以了描述! 它所有的工作.

我希望這可以為某人節省一些痛苦🙂

Technorati 標籤: , , ,