本章涵盖:
■ 保存工作流为模板
■ 管理工作流安全
■ 声明工作流记录
■ 在工作流使用BCS
■ 自定义开箱即用工作流
■ 工作在文档集的工作流
在第4章,我们看到创建工作流的基本知识,包括如何使用工作流的基本逐渐和如何使用工作流编辑界面。 虽然这是很好的开始,但是这样的知识还有很多。
在SPD2010,你可以保存工作流为模板。这个模板可以被部署到整个Farm,而不是网站或者网站集。 更可贵的是可以部署到完全独立的Farm。这是你能够在非生产环境中测试你的SPD工作流,而不会造成不可预见的生产问题的风险。
另一个重要的技术不适合前面的SPD章节,涉及到得是自定义开箱即用的工作流。SharePoint2010 提供了几种功能强大的开箱即用工作流,但是它们往往过于一般,不适合特殊的业务需求。当然,你可以扩展开箱即用的工作流,胜于你从头开始开发。
除了这两个技术,SPD2010有一个新的动作和特别感兴趣的条件。这两个组是 管理文档集和安全权限。文档集是文档的集合。工作流可以运行在这些集合上,并做一些有趣的事情 比如路由它们到记录中心。这可能是依照和遵守法律而考虑的。第二个组是关于SharePoint安全的行动和条件。 SPD2010,你的工作流可以通过在文档上添加和删除用户权限来管理安全。
5.1 SharePoint Designer 工作流模板 (SharePoint Designer workflow templates)
你可以将SPD工作流保存成模板。工作流可以部署到其他的SharePoint Web应用程序或者其他的Farm。 以前只可能出现在Visual Studio 工作流,通常需要大量的时间和经验丰富的.NET人员。使用SPD2010, 它可以很快完成,而且不需要任何.NET经验。这些模板的好处是能够在非生产环境测试你的工作流能力。 经过彻底的测试工作流,再投入生产,并向其用户提供。这样减少了用户体验的问题,在使用你的工作流时, 因为他正在使用你的环境。
要将工作流保存成模板,在SharePoint Designer中打开工作流,并在Ribbon上点击保存为模板按钮。 模板保存为.WSP的扩展名,并保存到当前站点的站点资产库。它可以下载,并部署到整个Farm或者其他的Farm。 按照表5.1的步骤,将工作流保存为模板,并部署它到整个Farm。
注意:只有可重复工作流能被保存成模板
表5.1
图5.1
表5.1(继续)
下一步是添加这个模板到SharePoint Farm.一些操作使用SharePoint的管理中心或者站点设置界面不能完成,只能使用命令行提示来完成。SharePoint2010 包含了一个PowerShell命令叫Add-SPSolution进行操作。在这个例子中,我们试着去添加.WSP文件到服务器,也叫解决方案。只有这样才能通过PowerShell添加解决方案到SharePoint Farm。因为它是命令行工具,并且必须直接运行在服务器上,如果你没有访问权限,你需要与你的SharePoint服务器管理员协调,以确定后续的命令可以运行。
表5.1 续
只有通过stsadm可以将.WSP添加到Farm,使用管理中心Web界面可以将它不熟。继续部署解决方案的步骤。
表5.1 续
图5.2
解决方案部署到Farm之后,必须激活才能对最终用户可见。这允许你去激活它到仅仅需要的地方。工作流模板在站点级别是要激活的。继续激活模板在一个站点。
表5.1 续
5.2 自定义开箱即用工作流 (Customizing the out-of-the-box workflows)
SharePoint2010 包含多个开箱即用的工作流,包含列表工作流和站点工作流,如审批工作流,收集签名工作流和收集反馈工作流等。这些默认的工作流是非常强大的并且比较复杂的。强大是因为微软让他们通用于许多的情况。例如,审批工作流能被应用到在SharePoint2010中的任何列表。某些情况下,默认工作流将很接近你的需要,但是不符合。例如,你可能想审批工作流记录所有审批和拒绝的日志到一个公共的列表,默认的工作流中没有的功能。通过修改默认工作流,你可以增加功能到内置的处理中。这是提供Spd工作流给你的价值,而不需要从头开始,可以扩展默认工作流,并且减少大量时间。
要修改开箱即用的工作流,使用SharePoint Designer2010打开你的站点, 并且打开工作流站点对象从左手菜单。你将看到三个工作流列表和一些自定义工作流可能存在。(图5.3)
图5.3
点击任何一个工作流的名字将打开工作流编辑界面。从这里,你可以点击编辑工作流链接看到工作流相关的步骤和动作。如果你编辑审批-SharePoint2010 工作流,并看到工作流的步骤,它的第一步很简单(图5.4)
图5.4
点击审批任务将揭示真实的逻辑,其中包含完成条件,单个行为和整体行为(图5.5和图5.6)。 使用工作流编辑界面所有的都可以修改。
图5.5
图5.6
由于开箱即用的工作流比较复杂,建议你不要在原稿上修改。复制原有的副本进行更改。要复制工作流,请右键点击你要复制的工作流 ,然后选择“复制和修改工作流”。你也可以使用复制和修改功能区按钮来复制出开箱即用的工作流。
使用复制和修改选项后,你将看到一个对话框允许你给一个唯一的名字。键入一个名字给你的副本。另外,你可以规定新的工作流到一个内容类型和一些限制范围的内容类型。当你选择内容类型后,点击确认。
当你点击确定,你将获取到工作流编辑界面。你可能注意到动作名称由于复制后稍微有些修改。文本复制被添加到审批动作名字在图5.7.你可以调整这些名字。到这里,你能保存和发布工作流,或者不做任何更改,现在的工作流和之前的工作流除了名字不一样,其他都是一样的。
图5.7
调整工作流设置,条件和根据需求采取的动作并保存和发布工作流。现在工作流将在可重用工作流分类下面。(图5.8)
图5.8
记住可重用工作流站点使用,而不是整个网站集,而Globally可重用工作流可以被使用在站点集。 为了使拷贝和自定义工作流能成为Globally可重用工作流,打开自定义工作流并返回到工作流编辑。 然后点击发布Globally Ribbon 按钮 如图5.9
图5.9
当发布了一个Globally可重复工作流,你总是会得到一个警告关于制定它可用到所有列表和所有用户可见。点击确定这个警告。此后,工作流将被再次复制和发布,但是第二次拷贝将发布出Globally可重用工作流。可重用工作流不会被删除,你可能会希望手动删除它,避免出现混乱。
使用此过程,你可以修改开箱即用的工作流,以满足你组织的需要。这可能意味着你为你整个组织做一个单独的版本 或者几个不同的版本。在这种情形下,从开箱即用的工作流开始可能会缩短开发时间,因为许多工作已经完成。
5.3 文档集上的工作流动作 (Workflow actions for document sets)
文档集在SharePoint2010中是一个新概念。它们代表一个文档的集合,类似文件夹,除了它们允许附加功能。 例如,一次文档设置所有文档安全成为可能。如果安全是应用到一个文件夹,该文件夹中的文件可以打破继承 并不受影响。它也可以对文档集运行工作流。你不能对简单的文件夹做这样的事情。在我们深入到文档集和工作流之前, 我们需要学习如何创建一个文档集。这将有助于将给出的文档集的例子和新动作的使用。
5.3.1 创建一个文档集 (creating document sets)
你与文档集在工作流中交互之前,你必须激活文档集功能并应用内容类型到文档库。按照表5.2的步骤启用你站点的文档集。 注意你必须是网站集管理员去激活文档集功能。
表5.2
图5.10
表5.2 续
5.3.2 文档集工作流动作(document set workflow actions)
在文档集,现在讨论如何使用SPD工作流交互文档集。sharepoint2010中四个新的工作流动作为了和文档集交互:
■ 捕获文档集版本(CAPTURE A VERSION OF THE DOCUMENT SET)------捕获文档集快照并保存到版本历史。
■ 发送文档集到记录库(Send Document Set to Repository)------移动或拷贝文档集到SharePoint2010 记录中心(永久存储文档的地方)。
■ 设置文档的内容审批状态(Set Content Approval Status for the Document Set)-------从工作流批准或拒绝设置.
■ 启动文档集审批进程(Start Document Set Approval Process)-------允许用户批准或拒绝设置。
捕获文档集版本(CAPTURE A VERSION OF THE DOCUMENT SET)
捕获文档集版本动作捕获文档集中所有的主要版本和次要版本,并保存它们到文档集版本历史。 这允许你去获取快照的整体文件,而不是依靠主要和次要版本的个别文档。改动作接受两个参数,类型和注释(图5.11) 类型参数决定将要捕获的版本。选择包括捕获最后主要版本或者最后的次要版本。 注释参数允许你添加注释将存储到捕获文档集版本。
图5.11
使用这个动作到文档集之后,你可以查看改文档集的历史版本记录,使用它的上下文菜单。你将看到最后的主要或者次要版本,以及注释。从这里,它可以恢复之前的版本。
捕获文档集版本动作可能是有帮助的,当创建一个包含几个单独文档之间关系信息的介绍。由于文件被修改,保存所有的快照相关文件将允许你更轻松地跟踪进展情况。你仍然可以单独管理文件,包括他们的历史版本记录。捕获文档集版本后,你可以通过打开文档库设置。你会发现,Ribbon上 有新的选项卡叫文档集。打开这个选项卡将显示捕获版本按钮,类似工作流操作,但是是手动的。这里也有版本历史按钮。(图5.12)
图5.12
在Ribbon上点击历史版本按钮,会显示各自版本(图5.13)。注意,修改文档集属性如标题会生成一个新版本。文档不会被捕获或显示在历史记录中,除非你使用捕获版本的工作流动作或者点击Ribbon按钮。
图5.13
发送文档集到记录库(Send Document Set to Repository)
发送文档集到记录库动作是用来发送一个文档集到记录中心进行永久存储一些重要的文档。该动作有三个参数: 动作、目标内容组织者和解释(图5.14)。这个动作参数确定如果文档集将被拷贝,移动或者拷贝链接。 目标内容组织者是记录中心的地址去路由你将要处理的文档集。一个记录中心配置路由允许管理和存储多个类型的文档。 请参阅例子来学习如何配置记录中心和路由。最后将解释与文本相关的记录放置在记录中心。
SharePoint记录中心简介
正如前面所说,一个文档集能被拷贝,移动或者移动链接。前两个选项是不言自明的,但要注意当到记录中心时是转换成ZIP文件的(图5.15)。转换的文档集节省存储空间,并允许一次下载所有文档。移动或者留下一个链接选项将存储文档集在记录中心,但将留下链接到列表允许用户更容易的查找文档集。最后动作的结果是存储到变量,允许你去获取进一步的动作。
图5.15
设置文档的内容审批状态(Set Content Approval Status for the Document Set)
文档集,和文档一样,可以要求批准如果他们库是配置要求批准的。设置内容批准状态为文档集动作是使用去设置文档集的审批状态的。 这个处理一般手工完成在SharePoint的界面上,但是这个动作允许当有需要时自动完成。这个动作仅有两个参数,应用的状态和意见(图5.16)。 这个动作仅针对当前项目运行,并不能使用来定义文档集状态在不同的库中。
图5.16
这个动作将帮助自动审批或拒绝文档集之后给一定的时间量。这也是明智的,包括停止工作流逻辑,如果一个用户 手动调节审批状态在自动审批开始之前。
启动文档集审批进程(Start Document Set Approval Process)
启动文档集审批处理动作是相关的设置文档集审批状态动作,但是它是使用不同的。替代执行批准和拒绝, 这个动作是使用去启动一个审批工作流实例的设置,提示用户或用户组去查看并批准或拒绝文档集。 审批链接是没有相关的参数;相反,它会打开一个新的实例早默认的审批工作流上。
5.3.3 文档集和记录中心工作流示例
按照例子将说明使用工作流去发送文档集到记录中心。想定的是一个文档集是使用去创建和收集需要的数据从 一个销售的建议。建议完成之后,必须通过经理审批。最后,客户接受建议,文档集必须发送到记录中心, 以防止修改和法律的原因变化。例如,一个签名的建议可能规定提供的7名员工,一周工作时间280小时,无未经批准的加班。 该建议可能进一步规定7名员工的薪酬。最有可能的,建立包含了完成时间。步骤的第一步是配置一个记录中心。 按照表5.3步骤在SharePoint中配置一个记录中心 。
表5.3
图5.17
图5.18
现在你配置了一个记录中心,并配置一个库去使用文档集,你可以使用新的documnet-set-specific 工作流动作。记录中心是SharePoint2010中的显著的功能,但是本书的范围,我们将重点放在路由通过工作流文件。与记录中心准备就绪后,我们可以构建我们的工作流。按照表5.4的步骤,以建立SPD工作流路由文档集到记录中心。
表5.4
图5.19
表5.4 续
图5.20
表5.4 续
5.4 工作流动作和条件的安全(Workflow actions and conditions for security)
站点,库,和文档能被不同权限进行管理。此外多种级别的开箱权限可用,例如全部控制,设计,参与者和只读。 也可以自定义权限级别的创建,以满足你的需求。SPD2010能很好的应付操作工作流列表项的权限的。 在此之前,只能手动操作或者通过使用自定.NET代码。 现在可能存在于不同用户运行工作流,利用他们的优势或者他们的权限。 所以这一切完成,使用模拟步骤和安全-关系动作和条件在SPD中。
5.4.1 模拟步骤( Impersonation steps)
当用户启动工作流,工作流动作获取的数据将给用户。在某些情况下,用户运行的工作流可能没有权限执行必要的行动。 例如,你可能希望放置用户直接删除列表中的项目,但你仍要运行工作流可以删除该项目。如果你删除用户的删除权限, 他们将无法运行一个删除项目的工作流。如果这不是所期望的行为,你可以使用模拟步骤,以允许用户作为另一个用户来运行 删除动作必要的权限。模拟步骤有些限制,你需要注意:
■ 模拟步骤只可以运行在谁建立的工作流。你不能设置步骤运行于不同的用户。
■ 模拟步骤中的消息记录到工作流历史记录将会记录成系统账户,而不是工作流的某个用户。
■ 你不可以创建模拟步骤到另一个步骤;他们只能被创建在顶级步骤。
下图显示,创建两个列表项在示例列表中。第一个列表项在标准的步骤创建,谁启动工作流将被放入列表的创建者和更新着字段中。第二个项是使用模拟步骤创建,图5.21显示两个步骤他们创建列表项的动作。
图5.21
虽然Todd Rowe运行工作流创建列表项如图5.22,第二个创建项作为模拟步骤显示创建人为Paul Grafelman运行的工作流。
图5.22
5.4.2 与安全相关的条件和动作(Security-related conditions and actions)
此外身份模拟,几种新的安全相关条件和动作在SharePoint Designer工作流中可用。 这些允许工作流去检查和修改一个用户权限为一个项或文档。注意仅这些条件和动作可以附加到模拟步骤 并且不能添加到常规步骤中。
检查列表项权限级别条件(CHECK LIST ITEM PERMISSION LEVELS CONDITION)
检查列表项权限级别条件检查是否由指定的用户已经被指定列表上的明确权限。第一个参数指定 哪些用户权限被检查。第二个阐述显示哪些权限级别被检查。第三个参数执行哪些列表项被检查。 列表项能被设置到当前项或者一个项在任何其他的访问列表。表5.5 显示不同条件配置的结果。
表5.5
继承VS直接权限 直接权限是当一个用户需要直接清除的权限给到项所提供的。一个继承选线是当一个项目从其父继承权限, 并没有定义任何自己独特的权限。
注意表5.5中有趣的功能:如果用户有全部控制权限在项上,但是条件是检查为参与讨论,这个条件将返回假。 这是很有趣的,因为你获取完全控制权,你通常可以参与讨论的。如果这是你工作流的问题,使用下一个条件 检查列表项权限。
检查列表项的权限条件 (CHECK LIST ITEM PERMISSIONS CONDITION)
检查列表项的权限条件检查如果指定用户有指定权限在指定的列表项上。它以之前的条件同样的方式配置, 但是结果可能是不同的。这是因为它是不寻找确切的指定权限,相反,它是检查如果用户有指定的权限。 表5.6 显示一些示例。
表5.6
添加列表项权限动作(ADD LIST ITEM PERMISSIONS ACTION)
添加列表项权限动作是给一个用户列表项上直接的权限。 这也将打破继承。指定的权限将被添加到现有权限,还可以添加列表项的权限动作 用于给多个用户添加,在同一个时间(图5.23)
图5.23
继承列表项权限动作(INHERIT LIST ITEM PERMISSIONS ACTION)
继承列表项权限动作删除所有直接权限为项,并设置它们为继承权限从它们的上一级。 一个例子在这里是一个工作流设置直接权限在列表项上,当工作流运行正常放置任何人编辑项目。
删除列表项权限动作(REMOVE LIST ITEM PERMISSIONS ACTION)
删除列表项权限动作删除指定直接权限从列表项上。其他直接权限将不被删除。注意如果项是继承选项,这个动作将打破继承。
替换列表项权限动作( REPLACE LIST ITEM PERMISSIONS ACTION)
5.4.3 (工作流工作的权限和安全)Working with permissions and security in a workflow
这个工作流例子将展示使用之前所描述的条件和动作去允许一个用户没有列表权限去批准一个项目。 这个场景是expense report approval system(费用开支报告系统)在员工需要去提交费用报告到一个文档库 但是他们不应该访问其他员工的报告。此外,员工经理必须有能力去批准他的员工提交的费用报告。 经理不应该看到其他员工提交的费用报告(不是此经理管辖)。要做到这一点工作流将打破继承权限,并给予提交用户 只读权限。此外,用户的经理将给予批准该项目的权限。这个将自动放生当项目被上传。要做到这样, 按照表5.7的步骤。
表5.7
注意图5.24,工作流运行后,你不能编辑文件,但是你仍然可以查看。这是显而易见的因为删除和编辑选项被禁用了。 另外注意提交用户的经理现在有审批权而且不可以访问其他用户的文档在这个库上。用户的经理在批准时可以查看视图。 这些新的条件和动作将允许你去动态和自动给访问非特权的用户。这些工作流可以扩展重建,当经理拒绝这个项目 (允许用户重新编辑的权利)
图5.24
5.5 外部数据在SharePoint 工作流中的使用( External data in a SharePoint Designer workflow )
到目前为止,你在本书所看到的工作流都是引用和修改sharepoint列表数据。也可以使用 sharepoint工作流与外部数据交互,如SQL数据库。使用一个新的概念叫外部内容类型, 它可以显示和创建外部数据使用SharePoint环境。
为了显示外部数据和创建工作流使用这些数据,外部内容类型必须创建。最重要的事情是知道当创建 外部内容类型去使用时,它们必须被配置使用安全存储服务,如果你想去提供平局,或者还原, 意味着使用应用池的身份。还原需要服务账户有读或者写访问权限。
这些主题有些复杂,超出了本书的范围,所以替代详细描述,使用一个具体的例子来解释。 该示例使用AdventureWorks数据库(SQL的示例数据库,自己去下),作为测试数据库 来显示和编辑采购订单数据。
5.5.1 配置一个安全的存储服务(Configuring a Secure Store Service)
安全存储服务是使用去存储信任的将被使用的当访问其他系统。这个能帮助到个人用户没有凭据时访问后端系统。 见表5.8 配置一个安全存储服务。
表5.8
图5.25
图5.26
续表5.8
图5.27
续表5.8
图5.28
5.5.2 创建外部内容类型(Creating an External Content Type)
安全存储服务现在被配置,现在去创建一个外部内容类型。请记住你将使用安全存储服务定义的账号 去连接外部数据源。外部内容类型可以在SharePoint中做数据检索,更新和删除的工作。 按照表5.9的步骤去创建一个新的外部内容类型。 示例还是使用微软的示例数据库Adventure Works.
表5.9
图5.29
续表5.9
现在,你已经配置好外部内容类型,并创建外部列表使用该外部内容类型。当你浏览SharePoint中的列表, 你应该看到类似图5.30所示的
图5.30
5.5.3 创建工作流使用外部内容类型(Creating a workflow using the External Content Type)
现在你已经创建安全存储应用程序,外部内容类型以及使用该内容类型的列表,你可以创建一个工作流充分利用外部数据。见表5.10的步骤,在这个例子中,你将创建一个订单状态请求系统,这将允许用户去请求AdventureWorks Order 通过输入的Order Id.工作流将查找订单通过ID并将结果发送到所提供的地址。
表5.10
图5.31
注意两个图标在图5.31的查找列,第一个图标允许用户来验证他们的类型。第二个按钮显示弹出框去选择可用的销售订单 图5.32 。浙江有助于确保无效的销售订单ID不传递到工作流,以帮助选择正确的项目。
图5.32
续5.10
本章结束
下一章
一步一步学习sharepoint2010 workflow 系列第二部分:SharePoint无代码工作流 第6章 自定义Visio SharePoint 工作流(custome visio SharePoint workflow)
本人声明
本博客内的文字和图片除标明出处和转贴的外,均系本人原创作品,如转载或使用,不是用于盈利目的,尽请使用,但请注明引自这里和作者的名字;有商业用途的,请与本人联系,协商后再作使用,否则我将采取法律手段维护自己的利益。谢谢合作。meiweijun@163.com