分类存档: SharePoint 工作流

创建网站 (SPWeb) 通过 SharePoint 设计师工作流

这篇博客更多的是"在可能的领域" 条目 vs. 具体信息.

我们有一个技术的设计,要求我们要创建一个网站,在网站集通过手动启动工作流进程. 基本上, 用户将数据输入到"新客户" 自定义列表,然后当他们完成并验证数据输入过程, 我们需要为客户创建一个站点.

我是大风扇的声明性工作流,以及一个弱视觉工作室工作流程序员, 所以我想要满足的要求,利用 SharePoint 设计器.

我打算写关于这的更详细 (并希望向用户组或两个在未来一年), 但在这里是整体解决方案:

  • 创建一个自定义的操作,与 SPD 集成.
  • 自定义操作允许 SPD 来调用 web 服务和 XML 字符串传递给它.
  • Web 服务定位该行,并在自定义列表和创建一个新的网站每个数据使用一个自定义站点定义该新客户端.
  • Web 服务然后用一些链接到新的站点的信息更新的自定义列表.

我们考虑过其他的方法, 如事件处理程序和基于视觉工作室工作流程. SPD 方法给我们的最终用户多一点控制过程. 授予, 还有很多在此解决方案中的 C# 代码, 但它包裹里面声明性工作流, 所以我们得到的一些声明性工作流的好处当钩入网站创建服务.

现在我们需要的是一个简单的工具来自动迁移SPD围绕工作流程一样容易,因为我们可以为Visual Studio的工作流程,我们将真正被用气做饭🙂我明白,有些人是那里在这个问题上的工作,我希望他们有一些很好的成功与它很快.

</结束>

订阅我的博客.

Technorati 标签: ,

与 Web 服务集成 SharePoint 设计器的工作流

我已经打与 SharePoint 设计器的自定义操作一段时间了 (请看这里 对于一些详细的东西, 如果你有兴趣,).

我当前的项目中, 我们需要做一些相当繁重的工作和我们想要使用声明性 SPD 工作流来管理相关的业务流程.

长话短, 这是完全有可能. 我扩展我 Codeplex 项目来调用"家务助理服务" 现在我们可以调用 web 服务直接从 SPD 工作流.

这里是签名:

 公众 字符串 调度程序(
        Guid WebID, // 通过运行时环境
        Guid SiteID, // 通过运行时环境
        字符串 ListID, // 通过 RTE (不知道为什么这是一个字符串, 没有一个 GUID)
        int ListItemID, // 通过 RTE.
        字符串 XmlMessage) // 通过用户在 SPD 中声明.

这利用了这一事实我们可以获取重要的工作流程的信息, 喜欢的网站, 列表 ID, 等. 这是很好的印证在几个地方那些您感兴趣创建您自己的自定义操作. 这个想法是要提取的 XML 字符串,如用户派遣一个适当的程序提供的. 有趣的东西!

不幸的是, 这显然是一张单程机票降到 "松散左肩" 反模式的土地, but it’s better than hitting a brick wall 🙂

如果你做它,即使你知道它是一种反模式是一种反模式吗?

我希望能在不久的将来把这个包装内 Codeplex. 如果你有兴趣在我这样做, 给我戳 (电子邮件 或留下你的评论) and I’ll be that more enthusiastic about doing it 🙂

</结束>

订阅我的博客.

Technorati 标签: ,

展能就业科的工作流 “从用户收集数据”: 修改生成的任务窗体

我正在进行一个项目,使用五个不同 SharePoint 设计师工作流来处理一些文档审批. SPD 提供从用户的"收集数据" 行动以便我们可以提示用户输入信息的不同位, 例如,是否他们批准它, 一些评论和也许问他们那天晚上吃晚饭了.

形式是完美的功能. 他们都向任务列表作为内容类型. 他们是 100% 系统生成. 这是他们的力量和弱点. 如果我们能活着与默认窗体, 然后我们就去. 不过, 我们不能太多控制 SPD 如何创建窗体. 如果我们不喜欢这种默认行为, 我们需要求助于各种招数来绕过它 (例如, 上一个任务设置优先级).

