每月档案: 11 月 2007

MOSS 告诉我我列名称是保留或使用中 … 但它不是

更新 12/04/07: 请参阅 此 Microsoft 知识库 (http://support.microsoft.com/kb/923589) 相关信息.

实际上, 原来它是, 但 恶作剧的 苔藓不得不很难.

我的客户没有他 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 中:

图像

虽然这样,后者所示:

图像

I’m not sure how helpful these screen shots are but I put in the effort to make them so you have to view them 🙂

这是观察: 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 设置.

那里其他安全对象, 但是你图片.

权限级别: 捆绑的颗粒 / 在列表中包含诸如创建/读取/删除条目的低级别的访问权限.

继承: 默认情况下从其包含的对象实体继承安全设置. 子网站从其父项继承权限. 继承他们网站的文档库. 等等等等等等.

涉及通过继承和权限级别的安全对象的用户和组.

最重要的安全规则,来理解, Ever 🙂 :

  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 设计师工作流

每月一次或两次, 有人张贴论坛问题: "如何包含超链接的 URL,都可以点击从 SharePoint 设计器的电子邮件?"

提交不进一步评论: (好, 其实后图像是进一步的评论意见):

图像

一个有用的解释跟进 Becky 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 一词" 或者"虚假"一词.
子字符串(启动) String.Substring(启动)
子字符串(启动,长度) String.Substring(启动,长度)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
返回"true 一词" 或者"虚假"一词.
EndsWith() String.EndsWith()
返回"true 一词" 或者"虚假"一词.

解释一个 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 标签: , , ,