SharePoint Workflow架构(一)SharePoint 和Workflow Runtime的结合

[译者按]Andy Li这篇文章,是我看过的最好的,最透彻的关于SharePoint Workflow架构的文章。通过阅读他的文章,我才清楚的了解了SharePoint Workflow的运作机制,并且在遇到问题的时候,知道如何下手查找问题。因此翻译过来,希望对Workflow的开发人员有帮助。

这篇博客是由Andy Li贡献的,他是SharePoint开发人员支持组的处理疑难问题的工程师。原文地址。这个关于Workflow的系列,是他贡献给社区的,帮助大家更好的理解Workflow运行时的内部机制,以及如何和SharePoint交互。

这篇文章由SPFarmer翻译。

SharePoint 和Workflow Runtime的结合

下面的图表描述了SharePoint Workflow的几个大块的组成部分。首先我来概要的解释一下数据流,然后在后面的几个章节,我会详细的介绍每一个部分。

首先想一下你是如何启动一个workflow的。

这个部分说的是上面图表中,左边部分蓝色箭头指向的模块。

1. 首先你在List或者Library的workflow页面,点击关联到这个list或者library的workflow。然后你被重定向到workflow初始表单(Initiation
Form,如果你这个workflow有初始表单的话)。

2. 提交完初始表单之后( Initiation Form),消息被发到了SPWorkflowManager 。SPWorkflowManager 是在SharePointObject
Model里,你唯一可以用来启动一个workflow示例的对象。

3. SPWorkflowManager 然后通知SharePoint workflow runtimeobject (SPWinOeHostService)需要启动一个workflow实例.

4. SPWinOeHostService 的功能是通知Windows Workflow Runtime来真正启动workflow实例. 这个是通过先调用System.Workflow.WorkflowRuntime.CreateWorkflow() ,然后再调用System.Workflow.WorkflowInstance.Start().来实现的。

另外一个很常见的场景就是提交一个workflow task

很多人很难理解task的数据是如何被传达到workflow实例的。这个实际上是SharePointWorkflow最复杂的地方,因为这个涉及到Workflowruntime和SharePoint的很多模块。我先概括的解释数据流,然后在后面的几篇blog里解释细节。

1. 这个流程从你打开一个workflow task的表单时开始。

2. 如果你有一个自定义的task表单,通常你会调用SPWorkflowTask.AlterTask() 来提交对这个task做的改动。这个API再调用SPListItem.Update() 来提交改动.如果你没有自定义的task表单,那么OOBSharePoint
task 在本质上做的是同样的事情.

3. 把数据从task传给worokflow的机制,是通过eventreceivers.实现的,你可能已经想到了。是的,这个就是task数据如何被传递给workflow的. 我会解释event
receivers 是如何被注册到tasks上的.现在你是需要知道,每一个workflowtask都有一个eventreceiver被hook在上面。目的是把task的改变,传给对应的workflow实例。

4. Event receiver 调用SPWorkflowManager (是的,它是唯一能够调用workflowruntime的object)的private方法SPWorkflowManager.RunWorkflow(). 也就是说,作为一个开发人员,你只能调用SPWorkflowTask.AlterTask() 或者 SPListItem.Update() 来出发这个动作。

注意: SharePoint 2010引入了一个新的概念叫PluggableService,来实现workflow能够和任何外部服务交互,比如自定义WCFservice,等等.在SharePoint2007里,这个是不可能的,在SharePoint2007里,只能通过SharePointTask俩和workflow通信.在图表里,SPWorkflowExternalDataExchangeService 被用来传递自定义事件给workflow.本质上,这个和传递task的改动到workflow是一样的,因此这里我们使用自带的task来解释其他事情。

5. 然后SPWorkflowManager 把数据传递给SharePointworkflow
runtime,然后要找出这个数据应该往下传给谁。例如,这是一个task,还是一个正常的item.基于数据的类型,对应的dataexchange
service 会继续传递数据。

6. 所有的data exchange services即使基于 Workflow
Communication Services
.在SharePoint里面,Microsoft.SharePoint.Workflow.ITaskService 是在workflow和SharePoint之间交换数据的接口。后面我们会讨论更多。

时间: 2024-11-03 19:16:08

SharePoint Workflow架构(一)SharePoint 和Workflow Runtime的结合的相关文章

SharePoint Workflow架构(二)Workflow 事件处理(Event Processing)

[译者按]Andy Li这篇文章,是我看过的最好的,最透彻的关于SharePoint Workflow架构的文章.通过阅读他的文章,我才清楚的了解了SharePoint Workflow的运作机制,并且在遇到问题的时候,知道如何下手查找问题.因此翻译过来,希望对Workflow的开发人员有帮助. 这篇博客是由Andy Li贡献的,他是SharePoint开发人员支持组的处理疑难问题的工程师.原文地址.这个关于Workflow的系列,是他贡献给社区的,帮助大家更好的理解Workflow运行时的内部