我需要对这些任务形式,开放查看属性提供一个链接 (dispform.asxp) 对"有关项目" 在新窗口中. 这提供了一键式访问到相关项目的元数据. 这是我的意思是:

图像

值得庆幸的是, 我们可以这样做并不是很难. 概括地说, 点燃 SPD, 导航到房子的工作流文件的目录,然后打开您想要修改的 ASPX 文件. 这些都只是经典的 XSL 变换指令,如果你已经弄乱 itemstyle.xsl, 搜索或 XSL 的其他方案, 这将便于您. 事实上, 发现了这是通常更容易,因为生成的窗体是一定程度上容易遵循与搜索核心结果 web 部件 (或 梦魇般 CWQP).

答案是肯定的, 还有一个主要的陷阱. SPD 的工作流编辑器预计该文件的完全控制权. 如果你对其进行修改, SPD 将愉快地覆盖权设置的情况下你的变化给. 我做两个快速测试,看看这能得到多么糟糕. 他们都预先假定你已经精心设计有效的 SPD 工作流使用来自用户的"收集数据" 一步.

测试 1:

  • 手工修改 ASPX 文件.
  • 对它进行测试 (验证您的更改被正确的保存和不破坏任何东西).
  • 开放工作流,并添加不相关的操作 (例如"日志到历史记录").
  • 保存工作流.

结果: 在此情况下, SPD 没有重新创建窗体.

测试 2:

  • 做相同 #1 除了直接修改"收集用户的数据" 行动.

结果: 这重新创建从零开始的窗体, 过度写您的更改.

最后注意到:

  • 至少两个 SPD 行动创建这样的形式: "从用户那里收集数据" 和"分配做项目". 这两种操作’ 可以手动修改窗体.
  • 我是能够生成我到 dispform.aspx 的链接,因为, 在这种情况下, 相关项目总是有相关的项目 URL 中嵌入其 ID. 我是能够提取它,然后再生成 <href> 在此基础提供一次单击元数据访问功能. 它不太可能您的 URL 遵循这个规律. 可能有其他方法可以获得相关的项的 ID,但还没有过那座桥, 所以我不知道如果获取到深渊的另一边.
  • 我没调查, 但我不会感到惊讶,如果有某种中的模板文件 12 我可以修改影响 SPD 如何生成的默认窗体的蜂巢 (就像我们可以修改通知模板).

</结束>

订阅我的博客!

Technorati 标签: ,

解决方案 (排序的): 设置优先级的任务使用 SharePoint 设计器

我有这样的业务应用场景:

  • 用户将文件上载到文档库.
  • 她选择的内容类型,输入所需的元数据. 一个 meta 数据字段是一个标志, "紧急".
  • 这会触发一个设计师 SharePoint 工作流,, 除其他外, 使用"收集的数据从用户" 行动.

"从用户那里收集数据" 列表中的任务请求核准为该文档创建一个项目.

我需要创建一个视图的任务列表的显示紧急请求核准.

解决方案: 把这个词"紧急:" 到这些任务标题.

我本来想直接指定优先级字段. 不过, 我不能这样做,原因有几个:

  1. 收集数据操作不提供一种机制来更新标题以外的任何字段 (和那些您要为其收集的数据的附加字段).
  2. "分配来做项目" 行动有同样的问题.
  3. 它是可能要插入到列表中的项 (e 小节. 直接插入到任务列表中的项) 但这不是阻塞的行动. 这意味着工作流不会等待用户来完成这项任务.

审议了之前的几条途径 (值得庆幸的是) 实现我们可能只把"紧急" 在标题中.

  1. 在任务列表中本身启动工作流,以便在创建一个新的任务时, 它以某种方式交叉引用回到开始的第一个工作流的文档, 拔出紧急标志值,更新所需的优先.
  2. 做类似的事件接收器. 创建任务, 查找关联的文档和根据需要更新优先级.
  3. 使用"创建列表项" 与之前的"等待字段更改一起行动" 行动和事件接收器. 如果我们创建一个列表项, 我们可以指定我们想要的所有字段. 使用事件接收器来更新原始项目,当用户完成任务和"等待场变化" 将满足行动的条件和工作流将继续. (因为某些原因, 我已经更多或更少的这种做法明智地决定要走了一段时间之前解决了).

