<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>『听风且吟』技术版 &#187; SharePoint 2010工作流系列</title>
	<atom:link href="http://coding.windstyle.cn/category/sharepoint/sharepoint-2010-workflow-series/feed/" rel="self" type="application/rss+xml" />
	<link>http://coding.windstyle.cn</link>
	<description>Windie Chai&#039;s technique blog</description>
	<lastBuildDate>Wed, 01 Feb 2012 14:52:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>泛谈SharePoint 2010无代码工作流</title>
		<link>http://coding.windstyle.cn/2010/01/24/sharepoint-2010-codeless-workflow-overview-2/</link>
		<comments>http://coding.windstyle.cn/2010/01/24/sharepoint-2010-codeless-workflow-overview-2/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 14:15:31 +0000</pubDate>
		<dc:creator>Windie Chai</dc:creator>
				<category><![CDATA[SharePoint 2010工作流系列]]></category>
		<category><![CDATA[InfoPath]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint 2010 Day]]></category>
		<category><![CDATA[SharePoint Designer]]></category>
		<category><![CDATA[SharePoint Designer 2010]]></category>
		<category><![CDATA[Visio]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[工作流]]></category>
		<category><![CDATA[网站工作流]]></category>
		<category><![CDATA[重用]]></category>

		<guid isPermaLink="false">http://coding.windstyle.cn/?p=880</guid>
		<description><![CDATA[在1月16日的“SharePoint 2010 Day”活动中，我奉献了一节《SharePoint 2010：新一代无代码工作流》讲座，会后Choral兄让我把它拆成几篇日志，于是就有了本文（本文是当天课程去掉Demo之后再添油加醋的图文重现版）。 我们知道，工作流是真实世界中流程的抽象，在真实世界中，流程可以按照有没有人类参与来泛泛地分为两种：系统流程和人类交互流程。 系统流程是指那些没有（或者几乎没有）人类参与的流程，这种流程的执行过程早在设计阶段就能够完全预料，虽然某些情况下也可能会有少量的人类参与，但并不会左右流程的执行方向。 系统流程主要旨在解决系统以及数据之间的问题，我们可以把它视为服务或者过程。正因为系统流程如此简单，所以在SharePoint中有许多方式可以实现系统流程，比如Event Handler、Timer Job或者Console Application；也正因为系统流程如此简单，我们在面对一个需要实现的系统流程时，甚至不会（或者忘记了）将它与“工作流”这个看似高深的概念联系到一起。 而人类交互流程，既有人类参与的流程，才是我们最容易联想到“工作流”这个概念的流程。环顾我们生活的四周，人类交互流程无处不在。把真实世界中的流程抽象为数字化的工作流时，我们虽然能够尽可能多地处理每一种可能发生的情况，却很难知道工作流将来究竟会沿着怎样的路线执行。 人类交互使得工作流变得复杂，在SharePoint中，我们大多使用Visual Studio来实现人类交互流程，这是因为在SharePoint 2007时代，SharePoint Designer的工作流设计能力还不足以应付复杂的人类交互流程；而在SharePoint 2010时代，SharePoint Designer虽然仍旧不能设计可以循环回退的工作流（哦，这真是个令人沮丧的消息），但其大量新特性势必会让我们设计人类交互流程（或者系统流程）时更加得心应手，并且我们也可以看到，SharePoint Designer的工作流功能也一直在向着这个方向努力。 SharePoint 2007第一次引入了“工作流”这个概念。在SharePoint 2007中，工作流是基于Windows Workflow Foundation 3.0/3.5来构建的。SharePoint 2007内置了一些工作流来供我们使用，比如“审批”和“收集反馈”，但我们只能选择用或者不用，而不能修改这些内置工作流。除了内置的工作流之外，SharePoint 2007还允许我们使用SharePoint Designer 2007来设计无代码的工作流，或者使用Visual Studio 2005/2008来开发包含代码的工作流。 在SharePoint 2010中，工作流的底层基础结构依然是Windows Workflow Foundation 3.5（很遗憾没能够基于WF 4.0）。代码工作流的开发工具升级到了Visual Studio 2010，无代码工作流的设计工具也升级到了SharePoint Designer 2010。 SharePoint 2010将Office的一个重要的客户端成员，Visio，引入了工作流创作之中。众所周之，Visio是一个非常强大并且易用的图表设计工具，在SharePoint 2007时代，就有许多人在问“为什么不能用Visio来设计SharePoint工作流”这样的问题，因为用Visio可以很方便地设计出直观的流程图，相比而言，SharePoint Designer的工作流设计器却并不是那么令人满意。 我们可以在上图中发现，Visio和SharePoint Designer总是结伴出现，这是以为Visio只是一个工作流建模工具，它的作用只是帮助业务人员很方便直观的“画”出工作流流程图，这张流程图里只有简单的逻辑，而且没有包含任何数据，所以它必须经过SharePoint Designer补充加工之后才可以变成真正可以运行的SharePoint工作流。 除此之外，我们还可以使用Visio 2010和SharePoint Designer 2010来编辑SharePoint 2010的内置工作流（这种编辑并不是严格意义上的“编辑”，而是“复制并编辑”），对我们来说，这个功能不仅能够让我们修改内置工作流以满足我们的需求，也能够通过查看内置工作流的组成来学习如何用SharePoint Designer来无代码工作流。 在SharePoint 2007时代，工作流必须和列表或文档库做关联（或者绑定）之后才能够使用，这种工作流是一种列表级的工作流，在SharePoint [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.msiw.net/pages/sharepoint2010day.aspx" target="_blank"><img src="http://coding.windstyle.cn/files/2009/12/SharePoint-2010-Day-Logo.jpg" style="border: 0px none" alt=""></a>
<p>在1月16日的“<a href="http://www.msiw.net/Pages/SharePoint2010Day.aspx" target="_blank">SharePoint 2010 Day</a>”活动中，我奉献了一节《SharePoint 2010：新一代无代码工作流》讲座，会后<a href="http://blog.joycode.com/choral" target="_blank">Choral兄</a>让我把它拆成几篇日志，于是就有了本文（本文是当天课程去掉Demo之后再添油加醋的图文重现版）。</p>
<p> <span id="more-880"></span>
<p>我们知道，工作流是真实世界中流程的抽象，在真实世界中，流程可以按照有没有人类参与来泛泛地分为两种：<strong>系统流程</strong>和<strong>人类交互流程</strong>。</p>
<p><a href="http://coding.windstyle.cn/files/2010/01/image3.png"><img alt="image" src="http://coding.windstyle.cn/files/2010/01/image_thumb1.png" width="560" height="388" /></a> </p>
<p>系统流程是指那些没有（或者几乎没有）人类参与的流程，这种流程的执行过程早在设计阶段就能够完全预料，虽然某些情况下也可能会有少量的人类参与，但并不会左右流程的执行方向。</p>
<p>系统流程主要旨在解决系统以及数据之间的问题，我们可以把它视为服务或者过程。正因为系统流程如此简单，所以在SharePoint中有许多方式可以实现系统流程，比如Event Handler、Timer Job或者Console Application；也正因为系统流程如此简单，我们在面对一个需要实现的系统流程时，甚至不会（或者忘记了）将它与“工作流”这个看似高深的概念联系到一起。</p>
<p>而人类交互流程，既有人类参与的流程，才是我们最容易联想到“工作流”这个概念的流程。环顾我们生活的四周，人类交互流程无处不在。把真实世界中的流程抽象为数字化的工作流时，我们虽然能够尽可能多地处理每一种可能发生的情况，却很难知道工作流将来究竟会沿着怎样的路线执行。</p>
<p>人类交互使得工作流变得复杂，在SharePoint中，我们大多使用Visual Studio来实现人类交互流程，这是因为在SharePoint 2007时代，SharePoint Designer的工作流设计能力还不足以应付复杂的人类交互流程；而在SharePoint 2010时代，SharePoint Designer虽然仍旧不能设计可以循环回退的工作流（哦，这真是个令人沮丧的消息），但其大量新特性势必会让我们设计人类交互流程（或者系统流程）时更加得心应手，并且我们也可以看到，SharePoint Designer的工作流功能也一直在向着这个方向努力。</p>
<p><a href="http://coding.windstyle.cn/files/2010/01/image4.png"><img alt="image" src="http://coding.windstyle.cn/files/2010/01/image_thumb2.png" width="560" height="384" /></a> </p>
<p>SharePoint 2007第一次引入了“工作流”这个概念。在SharePoint 2007中，工作流是基于Windows Workflow Foundation 3.0/3.5来构建的。SharePoint 2007内置了一些工作流来供我们使用，比如“审批”和“收集反馈”，但我们只能选择用或者不用，而不能修改这些内置工作流。除了内置的工作流之外，SharePoint 2007还允许我们使用SharePoint Designer 2007来设计无代码的工作流，或者使用Visual Studio 2005/2008来开发包含代码的工作流。</p>
<p><a href="http://coding.windstyle.cn/files/2010/01/image5.png"><img alt="image" src="http://coding.windstyle.cn/files/2010/01/image_thumb3.png" width="560" height="389" /></a></p>
<p>在SharePoint 2010中，工作流的底层基础结构依然是Windows Workflow Foundation 3.5（很遗憾没能够基于WF 4.0）。代码工作流的开发工具升级到了Visual Studio 2010，无代码工作流的设计工具也升级到了SharePoint Designer 2010。</p>
<p>SharePoint 2010将Office的一个重要的客户端成员，Visio，引入了工作流创作之中。众所周之，Visio是一个非常强大并且易用的图表设计工具，在SharePoint 2007时代，就有许多人在问“为什么不能用Visio来设计SharePoint工作流”这样的问题，因为用Visio可以很方便地设计出直观的流程图，相比而言，SharePoint Designer的工作流设计器却并不是那么令人满意。</p>
<p>我们可以在上图中发现，Visio和SharePoint Designer总是结伴出现，这是以为Visio只是一个工作流建模工具，它的作用只是帮助业务人员很方便直观的“画”出工作流流程图，这张流程图里只有简单的逻辑，而且没有包含任何数据，所以它必须经过SharePoint Designer补充加工之后才可以变成真正可以运行的SharePoint工作流。</p>
<p>除此之外，我们还可以使用Visio 2010和SharePoint Designer 2010来编辑SharePoint 2010的内置工作流（这种编辑并不是严格意义上的“编辑”，而是“复制并编辑”），对我们来说，这个功能不仅能够让我们修改内置工作流以满足我们的需求，也能够通过查看内置工作流的组成来学习如何用SharePoint Designer来无代码工作流。</p>
<p><img alt="image" src="http://coding.windstyle.cn/files/2010/01/image6.png" width="560" height="417" /></p>
<p>在SharePoint 2007时代，工作流必须和列表或文档库做关联（或者绑定）之后才能够使用，这种工作流是一种列表级的工作流，在SharePoint 2010中，它被称为“<strong>列表工作流</strong>”。众所周知，列表工作流最为人所诟病的就是它难以重用，在使用SharePoint Designer设计列表工作流时，第一步便是选择需要关联的列表，并且工作流在设计完成之后，是无法将它复制到其他列表去使用的。</p>
<p>针对这个问题，SharePoint引入了一种新的工作流类型：<strong>可重用工作流</strong>。可重用本质上还是一种列表级的工作流，依然需要和列表做关联之后才可以使用，但我们在使用SharePoint Designer 2010来设计可重用工作流时，无需事先选择将要关联的列表，在工作流设计完成后，我们可以自由地将它关联到多个列表，甚至导出为一个WSP文件来部署到其他服务器之上。SharePoint 2010内置的几个工作流就是一种特殊的可重用工作流：<strong>全局可重用工作流</strong>，既可以在整个网站集的所有网站中重用的工作流，SharePoint Designer 2010可以让我们轻松地将一个普通的可重用工作流提升为全局可重用工作流。</p>
<p>除了必须和列表相关联之外，列表级工作流还有一个特点，就是必须基于一个列表项来启动。所以有些时候，我们为了使用一些系统流程，或者在流程执行期间才创建列表项的工作流，就不得不去准备一个无意义的列表，并且去创建一个无意义的列表项，只是为了启动一个工作流，无论从设计方式还是用户体验来说，这都不是一个令人满意的解决方案。SharePoint 2010中新增加的“<strong>网站工作流</strong>”则可以解决这个问题，顾名思义，网站工作流是一种网站级别的工作流，它不需要和列表做关联，也不需要基于一个存在的列表项来启动。如果需要启动一个网站工作流，可以直接在网站的【网站操作】【网站工作流】中进行操作。</p>
<p><a href="http://coding.windstyle.cn/files/2010/01/image7.png"><img alt="image" src="http://coding.windstyle.cn/files/2010/01/image_thumb4.png" width="560" height="376" /></a></p>
<p>由于Visio的引入，SharePoint 2010便有了三个工作流创作工具。其中，Visio凭<br />
借其易用直观的设计方式，为业务人员提供了设计工作流流程图的良好用户体验。业务人员在Visio中设计好工作流流程图之后，将其导出成为一个VWI文件，交给IT人员，IT人员再将其导入到SharePoint Designer中，补充逻辑和数据，使其成为一个可以运行的工作流。在这期间，由于各自领域和所用软件的差异，业务人员可能要与IT人员进行多次沟通。</p>
<p>如果在将来的某一天，无代码工作流已经无法满足我们的需求，IT人员就可以将其导出成为一个WSP文件，交给开发人员，开发人员再将其导入到Visual Studio中进行二次开发，经过这样一个过程之后，无代码工作流就变成了代码工作流。</p>
<p>此外，开发人员还可以使用Visual Studio 2010来为SharePoint Designer开发自定义操作，来丰富和补充SharePoint Designer的操作库。</p>
<p>以上便是我在“SharePoint 2010 Day”活动中奉献的讲座：《SharePoint 2010：新一代无代码工作流》的部分内容，本文略去了讲座中对于SharePoint Designer 2010新增的“自定义任务”的生命周期的相关介绍，以及关于网站工作流、可重用工作流、Infopath协同、Visio协同以及工作流状态图的相关Demo。如果时间和精力允许，我会将它们单独成文。</p>
<p>另外，感谢这次报名参加“SharePoint 2010 Day”活动的所有朋友，《SharePoint 2010：新一代无代码工作流》的PPT可以<a href="http://coding.windstyle.cn/files/2010/01/sharepoint-2010-new-codeless-workflow-platform.zip">点击这里下载</a>，此次活动的所有PPT可以<a href="http://bbs.msiw.net/viewthread.php?tid=1893&amp;extra=page%3D1" target="_blank">访问这里获取</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://coding.windstyle.cn/2010/01/24/sharepoint-2010-codeless-workflow-overview-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010工作流系列（4）：初窥Visual Studio 2010的SharePoint工作流功能</title>
		<link>http://coding.windstyle.cn/2009/11/16/sharepoint-2010-workflow-series-4-visual-studio-2010-sharepoint-workflow-capabilities-first-look/</link>
		<comments>http://coding.windstyle.cn/2009/11/16/sharepoint-2010-workflow-series-4-visual-studio-2010-sharepoint-workflow-capabilities-first-look/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 15:16:52 +0000</pubDate>
		<dc:creator>Windie Chai</dc:creator>
				<category><![CDATA[SharePoint 2010工作流系列]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[InfoPath]]></category>
		<category><![CDATA[Initiation]]></category>
		<category><![CDATA[List Workflow]]></category>
		<category><![CDATA[Reusable Workflow]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint Designer 2010]]></category>
		<category><![CDATA[Site Workflow]]></category>
		<category><![CDATA[Visio]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[WF]]></category>
		<category><![CDATA[WSP]]></category>
		<category><![CDATA[关联]]></category>
		<category><![CDATA[工作流]]></category>
		<category><![CDATA[表单]]></category>
		<category><![CDATA[解决方案]]></category>
		<category><![CDATA[部署]]></category>

		<guid isPermaLink="false">http://coding.windstyle.cn/?p=457</guid>
		<description><![CDATA[介绍完针对IT人员的SharePoint Designer 2010和针对业务人员的Visio 2010，我们再来看一下Visual Studio 2010为SharePoint开发人员提供了哪些便利。 在Visual Studio 历代版本中，Visual Studio 2010的变化算是比较大的。就连同时发布的.NET Framework 4.0也将CLR从2.0一下子升级到了4.0。 在新建项目对话框中可以看出，Visual Studio 2010仍然支持SharePoint 2007项目，不过只有工作流项目。而在SharePoint 2010分类中，却多出了如此多的内容，这便是全新的Microsoft SharePoint Development Tools。 由于SharePoint 2010的工作流仍然基于WF 3.5，所以我们仍然可以并且只能创建Sequential和State Machine两种工作流（SharePoint 2010没有使用WF 4.0真是件让人扫兴的事情）。除了这两种经典的工作流类型之外，Visual Studio 2010还能够导入由SharePoint Designer 2010设计的Reusable Workflow。 SharePoint 2010引入了一种新的解决方案类型，叫做sandboxed solution。SharePoint网站管理员可以不经过服务器管理员之手，直接将解决方案部署到网站集范围内，而且该解决方案的操作范围也被限制在部署它的网站集中。这极大地方便了简单解决方案的部署和使用，相信将来SharePoint 2010 Online推出之后，这种解决方案一定会大放异彩。不过SharePoint工作流并不支持这种部署方式，我们只能老老实实地将它设计成为一个farm solution，如下图所示： Visual Studio 2010也能够创建SharePoint 2010新增的工作流类型：Site Workflow，如下图所示： Visual Studio 2010并没有像SharePoint Designer那样大量新增活动，相比上一版本，只增加了如下图所示的几个活动： 此外，由于Site Workflow根本没有和具体的列表项绑定，所以不能使用和列表项相关的OnWorkflowItemChanged和OnWorkflowItemDeleted两个活动，其余所有活动都和List Workflow相同，这一点和SharePoint Designer 2010相似。 活动的变化暂时先看到这里，下面我们来看看其他变化，下图展示了Visual Studio 2010的SharePoint工作流解决方案资源管理器： [...]]]></description>
			<content:encoded><![CDATA[<p>介绍完针对IT人员的SharePoint Designer 2010和针对业务人员的Visio 2010，我们再来看一下Visual Studio 2010为SharePoint开发人员提供了哪些便利。</p>
<p><span id="more-457"></span></p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image61.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb61.png" alt="image" width="400" height="283" /></a></p>
<p>在Visual Studio 历代版本中，Visual Studio 2010的变化算是比较大的。就连同时发布的.NET Framework 4.0也将CLR从2.0一下子升级到了4.0。</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image62.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb62.png" alt="image" width="400" height="311" /></a></p>
<p>在新建项目对话框中可以看出，Visual Studio 2010仍然支持SharePoint 2007项目，不过只有工作流项目。而在SharePoint 2010分类中，却多出了如此多的内容，这便是全新的Microsoft SharePoint Development Tools。</p>
<p>由于SharePoint 2010的工作流仍然基于WF 3.5，所以我们仍然可以并且只能创建Sequential和State Machine两种工作流（SharePoint 2010没有使用WF 4.0真是件让人扫兴的事情）。除了这两种经典的工作流类型之外，Visual Studio 2010还能够导入由SharePoint Designer 2010设计的Reusable Workflow。</p>
<p>SharePoint 2010引入了一种新的解决方案类型，叫做sandboxed solution。SharePoint网站管理员可以不经过服务器管理员之手，直接将解决方案部署到网站集范围内，而且该解决方案的操作范围也被限制在部署它的网站集中。这极大地方便了简单解决方案的部署和使用，相信将来SharePoint 2010 Online推出之后，这种解决方案一定会大放异彩。不过SharePoint工作流并不支持这种部署方式，我们只能老老实实地将它设计成为一个farm solution，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image63.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb63.png" alt="image" width="400" height="171" /></a></p>
<p>Visual Studio 2010也能够创建SharePoint 2010新增的工作流类型：Site Workflow，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image64.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb64.png" alt="image" width="400" height="85" /></a></p>
<p>Visual Studio 2010并没有像SharePoint Designer那样大量新增活动，相比上一版本，只增加了如下图所示的几个活动：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image65.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb65.png" alt="image" width="181" height="150" /></a></p>
<p>此外，由于Site Workflow根本没有和具体的列表项绑定，所以不能使用和列表项相关的OnWorkflowItemChanged和OnWorkflowItemDeleted两个活动，其余所有活动都和List Workflow相同，这一点和SharePoint Designer 2010相似。</p>
<p>活动的变化暂时先看到这里，下面我们来看看其他变化，下图展示了Visual Studio 2010的SharePoint工作流解决方案资源管理器：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image66.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb66.png" alt="image" width="317" height="293" /></a></p>
<p>我们看到两个崭新的文件夹：Features和Packages。Microsoft SharePoint Development Tools提供了在组织解决方案内的Feature和Package的能力，通过这一功能，我们可以以图形化的方式来组织和管理Feature和Package，十分方便。下图展示了崭新的Feature编辑器：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image67.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb67.png" alt="image" width="400" height="407" /></a></p>
<p>在下图所示的添加项对话框中，我们可以看到，除了Sequential Workflow和State Machine Workflow之外，和工作流相关的可添加项还有Workflow Association Form和Workflow Initiation Form。</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image68.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb68.png" alt="image" width="400" height="275" /></a></p>
<p>这两种页面的格式都是ASPX，但很可惜的是并没有提供可视化设计支持。我宁愿相信这也是beta版本的原因，因为Visual Studio 2010新增的Visual Web Part都能够使用可视化的方式来设计了。不管怎么说，我们终于可以比较方便的为工作流设计基于ASP.NET的启动页面和关联页面了。</p>
<p>当然，我们仍然可以使用InfoPath表单作为工作流的启动页面和管理页面。和上一版本一样，我们需要手工修改Workflow.xml文件，添加必要的宿主页面、内容类型ID和表单URN，Visual Studio 2010并没有替我们完成这部分内容（令人不解的是，为什么不把宿主页面和那个长长内容类型ID也像表单URN的相关元素一样注释起来，以供我们更加方便地使用呢？）。</p>
<p>我们从上面的解决方案资源管理器中看到的Elements.xml就是以前的Workflow.xml，并且由于新增了Site Workflow，Elements.xml的MetaData元素中也相应地增加了一个AssociationCategories元素，用以标识工作流时List Workflow还是Site Workflow。</p>
<p>本来想尝试用SharePoint Designer 2010和Visio 2010设计一个包含它们特有的操作（活动）的Reusable Workflow，然后保存为WSP模板，再使用Visual Studio 2010导入，看看会发生些什么。</p>
<p>结果可耻的失败了数次，唯一的收获就是发现如果Visio 2010设计的工作流流程图如果包含了那四个神秘的权限操作的话，虽然导入到SharePoint Designer 2010里可以正常识别并且设置属性，但是在检查错误的时候就会提示该活动放错了位置，只要将其移动到SharePoint Designer 2010新增的Impersonation Step中，错误就会得以解决。</p>
<p>我猜想是因为设置权限这种操作本身就需要更高的权限才能执行，而SharePoint 2010的工作流貌似已经是以启动工作流的用户权限来运行了，只有其中的Impersonation Step才会以工作流作者（代表着更高的权限？）的权限去执行。</p>
<p>另外播放一条小道消息，Office 2010 beta马上就要公开发布了，我已经提前拿到了这一版本。</p>
]]></content:encoded>
			<wfw:commentRss>http://coding.windstyle.cn/2009/11/16/sharepoint-2010-workflow-series-4-visual-studio-2010-sharepoint-workflow-capabilities-first-look/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010工作流系列（3）：初窥Visio 2010中SharePoint工作流功能</title>
		<link>http://coding.windstyle.cn/2009/11/11/sharepoint-2010-workflow-series-3-visio-2010-workflow-capabilities-first-look/</link>
		<comments>http://coding.windstyle.cn/2009/11/11/sharepoint-2010-workflow-series-3-visio-2010-workflow-capabilities-first-look/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 13:53:20 +0000</pubDate>
		<dc:creator>Windie Chai</dc:creator>
				<category><![CDATA[SharePoint 2010工作流系列]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint Designer 2010]]></category>
		<category><![CDATA[Visio]]></category>
		<category><![CDATA[Visio Service]]></category>
		<category><![CDATA[工作流]]></category>

		<guid isPermaLink="false">http://coding.windstyle.cn/?p=440</guid>
		<description><![CDATA[介绍了SharePoint Designer 2010的变化之后，我们再来看看Visio 2010是怎样在SharePoint工作流中发挥作用的。 打开Visio 2010，SharePoint工作流的图表模板位于Flowchart分类中，叫做Microsoft SharePoint Workflow（Metric），如下图所示，选中它，点击Create来创建一个SharePoint工作流流程图。 和SharePoint Designer 2010一样，Visio 2010也使用功能区取代了古老的菜单，下图显示了Visio 2010的工作界面： 在Visio 2010左侧的Shapes面板中，罗列了可以用来设计SharePoint工作流的形状，我们可以看到，Visio将这些形状分为3类： SharePoint Workflow Actions SharePoint Workflow Conditions SharePoint Workflow Terminators 从上图可以看出，Visio 2010里用来设计SharePoint工作流的形状基本和SharePoint Designer 2010保持一致，不过它多出4个我们在上一篇文章中没有见过的形状，如下图所示： 这4个形状全部和列表项的权限设置有关，既然我们没有在SharePoint Designer 2010中发现与之对应的操作，那么将使用了这些形状的流程图导入到SharePoint Designer 2010中会发生些什么呢？我们来试试看： SharePoint Designer 2010正确地将这4个形状识别为操作，并且可以正常设置属性。那么这4个光看名字就知道极为有用的操作为什么没有办法在SharePoint Designer 2010中直接添加呢？我宁愿相信是测试版的原因…… 既然Visio 2010也可以绘制SharePoint工作流，那么它能不能够取代SharePoint Designer 2010？ 答案是不能。 首先，这两款软件所面向的人群不同。Visio 2010面向业务人员，业务人员可能对SharePoint这个庞大系统的许多知识并不了解，但他们却熟知业务流程；而IT人员正好与其相反，他们熟悉SharePoint，却对业务缺乏了解，所以SharePoint Designer 2010才是他们应该使用的工具。 其次，这两款软件的分工不同。业务人员使用Visio 2010来绘制流程图时，需要做的仅仅是把自己掌握的业务逻辑用Visio提供的形状和连线表达出来，导出为一个.vwi文件，然后将这个文件交给管理SharePoint网站的IT人员就可以了；而IT人员则需要将此文件导入到SharePoint Designer 2010中，然后添加参数、配置属性，最终发布到SharePoint网站中成为真正可以运行的工作流。 综上所述，如果Visio 2010离开了SharePoint Designer 2010，它设计的工作流就仅仅是一张流程图而已。这种明确的分工使得业务人员终于能够不需要具备SharePoint和SharePoint [...]]]></description>
			<content:encoded><![CDATA[<p>介绍了SharePoint Designer 2010的变化之后，我们再来看看Visio 2010是怎样在SharePoint工作流中发挥作用的。</p>
<p><span id="more-440"></span></p>
<p>打开Visio 2010，SharePoint工作流的图表模板位于Flowchart分类中，叫做Microsoft SharePoint Workflow（Metric），如下图所示，选中它，点击Create来创建一个SharePoint工作流流程图。</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image54.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb54.png" alt="image" width="145" height="195" /></a></p>
<p>和SharePoint Designer 2010一样，Visio 2010也使用功能区取代了古老的菜单，下图显示了Visio 2010的工作界面：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image55.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb55.png" alt="image" width="400" height="317" /></a></p>
<p>在Visio 2010左侧的Shapes面板中，罗列了可以用来设计SharePoint工作流的形状，我们可以看到，Visio将这些形状分为3类：</p>
<ul>
<li>SharePoint Workflow Actions</li>
<li>SharePoint Workflow Conditions</li>
<li>SharePoint Workflow Terminators</li>
</ul>
<p><a href="http://coding.windstyle.cn/files/2009/11/image56.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb56.png" alt="image" width="248" height="418" /></a></p>
<p>从上图可以看出，Visio 2010里用来设计SharePoint工作流的形状基本和SharePoint Designer 2010保持一致，不过它多出4个我们在上一篇文章中没有见过的形状，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image57.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb57.png" alt="image" width="400" height="197" /></a></p>
<p>这4个形状全部和列表项的权限设置有关，既然我们没有在SharePoint Designer 2010中发现与之对应的操作，那么将使用了这些形状的流程图导入到SharePoint Designer 2010中会发生些什么呢？我们来试试看：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image58.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb58.png" alt="image" width="400" height="106" /></a></p>
<p>SharePoint Designer 2010正确地将这4个形状识别为操作，并且可以正常设置属性。那么这4个光看名字就知道极为有用的操作为什么没有办法在SharePoint Designer 2010中直接添加呢？我宁愿相信是测试版的原因……</p>
<p>既然Visio 2010也可以绘制SharePoint工作流，那么它能不能够取代SharePoint Designer 2010？</p>
<p>答案是不能。</p>
<p>首先，这两款软件所面向的人群不同。Visio 2010面向业务人员，业务人员可能对SharePoint这个庞大系统的许多知识并不了解，但他们却熟知业务流程；而IT人员正好与其相反，他们熟悉SharePoint，却对业务缺乏了解，所以SharePoint Designer 2010才是他们应该使用的工具。</p>
<p>其次，这两款软件的分工不同。业务人员使用Visio 2010来绘制流程图时，需要做的仅仅是把自己掌握的业务逻辑用Visio提供的形状和连线表达出来，导出为一个.vwi文件，然后将这个文件交给管理SharePoint网站的IT人员就可以了；而IT人员则需要将此文件导入到SharePoint Designer 2010中，然后添加参数、配置属性，最终发布到SharePoint网站中成为真正可以运行的工作流。</p>
<p>综上所述，如果Visio 2010离开了SharePoint Designer 2010，它设计的工作流就仅仅是一张流程图而已。这种明确的分工使得业务人员终于能够不需要具备SharePoint和SharePoint Designer相关知识就能够轻松地参与到工作流设计工作中了。</p>
<p>我总是对SharePoint Designer工作流不支持循环耿耿于怀，于是尝试在Visio中绘制了一个可循环的流程图，果然提示工作流存在问题，无法导出，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image59.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb59.png" alt="image" width="400" height="230" /></a></p>
<p>同时Issues面板中明确地告诉我们，SharePoint工作流不支持循环，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image60.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb60.png" alt="image" width="400" height="60" /></a></p>
<p>关于Visio 2010在SharePoint工作流方面的内容就介绍这么多，当然，除了工作流功能之外，Visio 2010还可以把设计图发布到SharePoint 2010，SharePoint 2010内置了一个与之对应的服务叫做Visio Service，我们在<a href="http://coding.windstyle.cn/2009/11/08/sharepoint-2010-workflow-series-1-sharepoint-designer-2010-workflow-capabilities-first-look/">第一篇文章</a>中看到的工作流状态图就是使用这个服务来展示的。</p>
]]></content:encoded>
			<wfw:commentRss>http://coding.windstyle.cn/2009/11/11/sharepoint-2010-workflow-series-3-visio-2010-workflow-capabilities-first-look/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010工作流系列（2）：SharePoint Designer 2010中工作流的条件和操作概览</title>
		<link>http://coding.windstyle.cn/2009/11/09/sharepoint-2010-workflow-series-2-sharepoint-designer-2010-workflow-conditions-and-actions-overview/</link>
		<comments>http://coding.windstyle.cn/2009/11/09/sharepoint-2010-workflow-series-2-sharepoint-designer-2010-workflow-conditions-and-actions-overview/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 14:37:35 +0000</pubDate>
		<dc:creator>Windie Chai</dc:creator>
				<category><![CDATA[SharePoint 2010工作流系列]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint Designer 2010]]></category>
		<category><![CDATA[工作流]]></category>
		<category><![CDATA[操作]]></category>

		<guid isPermaLink="false">http://coding.windstyle.cn/?p=424</guid>
		<description><![CDATA[上一篇文章中，我介绍了SharePoint Designer 2010相对于SharePoint Designer 2007的一些变化，并没有介绍SharePoint Designer工作流的重要组成单元：条件（Condition）和操作（Action、或作“活动”），本文将着重介绍在SharePoint Designer 2010中，条件和操作都发生了什么样的变化。 条件（Condition） 下图显示了SharePoint Designer 2010的所有条件： 从上图可以看出，SharePoint Designer 2010的条件基本和2007时代一模一样，只增加了一个Person is a valid SharePoint user条件。 Person is a valid SharePoint user条件用来判断给定的用户是不是一个有效的SharePoint用户。如果只是在SharePoint内部运行工作流的话，这个条件看起来有些多余。但别忘记SharePoint 2007引入了BDC（Business Data Catalog）来连接外部业务系统，在SharePoint 2010中，BDC被改名为BCS（Business Connectivity Services），其功能和易用性都有了极大的改进。假如我们需要从外部系统中传入的条目中获取用户来分配任务，就必须判断这个用户是不是有效的SharePoint用户，这时候Person is a valid SharePoint user条件就派上了用场。 我在上一篇文章中提到了，SharePoint Designer 2010可以创建3种类型的工作流，除了List Workflow之外，其余的两种工作流都不能完全支持上图中的所有条件，其中，Reusable Workflow不能使用所有和File相关的条件，而Site Workflow只能使用If any value equals value和Person is a valid SharePoint user两个条件。 操作（Action） 介绍完条件，我们再来看看SharePoint Designer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://coding.windstyle.cn/2009/11/08/sharepoint-2010-workflow-series-1-sharepoint-designer-2010-workflow-capabilities-first-look/">上一篇文章</a>中，我介绍了SharePoint Designer 2010相对于SharePoint Designer 2007的一些变化，并没有介绍SharePoint Designer工作流的重要组成单元：条件（Condition）和操作（Action、或作“活动”），本文将着重介绍在SharePoint Designer 2010中，条件和操作都发生了什么样的变化。</p>
<p><span id="more-424"></span></p>
<h3>条件（Condition）</h3>
<p>下图显示了SharePoint Designer 2010的所有条件：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image25.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb25.png" alt="image" width="262" height="376" /></a></p>
<p>从上图可以看出，SharePoint Designer 2010的条件基本和2007时代一模一样，只增加了一个Person is a valid SharePoint user条件。</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image26.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb26.png" alt="image" width="400" height="50" /></a></p>
<p>Person is a valid SharePoint user条件用来判断给定的用户是不是一个有效的SharePoint用户。如果只是在SharePoint内部运行工作流的话，这个条件看起来有些多余。但别忘记SharePoint 2007引入了BDC（Business Data Catalog）来连接外部业务系统，在SharePoint 2010中，BDC被改名为BCS（Business Connectivity Services），其功能和易用性都有了极大的改进。假如我们需要从外部系统中传入的条目中获取用户来分配任务，就必须判断这个用户是不是有效的SharePoint用户，这时候Person is a valid SharePoint user条件就派上了用场。</p>
<p>我在<a href="http://coding.windstyle.cn/2009/11/08/sharepoint-2010-workflow-series-1-sharepoint-designer-2010-workflow-capabilities-first-look/">上一篇文章</a>中提到了，SharePoint Designer 2010可以创建3种类型的工作流，除了List Workflow之外，其余的两种工作流都不能完全支持上图中的所有条件，其中，Reusable Workflow不能使用所有和File相关的条件，而Site Workflow只能使用If any value equals value和Person is a valid SharePoint user两个条件。</p>
<h3>操作（Action）</h3>
<p>介绍完条件，我们再来看看SharePoint Designer 2010中的操作有什么样的改进，下图显示了SharePoint Designer 2010中的部分操作：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image27.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb27.png" alt="image" width="316" height="630" /></a></p>
<p>即使粗略查看上图所示的部分操作，也可以发现SharePoint Designer 2010增加了许多内置操作。在SharePoint Designer 2010中，操作分为6大类：</p>
<ul>
<li>Core Actions</li>
<li>Document Set Actions</li>
<li>List Actions</li>
<li>Relational Actions</li>
<li>Task Actions</li>
<li>Utility Actions</li>
</ul>
<p>本文旨在介绍SharePoint Designer 2010中工作流条件和操作的变化，随后的文章中会详细地介绍这些条件和操作，而本文仅做一个概览。</p>
<h4>Core Actions</h4>
<p>在上述6个操作分类中，Core Actions分类包含以下操作：</p>
<p>Add a Comment：添加描述，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image28.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb28.png" alt="image" width="400" height="21" /></a></p>
<p>Add Time to Date：为日期添加时间值，并输出到变量，如下图所示：</p>
<p>&nbsp;<a href="http://coding.windstyle.cn/files/2009/11/image29.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb29.png" alt="image" width="400" height="20" /></a></p>
<p>Do Calculation：进行计算，SharePoint Designer 2007就有此活动。</p>
<p>Log to History List：记录到历史记录列表，SharePoint Designer 2007就有此活动。</p>
<p>Pause for Duration：暂停一段时间，如下图所示：</p>
<p>&nbsp;<a href="http://coding.windstyle.cn/files/2009/11/image30.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb30.png" alt="image" width="400" height="21" /></a></p>
<p>Pause ultil Date：暂停到某时刻，如下图所示：</p>
<p>&nbsp;<a href="http://coding.windstyle.cn/files/2009/11/image31.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb31.png" alt="image" width="400" height="22" /></a></p>
<p>Send an Email：发送电子邮件，SharePoint Designer 2007就有此活动。</p>
<p>Send Document to Repository：将文档发送到Repository，如下图所示：</p>
<p>&nbsp;<a href="http://coding.windstyle.cn/files/2009/11/image32.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb32.png" alt="image" width="400" height="16" /></a></p>
<p>Set Time Portion of Date/Time Field：设置日期的时间部分，并输出到变量，如下图所示：</p>
<p>&nbsp;<a href="http://coding.windstyle.cn/files/2009/11/image33.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb33.png" alt="image" width="400" height="19" /></a></p>
<p>Set Workflow Status：设置工作流变量，可以将工作流状态设置为Approved、Rejected或Canceled，注意，此操作和“设置内容审批状态”操作不同。如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image34.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb34.png" alt="image" width="400" height="19" /></a></p>
<p>Set Workflow Variable：设置工作流变量，SharePoint Designer 2007就有此活动。</p>
<p>Stop Workflow：停止工作流SharePoint Designer 2007就有此活动。</p>
<h4>Document Set Actions</h4>
<p>Document Set Actions分类是SharePoint Designer 2010新增的一个分类。Document Set是SharePoint 2010新增加的一个企业内容管理（ECM），Document Set是一个类似文件夹的实体，它可以包含一些文档，由于它本身其实是一个内容类型，所以它也能够关联工作流。Document Set Actions分类所包含的操作就是为此功能服务的，它包含以下操作：</p>
<p>Capture a version of the Document Set：捕获Document Set的版本，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image35.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb35.png" alt="image" width="400" height="17" /></a></p>
<p>Send Document Set to Repository：将Document Set发送到Repository，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image36.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb36.png" alt="image" width="400" height="14" /></a></p>
<p>Set Content Approval Status of the Document Set：设置Document Set的内容审批状态，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image37.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb37.png" alt="image" width="400" height="19" /></a></p>
<p>Start Document Set Approval Process：启动Document Set的审批过程，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image38.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb38.png" alt="image" width="400" height="20" /></a></p>
<h4>List Actions</h4>
<p>List Actions分类包含以下操作：</p>
<p>Check In Item：签入项目，SharePoint Designer 2007就有此活动。</p>
<p>Check Out Item：签出项目，SharePoint Designer 2007就有此活动。</p>
<p>Copy List Item：复制列表项，SharePoint Designer 2007就有此活动。</p>
<p>Create List Item：创建列表项，SharePoint Designer 2007就有此活动。</p>
<p>Declare Record：定义记录，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image39.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb39.png" alt="image" width="400" height="16" /></a></p>
<p>Delete Drafts：删除草稿，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image40.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb40.png" alt="image" width="400" height="17" /></a></p>
<p>Delete Item：删除项目，SharePoint Designer 2007就有此活动。</p>
<p>Delete Previous Versions：删除之前的版本，Reusable Workflow和Site Workflow不可以使用此操作，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image41.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb41.png" alt="image" width="400" height="19" /></a></p>
<p>Discard Check Out Item：放弃签出项目，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image42.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb42.png" alt="image" width="400" height="18" /></a></p>
<p>Set Content Approval Status：设置内容审批状态，SharePoint Designer 2007就有此活动。但要注意，Site Workflow不可以使用此操作。</p>
<p>Set Field in Current Item：设置当前项目中的域，SharePoint Designer 2007就有此活动。同意，因为Site Workflow没有所谓的“当前项目”，也就不能使用此操作。</p>
<p>Undeclare Record：取消定义记录，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image43.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb43.png" alt="image" width="400" height="17" /></a></p>
<p>Update List Item：更新列表项，SharePoint Designer 2007就有此活动。</p>
<p>Wait for Change in Document Check-Out Status：等待文档签出状态更改，Reusable Workflow和Site Workflow不可以使用此操作，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image44.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb44.png" alt="image" width="400" height="20" /></a></p>
<p>Wait for Field Change in Current Item：等待当前项目中的域更改，SharePoint Designer 2007就有此活动。Site Workflow仍然不可以使用此操作。</p>
<h4>Relational Actions</h4>
<p>Relational Actions也是SharePoint Designer 2010新增的分类，它只包含一个操作：Lookup Manager of a User，用来查找指定用户的领导，并输出到变量，这是多么实用的操作啊。如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image45.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb45.png" alt="image" width="400" height="21" /></a></p>
<h4>Task Actions</h4>
<p>Task Actions分类包含以下操作：</p>
<p>Assign a Form to a Group：将表单分配给组，SharePoint Designer 2007就有此活动。</p>
<p>Assign a To-do Item：分配代办事项，SharePoint Designer 2007就有此活动。</p>
<p>Collect Data From a User：从用户处收集数据，SharePoint Designer 2007就有此活动。</p>
<p>Start&nbsp; Approval&nbsp; Process：启动审批过程，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image46.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb46.png" alt="image" width="400" height="21" /></a></p>
<p>Start Custom Task Process：启动自定义任务过程，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image47.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb47.png" alt="image" width="400" height="20" /></a></p>
<p>Start Feedback Process：启动反馈过程，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image48.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb48.png" alt="image" width="400" height="19" /></a></p>
<h4>Utility Actions</h4>
<p>Utility Actions分类包含的操作主要是对于字符串和时间的处理，其实Core Actions中的一些操作也可以归到此分类中的，此分类中的操作如下：</p>
<p>Extract Substring from End of String：从字符串尾端开始截取子字符串，并输出到变量，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image49.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb49.png" alt="image" width="400" height="21" /></a></p>
<p>Extract Substring from Index of String：从字符串的自定义位置开始截取子字符串，并输出到变量，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image50.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb50.png" alt="image" width="400" height="22" /></a></p>
<p>Extract Substring from Start of String：从字符串起始位置开始截取子字符串，并输出到变量，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image51.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb51.png" alt="image" width="400" height="21" /></a></p>
<p>Extract Substring of String from Index with Length：从字符串的自定义位置开始截取指定长度的子字符串，并输出到变量，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image52.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb52.png" alt="image" width="400" height="20" /></a></p>
<p>Find Interval Between Dates：计算两个日期之间的时间跨度，并输出到变量，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image53.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb53.png" alt="image" width="400" height="20" /></a>&nbsp;</p>
<p>SharePoint Designer 2010居然内置了如此大量的操作，势必能够为我们创建工作流带来极大的便利。如果这些内置的活动还不能满足我们的需求，我们还可以使用Visual Studio来为SharePoint Designer 2010开发自定义操作。</p>
<p>从<a href="http://coding.windstyle.cn/2009/11/08/sharepoint-2010-workflow-series-1-sharepoint-designer-2010-workflow-capabilities-first-look/">上一篇文章</a>中，我们已经知道SharePoint Designer 2010可以和Visio 2010联手设计和编辑工作流，那么下一篇文章我们就来看看Visio的工作流设计到底是什么样的。</p>
]]></content:encoded>
			<wfw:commentRss>http://coding.windstyle.cn/2009/11/09/sharepoint-2010-workflow-series-2-sharepoint-designer-2010-workflow-conditions-and-actions-overview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010工作流系列（1）：初窥SharePoint Designer 2010的工作流功能</title>
		<link>http://coding.windstyle.cn/2009/11/08/sharepoint-2010-workflow-series-1-sharepoint-designer-2010-workflow-capabilities-first-look/</link>
		<comments>http://coding.windstyle.cn/2009/11/08/sharepoint-2010-workflow-series-1-sharepoint-designer-2010-workflow-capabilities-first-look/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 15:12:08 +0000</pubDate>
		<dc:creator>Windie Chai</dc:creator>
				<category><![CDATA[SharePoint 2010工作流系列]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[List Workflow]]></category>
		<category><![CDATA[Reusable Workflow]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint Designer 2010]]></category>
		<category><![CDATA[Site Workflow]]></category>
		<category><![CDATA[Visio]]></category>
		<category><![CDATA[重用]]></category>

		<guid isPermaLink="false">http://coding.windstyle.cn/?p=365</guid>
		<description><![CDATA[SharePoint 2007首次引入了工作流，除了内置的工作流之外，还允许我们使用SharePoint Designer和Visual Studio来创建和维护工作流。那么在SharePoint 2010中，工作流得到了哪些增强和改进，设计和开发工具又有了什么样的变化？从本文开始，我会尽自己最大努力去探索这些内容并和大家分享。 由于撰写本系列文章的时候，Office 2010还没有正式发布，所以如果发现本系列文章中的内容与Office 2010正式版中有所差异，请见谅。 在Office 2007中SharePoint Designer是提供给设计人员和业务人员的一个客户端应用程序：设计人员可以使用它来定制SharePoint的UI，业务人员可以使用它来创建和维护简单的工作流。 而在Office 2010中，SharePoint Designer 2010已经演变为一个更加强大的SharePoint辅助工具，除了设计人员和业务人员之外，管理员也可以使用SharePoint Designer 2010来对SharePoint网站进行一定程度的管理。本文主要介绍SharePoint Designer在设计和维护工作流时方面的一些变化。 首次启动SharePoint Designer 2010，会提示打开一个SharePoint网站，如下图所示： 打开SharePoint网站后，我们发现SharePoint Designer 2010已经完全使用功能区（Ribbon）取代了菜单。在左侧的Navigation面板中点击Workflows，会列出SharePoint 2010内置的3个工作流，如下图所示： 我们注意到，这3个内置的工作流属于Global Reusable Workflow，也就是说，它们是可以在全局范围内重用的工作流。 在SharePoint Designer 2010中，我们可以创建3种类型的工作流： List Workflow Reusable Workflow Site Workflow List Workflow其实和SharePoint Designer 2007能够创建的工作流类型一样，只能基于现有列表创建，而且不可以重用。 在创建List Workflow时必须首先指定一个列表，如下图： 然后输入名称和描述即可，如下图： 接着就会打开一个空白的工作流设计器，和SharePoint Designer 2007一样，我们可以在设计器中添加条件和操作来构建工作流，很遗憾，SharePoint Designer 2010仍然不能创建可以循环或回退的工作流。 空白的工作流设计器如下图所示： 创建Reusable Workflow时不需要指定列表，但可以限制工作流可以绑定的内容类型，如下图所示： Site Workflow是SharePoint 2010新增的一种工作流类型。了解SharePoint [...]]]></description>
			<content:encoded><![CDATA[<p>SharePoint 2007首次引入了工作流，除了内置的工作流之外，还允许我们使用SharePoint Designer和Visual Studio来创建和维护工作流。那么在SharePoint 2010中，工作流得到了哪些增强和改进，设计和开发工具又有了什么样的变化？从本文开始，我会尽自己最大努力去探索这些内容并和大家分享。</p>
<p><span id="more-365"></span></p>
<p>由于撰写本系列文章的时候，Office 2010还没有正式发布，所以如果发现本系列文章中的内容与Office 2010正式版中有所差异，请见谅。</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb.png" alt="image" width="406" height="94" /></a></p>
<p>在Office 2007中SharePoint Designer是提供给设计人员和业务人员的一个客户端应用程序：设计人员可以使用它来定制SharePoint的UI，业务人员可以使用它来创建和维护简单的工作流。</p>
<p>而在Office 2010中，SharePoint Designer 2010已经演变为一个更加强大的SharePoint辅助工具，除了设计人员和业务人员之外，管理员也可以使用SharePoint Designer 2010来对SharePoint网站进行一定程度的管理。本文主要介绍SharePoint Designer在设计和维护工作流时方面的一些变化。</p>
<p>首次启动SharePoint Designer 2010，会提示打开一个SharePoint网站，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image1.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb1.png" alt="image" width="400" height="293" /></a></p>
<p>打开SharePoint网站后，我们发现SharePoint Designer 2010已经完全使用功能区（Ribbon）取代了菜单。在左侧的Navigation面板中点击Workflows，会列出SharePoint 2010内置的3个工作流，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image2.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb2.png" alt="image" width="400" height="273" /></a></p>
<p>我们注意到，这3个内置的工作流属于Global Reusable Workflow，也就是说，它们是可以在全局范围内重用的工作流。</p>
<p>在SharePoint Designer 2010中，我们可以创建3种类型的工作流：</p>
<ul>
<li>List Workflow</li>
<li>Reusable Workflow</li>
<li>Site Workflow</li>
</ul>
<p>List Workflow其实和SharePoint Designer 2007能够创建的工作流类型一样，只能基于现有列表创建，而且不可以重用。</p>
<p>在创建List Workflow时必须首先指定一个列表，如下图：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image3.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb3.png" alt="image" width="181" height="441" /></a></p>
<p>然后输入名称和描述即可，如下图：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image4.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb4.png" alt="image" width="400" height="230" /></a></p>
<p>接着就会打开一个空白的工作流设计器，和SharePoint Designer 2007一样，我们可以在设计器中添加条件和操作来构建工作流，很遗憾，SharePoint Designer 2010仍然不能创建可以循环或回退的工作流。</p>
<p>空白的工作流设计器如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image5.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb5.png" alt="image" width="400" height="217" /></a></p>
<p>创建Reusable Workflow时不需要指定列表，但可以限制工作流可以绑定的内容类型，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image6.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb6.png" alt="image" width="400" height="288" /></a></p>
<p>Site Workflow是SharePoint 2010新增的一种工作流类型。了解SharePoint 2007工作流的朋友们都知道，在SharePoint 2007时代，工作流必须与列表或内容类型绑定，并且必须基于一个列表项来启动，而Site Workflow不再受这两个限制的约束，我们可以在Site Actions菜单中启动Site Workflow，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image7.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb7.png" alt="image" width="256" height="551" /></a>&nbsp;</p>
<p>在SharePoint Designer 2007中，设置条件和操作的属性时是件比较麻烦的事情，比如下图的If any value equals value条件，我们必须逐个点击两个value属性和equals属性来设置这个条件表达式。</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image8.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb8.png" alt="image" width="400" height="116" /></a></p>
<p>而在SharePoint Designer 2010中，我们除了使用上述比较麻烦的方法之外，还可以点击功能区中的Advanced Properties按钮（<a href="http://coding.windstyle.cn/files/2009/11/image9.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb9.png" alt="image" width="60" height="66" /></a>）来在一个对话框中修改所有属性的值。下图显示了If any value equals value条件的属性对话框：</p>
<p>&nbsp;<a href="http://coding.windstyle.cn/files/2009/11/image10.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb10.png" alt="image" width="360" height="282" /></a></p>
<p>SharePoint Designer 2010工作流的步骤有两种，除了默认的步骤之外，还新增了一种Impersonation Step（ <a href="http://coding.windstyle.cn/files/2009/11/image11.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb11.png" alt="image" width="131" height="29" /></a> ）。默认情况下，工作流是以启动者的权限来运行的，而Impersonation Step会以工作流作者的权限来运行（我们可以思考一下这个功能的应用场景）。</p>
<p>在Reusable Workflow中，还可以点击Convert to Globally Reusable按钮（<a href="http://coding.windstyle.cn/files/2009/11/image12.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb12.png" alt="image" width="96" height="66" /></a> ）来将工作流发布到全局工作流目录，从而可以和SharePoint 2010内置的3个工作流一样在网站集的所有子网站中重用。</p>
<p>相对于SharePoint Designer的步骤型工作流设计方式，可能人们更加喜欢和习惯于Visio的图形化工作流表达方式，在Office 2010中，SharePoint Designer 2010和Visio 2010都可以用于创建和编辑工作流，但仅限于List Workflow和Reusable Workflow。</p>
<p>在SharePoint Designer 2010中，点击功能区中的Export to Visio（<a href="http://coding.windstyle.cn/files/2009/11/image13.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb13.png" alt="image" width="46" height="64" /></a>）可以将当前设计的工作流导出为一个.vwi文件，Visio可以导入该文件并进行编辑，下图演示了在Visio 2010中编辑SharePoint 2010默认的Approval工作流：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image14.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb14.png" alt="image" width="400" height="291" /></a></p>
<p>在Visio中编辑完工作流之后，可以将其导出为.vwi文件，然后点击SharePoint Designer 2010功能区中的Import from Visio（<a href="http://coding.windstyle.cn/files/2009/11/image15.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb15.png" alt="image" width="58" height="68" /></a> ）就可以导入进来继续操作。下图演示了在SharePoint Designer 2010中编辑Approval工作流，显然，Visio中流程图的展示方式更加直观：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image16.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb16.png" alt="image" width="400" height="241" /></a>&nbsp;</p>
<p>在设计List Workflow和Reusable Workflow时，还可以点击功能区中的Association Columns按钮（<a href="http://coding.windstyle.cn/files/2009/11/image17.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb17.png" alt="image" width="64" height="60" /></a>）来为工作流添加一些栏，这些栏会在工作流绑定到列表时自动添加到列表。 我们可以使用Association Columns来为工作流显示一些除了状态之外的信息，下图显示了Association Columns对话框，其中包含了一个用于显示下一级审批者的栏：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image18.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb18.png" alt="image" width="400" height="224" /></a></p>
<p>点击功能区中的Workflow Settings按钮（<a href="http://coding.windstyle.cn/files/2009/11/image19.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb19.png" alt="image" width="54" height="64" /></a>）可以在SharePoint Designer 2010中打开工作流的设置页面，下图显示了SharePoint 2010内置的Approval工作流的设置页面：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image20.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb20.png" alt="image" width="400" height="237" /></a></p>
<p>在这个页面中，我们可以查看并修改工作流的一些设置，包括名称、描述、启动方式和使用到的InfoPath表单。</p>
<p>SharePoint 2010已经支持多语言，我们可以在这里设置工作流在某些语言下的可见性。</p>
<p>此外，SharePoint 2010终于能够在工作流状态页中以图形化的方式显示工作流的当前位置了，下图中蓝色的方框表示Approval工作流现在的位置：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image21.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb21.png" alt="image" width="400" height="221" /></a></p>
<p>工作流状态图使用了Silverlight来展现，可以放大缩小，并且能够查看每一个步骤（形状）的额外信息，还能够在Visio 2010中查看。如果你不希望用户看到这个状态图，可以在上面的设置页中取消Show workflow visualization on status page。</p>
<p>在工作流设置页中，我们可以点击功能区中的Save as Template按钮（<a href="http://coding.windstyle.cn/files/2009/11/image22.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb22.png" alt="image" width="52" height="66" /></a>）将Reusable Workflow保存为一个SharePoint解决方案包（.wsp）文件，从而更加方便地在更加广泛的场合里重用工作流。</p>
<p>此外，还可以在设置页中为Reusable Workflow关联内容类型和列表，省去了打开浏览器添加工作流的步骤。如果你在创建Reusable Workflow时限制了它能够绑定的内容类型，那么在这里关联内容类型和列表时，只能在限制范围之内做关联。点击Associate to List按钮后会显示网站中的所有列表，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image23.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb23.png" alt="image" width="161" height="378" /></a></p>
<p>同样，点击Associate to Content Type后会显示网站中的所有内容类型，如下图所示：</p>
<p><a href="http://coding.windstyle.cn/files/2009/11/image24.png"><img src="http://coding.windstyle.cn/files/2009/11/image_thumb24.png" alt="image" width="318" height="483" /></a>&nbsp;</p>
<p>这篇文章就写到这里，在下一篇文章中，我会向大家介绍SharePoint Designer 2010工作流的条件和操作都发生了什么样的变化。</p>
]]></content:encoded>
			<wfw:commentRss>http://coding.windstyle.cn/2009/11/08/sharepoint-2010-workflow-series-1-sharepoint-designer-2010-workflow-capabilities-first-look/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