SharePoint Workflow架构(二)Workflow 事件处理管道(Event Processing Pipeline)

[译者按]Andy Li这篇文章,是我看过的最好的,最透彻的关于SharePoint Workflow架构的文章.通过阅读他的文章,我才清楚的了解了SharePoint Workflow的运作机制,并且在遇到问题的时候,知道如何下手查找问题.因此翻译过来,希望对Workflow的开发人员有帮助. 这篇博客是由Andy Li贡献的,他是SharePoint开发人员支持组的处理疑难问题的工程师.原文地址.这个关于Workflow的系列,是他贡献给社区的,帮助大家更好的理解Workflow运行时的内部

SharePoint Workflow架构(一)宿主服务(HostService): SPWinOeHostService

[译者按]Andy Li这篇文章,是我看过的最好的,最透彻的关于SharePoint Workflow架构的文章.通过阅读他的文章,我才清楚的了解了SharePoint Workflow的运作机制,并且在遇到问题的时候,知道如何下手查找问题.因此翻译过来,希望对Workflow的开发人员有帮助. 第一篇请查看:http://blog.csdn.net/spfarm/article/details/42464329 这篇博客是由Andy Li贡献的,他是SharePoint开发人员支持组的处理疑难

部署基于国际版Azure的SharePoint三层架构服务器场

前言 微软Azure国际版已经很普及了,这里没有用国内版(世纪互联),用的是国际版,当然是由于公司性质的缘故.这里一步步图文的方式,分享给大家创建Azure国际版的SharePoint三层架构的过程,并带给大家一些使用感受. 自己在使用的过程中,也发现一些问题,搜了很久也没有搞定,最后在MS case的帮助下,才真正解决了问题.同时也分享给大家,对于已经深入了解Azure的朋友,可以忽略本文,烦请勿见笑. 1.申请Azure账号,这部分略过了,我这里已经有创建好的Azure账号,在管理页面上点击

在SharePoint管理中心管理SharePoint Designer设置

在SharePoint管理中心管理SharePoint Designer设置 SharePoint Designer 2010(SPD)是一个强大的工具,帮助快速创建解决方案.通过连接到站点,用户可以自由对站点做出更改.包括外观.工作流和连接到外部源. 这个功能带来的问题是,通过创建自定义不经意地给服务器造成负担可能会产生大破坏.结果可能是SharePoint场响应降级,响应地影响网站性能. 另一个问题是用户可能修改单个网站的外观,脱离公司的标准.这样的情况再乘以用户数,你会意识到这是个大问题.

SharePoint 2010 Pop-Up Dialogs SharePoint 2010 弹出对话框

SharePoint 2010 Pop-Up Dialogs SharePoint 2010 弹出对话框 SharePoint 2010 使得往你的网站添加对话框内容变得出乎意料的简单.内置的功能允许你从站点任何地方抽取内容,然后显示在模态对话框中,出现在页面的前端.当它涉及到现代Web技术的时候,这就是很标准的东东啦,但是易用性是真正使SharePoint对话框变得如此引人的主要原因.本文中,我们将探讨SharePoint 2010 平台带来的对话框功能,并且我们会发现自定义内容的新方法,来给

SharePoint 2013添加Microsoft.SharePoint.IdentityModel引用

在使用Visual stutio 2013开发SharePoint 2013解决方案时,当使用SPClaimsUtility方法时, 需要添加Microsoft.SharePoint.IdentityModel引用,但是在框架和扩展中是看不到的,需要浏览到本地文件添加, 路径为: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.IdentityModel\v4.0_15.0.0.0__71e9bce111e9429c

SharePoint 2010升级到sharePoint 2013后,人员失去对网站的权限的原因及解决方法。The reason and solution for permission lost after the upgrading

昨天碰到了一个问题,一个网站在从SharePoint 2010升级到SharePoint 2013后,人员都不能登录了,必须重加赋权,人员才能登录,这样非常麻烦. 原因:是认证方式的问题.在SharePoint 2010中,通过管理中心新建web application的时候,就会发现提供了两种不同的认证方式,第一种是classic auth(也就是我们通俗的称为windows 认证,其实这种叫法也不全面),另一种是claim base auth. 而当时claim base的认证方式微软还没有

SharePoint 2010 Url Shortener --SharePoint 2010 短URL生成器

SharePoint 2010 Url Shortener --SharePoint 2010 短URL生成器 项目描写叙述 本项目加入了这种功能.在SP站点中能够生成短URLs. 这些URLs指向列表或文档. 比如http://smallville-pc/url/nnefhmo. 本项目的目的是同意用户创建短URLs.指向文档或列表/库,这样能够轻松分享. wsp下载地址(免积分) SharePoint 2010 短URL生成器 部署方法 參照部署.收回和删除解决方式----STSADM和Po