有缺点我的解决方案 (除了这个明显的事实,只有标题的文本指示紧迫性). 自"收集反馈" 只接受硬编码的标题名称, 我需要使用两个不同的收集反馈行动的唯一的区别是,硬编码的标题.

但, 至少有一种解决方案,不需要事件接收器或 SPD 的自定义操作.

如果一个人在一个更聪明的办法解决了这, 请让我知道.

</结束>

快速、 方便: 从 SharePoint 设计器中的电子邮件会自动打开 InfoPath 表单

更新: 阿胡贾 Madjur 指出,从这个链接 新闻组讨论: http://msdn2.microsoft.com/en-us/library/ms772417.aspx. 它是非常明确.

===

我们经常想要在从 SharePoint 设计师工作流发送的电子邮件中嵌入到 InfoPath 表单的超链接. 当用户收到这些电子邮件, 他们可以在电子邮件中的链接上单击并直接转到 InfoPath 窗体.

这个怪物的 URL 建造工程对我来说:

http://server/sites/departments/Technical Services/InformationTechnology/HelpDesk/_layouts/FormServer.aspx?XmlLocation=/sites/departments/Technical Services/InformationTechnology/HelpDesk/REC REM RED Forms/REC2007-12-18T11_33_48.xml&源 = http ://server.corp.domain.com/sites/departments/technical%20services/informationtechnology/helpdesk/rec%20rem%20red%20forms/forms/AllItems .aspx&DefaultItemOpen = 1

红色加粗文本替换窗体的名称, 下面的屏幕快照中所示:

图像

请注意有很多该 URL 中的硬编码路径, 以及一个 URL 编码的组件. 如果这是很难转化为您的具体情况, 请尝试打开表单库的通知. 发布窗体,当你的电子邮件, 查看电子邮件的来源,你会看到你需要包括的一切.

聪明的读者可能会注意到上面的电子邮件正文也显示一个链接,直接访问通过筛选视图的任务. 我打算在将来的文章中更详细地说明.

</结束>

Technorati 标签:

MOSS 告诉我 “访问被拒绝” 若要编辑工作流任务, 但我确实有访问

我实现了一个工作流在网站中是主要只读的"NT_AUTHORITYAuthenticated 用户使用 SharePoint 设计器" (e 小节. 每个人都). 还有为 InfoPath 窗体的窗体库. 有相关的工作流的任务列表,工作流运行时, 它可以将任务分配到人.

我打破窗体库和任务列表的权限,以便任何已通过身份验证的用户可以创建窗体并更新其分配的任务.

我测试我测试低特权帐户.

可以填满并保存到库的表单? –>

可以从电子邮件链接访问任务? –>

可以看到一个编辑工作流任务链接 –>

可以单击该链接吗? –> … 权限被拒绝.

为什么可以看一个拒绝我的权限,当我点击它的编辑链接? 这就是不该怎么上班…

我的经历再次的安全配置, 非常密切. 再次做到. 我考虑删去这篇文章 因为很明显不知道任何有关安全.

最后, 我搜索互联网. 我发现这个高度不太可能的 MSDN 论坛帖子: http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1838253&SiteID=17

海报似乎暗示将工作流导出到驱动器盘片的简单行动将修复一个 MOSS 的安全问题? 我简直不能相信我刚刚键入的内容,. 我想起了南方公园 》 里关于 9/11 在斯坦问我们 Preznit 的阴谋, "真的?" 遍又一遍.

所以, 失去什么, 我火了 SPD, 工作流上右键单击,然后将它保存到我的 c:\ 驱动器. 这将是 c:\ 在我的便携式计算机上的驱动器. 我在看我的肩膀上的全部时间,没有人会问我, "为什么您保存该工作流到您的便携式计算机?"

