【IT168 评论】各个组织当前使用的很多应用程序都可自动执行复杂业务流程。自动执行电子流程(如将电子邮件自动传送到正确的收件人)其实非常简单。不过自动执行涉及人工交互的流程就困难多了。
早在 Microsoft Office SharePoint Server (MOSS) 2007 时期,Microsoft 就设法通过 SharePoint 工作流解决此问题,而 SharePoint 工作流实质上是一种审批流程机制。假设您的市场营销部门中有人想出了一个新广告。他们不会直接将该广告发送给广告代理。必须有一个完整的内部审批流程。
广告必须先发给编辑,通过公司法律部门审核,可能还要经过高级主管同意,然后才能向外界发放。这类审批要求的问题在于使人们疲于奔命。而且这类任务可能会留下漏洞。任何人为错误都可能会导致审批流程偏离正轨。
SharePoint 工作流专为自动执行这类流程而设计。您甚至可以设计工作流,以便在有人忘记任务时发送提醒或自动联系经理。
工作流在 MOSS 2007 中具有突出作用,不过在功能强大的同时,工作流往往也有点刻板。大多数情况下,管理员在创建工作流时不得不在 SharePoint GUI 的限制下工作。
Microsoft 在 SharePoint 2010 的工作流创建流程中提供了更大灵活性。虽然您仍然可以使用 SharePoint GUI 将工作流与列表或库关联,但是必须在 SharePoint 外部创建工作流(除非是使用内置工作流之一)。
因此,Microsoft 为您提供了多种不同的工具用于创建工作流。一般而言,选择 SharePoint Designer 2010 作为开发 SharePoint 工作流的工具。专业开发人员可以通过使用 Visual Studio 2010 修改 SharePoint Designer 2010 创建的代码,来进行进一步的自定义,也可以从头开始开发工作流。
勇于使用 Visio
创建工作流
若要创建工作流,请打开 Visio 2010 并选择“文件”选项卡。执行此操作时,系统会提示您选择要创建的图表类型。选择“流程图”文件夹,选择“Microsoft SharePoint 工作流”模板,然后单击“创建”,如图 1 所示。
使用 Visio Premium 2010 创建 SharePoint 工作流的想法乍一看似乎有点奇怪。Visio 广泛用于创建网络图表,但大多数人不会考虑将其作为开发工具。然而,Visio 的主要功能之一是创建流程图,因此非常适用于进行开发。上过计算机编程入门课程的人都知道,最初的课程中有一节是如何创建流程图。这是因为创建流程图通常是编写程序的第一步。因为 SharePoint 工作流实际上是简单的程序,所以使用专为创建流程图而设计的应用程序来帮助创建 SharePoint 工作流,难道不是很顺理成章么?
使用 Visio 2010 创建 SharePoint 工作流之前,需要了解两件重要的事情。首先,您不会使用 Visio 2010 创建最终形式的工作流。而是使用 Visio 创建随后可以导入 SharePoint Designer(将在其中完成工作流)的工作流模板。其次,这只适用于 Visio 2010 Premium。Standard 和 Professional 版本的 Visio 2010 不支持 SharePoint 工作流的创建。
创建工作流
若要创建工作流,请打开 Visio 2010 并选择“文件”选项卡。执行此操作时,系统会提示您选择要创建的图表类型。选择“流程图”文件夹,选择“Microsoft SharePoint 工作流”模板,然后单击“创建”,如图 1 所示。
图 1 使用 Visio 2010 创建 SharePoint 工作流流程图。
此时,您将进入 Visio 主屏幕。在此处可以真正开始开发工作流。如果您从未使用过 Visio,则必须熟悉创建工作流的流程。屏幕左侧是若干个包含各种图标(或“主控形状”)的集合(或“模具”)。SharePoint 工作流模板包含“操作”、“条件”和“工作流终结符”形状的模具。将这些形状拖到 Visio 绘图上,并以有利于实现工作流的方式排列。
若要查看示例,请看看图 2 中的 Visio 绘图。该图显示一个简单的 SharePoint 工作流模板,该模板以“开始”终结符(绿色三角形)开始。在该终结符后是一个条件,用于检查标题字段是否包含值。字段名称或关键字列表目前并不重要。我们稍后才能提供特定值或字段名称。现在我们只需要建立工作流逻辑。
图 2 在 Visio 中创建的基本 SharePoint 工作流。
您会注意到,图中的条件分支取决于是否检测到特定值。Visio 要求您为工作流中使用的每个条件都创建一条“是”路径和一条“否”路径。如果找不到匹配值,则此特定工作流以“终止”对象结束(“否”路径)。如果找到关键字,则删除项目并终止工作流。