令人难以置信, 解决了我的问题. 我可以编辑任务.

本人现提名这是解决最奇怪工作流方法的 2007.

</结束>

Technorati 标签:

SharePoint 设计器, 当前项目 “已编码的绝对 URL” 和 HTTPS

我们经常想要发送一封电子邮件,其中包含指向该项目或触发工作流的文档的超链接. 我们可以使用当前项的"编码绝对 URL" 为此目的. 不过, 它似乎总是使用"http" 为 URL 协议. 如果您的站点在 HTTPS 上运行然后它不会为你工作.

图像

据我所知, 没有出去框解决这个问题. 如果你需要使用 HTTPS, 您没有从框中选项.

解决这个问题, 创建一个自定义的操作,提供了一个字符串替换函数,以在您的工作流中使用. 或者, 在这里使用第三方工具等优秀包: http://www.codeplex.com/spdwfextensions 🙂

</结束>

Technorati 标签: ,

SharePoint 设计器的电子邮件发送 ???? 在一封电子邮件中

论坛用户偶尔问: SharePoint 设计器是为什么放的 ???? 到我的电子邮件而不是字段值?

发生这种情况的一个原因是因为所引用的变量为 null.

这可能是因为您试图引用一个字段从"当前项" 但用户永远不该窗体字段中输入一个值.

<结束 />

Technorati 标签:

比较 / 测试工作流设计器 SharePoint 中的空白日期

方案: 在设计器中 SharePoint 工作流, 你需要确定一个日期字段是否为空.

问题: SPD 不提供直接的方法来比较日期以外的任何日期. 您不能创建此类的情况下: "如果 [DateField] 等于空白".

解决方案: 将日期转换为字符串. 使用字符串比较来确定是否日期为空.

屏幕截图:

下面的屏幕截图展示如何做到这一点. 在此方案中, 项目中的字段, "环境许可证:第一次允许提醒日期", 就提交和工作流激发的响应.

图像

图像

备注:

当我试过这个, 愉快地惊讶地了解它的工作. 我很担心 SharePoint 设计师可能不允许字符串赋值 (变量:StringReminderDateDate) 但它确实允许它.

我也是有关那允许它, 值可能为 null 并且也炸了 WF 运行时或也许提高全球温度 1/2 学位, 但这些忧虑是毫无根据的.

</结束>

Technorati 标签:

SharePoint 设计器中工作流的自定义操作 — 观察 <设计器将文本框绑定类型 =”StringBuilder” … />

只是快速的观察是非常重要的区别这两个定义:

<将文本框绑定字段 ="InParam1" DesignerType ="StringBuilder" Id ="2" 文本 ="输入参数 #1"/>

与比较:

<将文本框绑定字段 ="InParam1" Id ="2" 文本 ="输入参数 #1"/>

第一次像这样显示 SPD 中:

图像

虽然这样,后者所示:

图像

我不确定这些屏幕截图有多大帮助,但我努力制作它们,所以你必须查看它们 🙂

这是观察: StringBuilder 允许您构建一个字符串 (很明显) 字符串文字和工作流数据混合在一起 (通过"添加查找" 在左下角的按钮). 当您使用添加查找按钮, 它在窗体中插入标记"[%令牌 %]". 当 SharePoint 调用自定义操作, (以我为例的 C# 代码), SharePoint 传递本身的令牌, 未标记的值. 如果您使用默认的设计器类型 (第二种类型), SharePoint 扩展标记,并将标记的实际值传递给您的操作.

StringBuilder = 坏, 默认设计器类型 = 良好.

答案是肯定的, 这就是没有我真正的意思. 不要试着向你自定义的操作传递一个参数,当设计器键入 = StringBuilder. 使用默认的设计器类型和链 StringBuilder 到它前面如果您需要构建复杂的字符串,在您的工作流 (这顺便说一句也正是一个不会创建一个动态主题电子邮件采取行动, 但这是另一个博客条目的主题, har har).

<结束 />