代码改变世界

随笔分类 - Workflow

WF4.0活动模型(1):工作流既活动

2010-01-26 09:09 by Windie Chai, 3800 阅读, 收藏, 编辑
摘要:如果你已经开发过Windows Workflow Foundation(WF)程序,那么你应该会非常熟悉活动。在WF世界中,程序被定义为一个活动树。有些活动用来控制程序的流,比如 Sequence、If和While;有些活动执行特殊的操作,比如Assign、InvokeMethod和WriteLine;还有一些可以和外部系统通讯,比如Send和Receive…… 阅读全文

泛谈SharePoint 2010无代码工作流

2010-01-25 09:08 by Windie Chai, 8396 阅读, 收藏, 编辑
摘要:<img src="http://coding.windstyle.cn/uploads/coding/2009/12/SharePoint-2010-Day-Logo.jpg" style="border: 0px none ;" alt=""> 在1月16日的“SharePoint 2010 Day”活动中,我奉献了一节《SharePoint 2010:新一代无代码工作流》讲座,会后Choral兄让我把它拆成几篇日志,于是就有了本文(本文是当天课程去 阅读全文

SharePoint 2010工作流系列(3):初窥Visio 2010中SharePoint工作流功能

2009-11-12 08:27 by Windie Chai, 4660 阅读, 收藏, 编辑
摘要:介绍了SharePoint Designer 2010的变化之后,我们再来看看Visio 2010是怎样在SharePoint工作流中发挥作用的。 阅读全文

SharePoint 2010工作流系列(2):SharePoint Designer 2010中工作流的条件和操作概览

2009-11-10 09:13 by Windie Chai, 5622 阅读, 收藏, 编辑
摘要:上一篇文章中,我介绍了SharePoint Designer 2010相对于SharePoint Designer 2007的一些变化,并没有介绍SharePoint Designer工作流的重要组成单元:条件(Condition)和操作(Action、或作“活动”),本文将着重介绍在SharePoint Designer 2010中,条件和操作都发生了什么样的变化。 阅读全文

SharePoint 2010工作流系列(1):初窥SharePoint Designer 2010的工作流功能

2009-11-09 08:44 by Windie Chai, 7521 阅读, 收藏, 编辑
摘要:SharePoint 2007首次引入了工作流,除了内置的工作流之外,还允许我们使用SharePoint Designer和Visual Studio来创建和维护工作流。那么在SharePoint 2010中,工作流得到了哪些增强和改进,设计和开发工具又有了什么样的变化?从本文开始,我会尽自己最大努力去探索这些内容并和大家分享。 阅读全文

WF 4.0 beta 2学习资源

2009-10-28 10:33 by Windie Chai, 2606 阅读, 收藏, 编辑
摘要:WF 4.0 beta 2已经揭开了面纱,各位想要了解WF 4.0 beta 2的朋友,以下的资源可不能错过。 阅读全文

WF 4.0 beta2相对于beta1的变化

2009-10-22 09:01 by Windie Chai, 2815 阅读, 收藏, 编辑
摘要:本文的作者是微软WF Team的PM,Matt Winkler,本文主要介绍了WF 4.0 beta2中的一些有趣的新变化,比如活动层次结构的变化、运行时的,活动的变化、设计器的改进等。 阅读全文

《WF高级程序设计》(《Pro WF:Windows Workflow in .NET 3.5》中文版)上市

2009-10-19 09:33 by Windie Chai, 6927 阅读, 收藏, 编辑
摘要: “若想了解WF,本书是必读之物。本书涉及面之广,所讲内容之深是同类书籍所无法企及的。强烈推荐给每一位想了解WF的人,它真的很棒!” --Amazon.com 很高兴能告诉大家,《Pro WF:Windows Workflow in .NET 3.5》的中文版,《WF高级程序设计》已经正式出版上市了。 阅读全文

针对WF开发人员的迁移指南

2009-07-22 10:00 by Windie Chai, 2603 阅读, 收藏, 编辑
摘要:日前,微软WF团队发布了《WF 4 Migration Guidance》,该文档旨在描述现有的WF 3.x技术(这些类型定义于System.Workflow.*命名空间中)与即将发布的.NET 4中的新的WF技术(System.Activites.*命名空间)之间的关系,藉此来帮助WF开发人员去评估.NET Framework 4中引进的新的WF编程模型。 同时,迁移指南中所涉及到的代码将会发布在《WF Migration Guidance project on the MSDN Code Gallery》。 阅读全文

WF 4.0 beta1中的跟踪参与者

2009-07-16 08:43 by Windie Chai, 1985 阅读, 收藏, 编辑
摘要:在之前的文章中,我们简单的介绍了WF 4.0 beta1中的跟踪机制,并且深入介绍了WF 4.0 beta1的跟踪配置。本文将继续解释跟踪参与者(Tracking Participants)是如何工作的、以及如何使用跟踪参与者来处理和存储工作流放出的跟踪记录。我们还将介绍现成的Event Tracing for Windows(ETW) 跟踪参与者以及如何通过它在事件查看器中查看跟踪记录。 阅读全文

WF 4.0 beta1的跟踪配置

2009-06-22 08:31 by Windie Chai, 1893 阅读, 收藏, 编辑
摘要:上周我们介绍了WF 4.0 beta1中的跟踪机制。本文将继续深入介绍跟踪配置,并会解释如何使用它们来灵活地跟踪工作流的执行过程。 阅读全文

WF 4.0的建模风格:顺序和Flowchart

2009-06-16 08:56 by Windie Chai, 4447 阅读, 收藏, 编辑
摘要:WF 4.0提供了许多活动,其中有一些是流控制活动,用来表达不同的建模风格,开发人员可以使用这些风格来构建各自的业务过程。顺序和Flowchart是WF4中提供的两个建模风格。本文将会介绍这两种建模风格,了解它们的概念、使用场景、以及它们之间的主要区别。 阅读全文

WF 4.0 beta1中的跟踪机制

2009-06-15 08:40 by Windie Chai, 3022 阅读, 收藏, 编辑
摘要:简单的说,跟踪服务是用来查看工作流的执行情况的功能。WF跟踪基础结构会检测工作流执行时发出的一些关键事件,并进行记录。例如,工作流在启动或完成时,就会发出跟踪记录。跟踪也可以提取与工作流变量相关联的业务相关数据。 阅读全文

WF 4.0 beta1活动概览(2):Flowchart、Messaging、PowerShell以及Migration

2009-06-11 08:20 by Windie Chai, 2022 阅读, 收藏, 编辑
摘要:本文接着来介绍一下WF 4.0 beta1的其他几个活动分类:Flowchart、Messaging、PowerShell和Migration。 阅读全文

WF 4.0 beta1活动概览(1):Procedural

2009-06-10 00:17 by Windie Chai, 1743 阅读, 收藏, 编辑
摘要:相比于WF 3.5,WF 4.0 beta1提供了大量开箱即用的活动,我们可以使用这些活动来创作工作流或者创建自定义活动。本文将会对这些活动做一个简单快速的概览,并介绍它们的关键特性。 活动是工作流程序的工作单元。在WF 4.0中,活动由签名和正文组成。签名是活动的公共参数的术语化定义,这些公共参数定义了活动的输入和输出数据流。而正文则是指活动的执行逻辑,此逻辑可以用其他活动声明性地表示,也可以通过代码来表示。 阅读全文

初窥WF 4.0 beta1

2009-05-20 02:04 by Windie Chai, 4181 阅读, 收藏, 编辑
摘要:微软终于发布了Visual Studio 2010 beta1,而在这个版本中,WF也终于以崭新的面貌出现,并且让我们大吃一惊。 本文就来简短地瞻仰一下WF 4.0的尊荣,抛砖引玉,希望同好者能挖掘出更多新特性。 阅读全文

SharePoint工作流开发点滴(7) - 用代码完成任务

2009-05-11 08:29 by Windie Chai, 4032 阅读, 收藏, 编辑
摘要:我们知道,SharePoint的工作流是通过任务来驱动的,在真实场景中,我们可能会希望工作流的任务处理方式能够更加灵活,比如批量处理、通过Office Communicator等IM软件处理任务等等,这时候我们就需要以编程的方式在外部完成任务。 本文会介绍一种在SharePoint工作流外部以编程的方式完成任务的方法。 阅读全文

创建、部署和卸载SharePoint工作流解决方案包(WSP)

2009-04-30 15:36 by Windie Chai, 5824 阅读, 收藏, 编辑
摘要:在Visual Studio 2005时代,Visual Studio的插件提供了一个批处理文件(*.bat)来部署SharePoint工作流;在Visual Studio 2008时代,Visual Studio支持直接部署SharePoint工作流。虽然使用Visual Studio 2008来设计、开发以及部署SharePoint工作流非常方便,但如果想要把开发好的工作流部署到其他服务器,就会发现,Visual Studio 2008并没有将工作流生成为一个WSP文件,也没有提供批处理文件。 本文就来介绍一种在Visual Studio 2008中生成SharePoint工作流WSP文件的方法。虽然这个方法并不是什么新方法,但却知者甚少,所以我还是累述一下吧。 阅读全文

WF 4.0,迎接变化

2008-11-09 00:45 by Windie Chai, 4317 阅读, 收藏, 编辑
摘要:今年的MVP Open Day和PDC的课程都介绍了WF 4.0的变化。在Tech Ed 2008北京分会场听了WF 4.0的课程并参加了相关动手实验后,发现WF 4.0的变化并不仅仅是升级那么简单,本文简单的介绍了一下关于WF4.0新特性以及我的一些感受。 最后还会提供相关课程的视频和讲义下载。 阅读全文

《WF编程》系列之45 - 承载工作流:持久化与跟踪

2008-09-12 09:16 by Windie Chai, 4545 阅读, 收藏, 编辑
摘要:SQL持久化和跟踪服务分别为工作流状态和跟踪信息提供了持久的存储。但是,它们并没有一起工作。具体来说,每个服务都会使用不同的数据库连接来进行操作。工作流Runtime也因此会使用多个数据库连接。如果跟踪服务开启了事务支持,则会导致额外的开销出现。当事务跨越多个连接时,微软分布式事务协调程序(Microsoft Distributed Transaction Coordinator,MSDTC)会接受事务的管理。MSDTC也会造成一些开销。WF为同时使用了SQL持久化和SQL跟踪服务的应用程序提供了优化方案:SharedConnectionWorkflowCommitWorkBatchService类。这个服务允许两个SQL服务共享一个连接(前提是这两个SQL服务的连接字符串是相同的)。 阅读全文

《WF编程》系列之44 - 承载工作流:跟踪服务 Tracking Service

2008-09-10 09:07 by Windie Chai, 3905 阅读, 收藏, 编辑
摘要:Windows Workflow 提供了可扩展可收缩的跟踪功能来捕捉和记录工作流的执行信息。对于接收到的工作流信息,跟踪服务会使用跟踪配置(tracking profile)来进行筛选。WF Runtime可以发送许多信息,包括工作流事件、活动状态更改、规则判断和我们的自定义检测数据(custom instrumentation data)。跟踪服务有能力决定如何处理接收到的数据,可以把它们记录到日志文件里,也可以保存到数据库中。在本节,我们将会看到Tracking信息是如何通过WF提供的API保存在数据库里的。 阅读全文

《WF编程》系列之43 - 承载工作流:持久性服务 Persistence Services

2008-08-27 09:03 by Windie Chai, 4124 阅读, 收藏, 编辑
摘要:工作流在长时间运行时难免会遇到一些问题,许多业务逻辑需要花费数日、数周乃至数月。在这段时间中,我们不能让工作流实例一直驻留在内存中(比如,我们需要一份开支报告,而不巧的是对此负责的会计师却在西班牙海滩休假,怎么办呢?)。在Windows Workflow中,可以通过持久化服务来解决长时间运行的工作流可能遇到的问题。 阅读全文

《WF编程》系列之42 - 承载工作流:调度(Scheduling)服务

2008-07-29 13:09 by Windie Chai, 3658 阅读, 收藏, 编辑
摘要:Windows Workflow Foundation中有两种调度服务:DefaultWorkflowSchedulerService和ManualWorkflowSchedulerService。 本文将为大家介绍这两种调度服务的区别,通过配置文件配置服务的方法,各自适合的场景。 阅读全文

状态机工作流的并行事件

2008-07-22 09:04 by Windie Chai, 5457 阅读, 收藏, 编辑
摘要:在状态机工作流中,如何在接收并处理两个并行的事件呢?又如何在这两个事件都完成之后做进一步操作呢? 本文通过我的上一篇文章《MOSS多级审批工作流【StateMachine版】》来和大家分享我的一种方法。 阅读全文

MOSS多级审批工作流【StateMachine版】v1.1

2008-07-15 09:08 by Windie Chai, 8664 阅读, 收藏, 编辑
摘要:去年我发布过一个MOSS多级审批工作流,采用顺序工作流模式开发;后来又做了一些改进,用ConditionedActivityGroupActivity取代了繁复的WhileActivity+IfElseActivity嵌套,但仍然是顺序工作流。 在第二篇文章的末尾我曾写道:“审批这样的流程并不适合用顺序工作流来实现,用WF的另外一种工作流-状态机工作流会更好”,前段时间终于又想起了这回事儿,抽空把这个工作流用状态机实现了,现在和大家分享一下开发心得。 阅读全文

《WF编程》系列之41 - 承载工作流:日志和配置文件

2008-04-21 09:37 by Windie Chai, 4310 阅读, 收藏, 编辑
摘要:Windows Workflow 其实是一个Runtime,而不是应用程序。在启动工作流之前,宿主进程必须先加载并运行工作流Runtime。宿主进程告诉Runtime要创建什么类型的工作流,Runtime则负责管理工作流的生命周期并通知宿主进程重要的生命周期事件,比如工作流的完成和终结。Runtime并不挑剔它的宿主,宿主可以是台式机上的智能客户端应用程序,也可以是机架上的服务器中运行的ASP.NET进程。所有宿主进程需要做的只是加载.NET 3.0工作流程序集而已。 在本章中,我们将深入探讨Windows Workflow Runtime和它的服务。首先来认识一下日志(Logging)、跟踪(Trackng)和工作流Runtime的配置选项;接着是调度服务(Scheduling Services),调度服务为Runtime执行工作流提供了线程支持;然后是持久化服务,持久化服务允许我们将工作流状态信息保存到持久存储设备;最后,我们将介绍跟踪服务,跟踪服务允许我们监视工作流的执行过程。 阅读全文

《WF编程》系列之40 - 自定义活动:活动的执行

2008-04-10 09:30 by Windie Chai, 6030 阅读, 收藏, 编辑
摘要:在Windows Workflow中,一个活动有几种可能的状态?它们之间是如何转换的?如果我们编写自定义复合活动,该如何控制子活动的状态转换? 阅读全文

《WF编程》系列之39 - 自定义活动:继承法与活动组件

2008-03-18 09:33 by Windie Chai, 3726 阅读, 收藏, 编辑
摘要:从根本上来说,采用组成法或继承法来创建自定义活动并没有太大的差别. 而且相对组成发来说,继承法更加容易理解. 在组成法中,我们关注于如何组织自定义活动内的子活动,并且创建了活动属性和执行模型. 而继承法是一种相对更加初级的方法,我们关注的更多的是活动本身所承载的功能. 让我们用继承法编写一个向控制台输出字符串的自定义活动,并为其添加验证器和友好的设计器外观吧. 阅读全文

《WF编程》笔记目录

2008-03-18 09:33 by Windie Chai, 27932 阅读, 收藏, 编辑
摘要:WF笔记开始《WF编程》系列之0 - WF笔记开始电子版下载地址《WF编程》系列之附录 电子版下载地址1 Hello, Workflow1.1 创建工作流解决方案《WF编程》系列之1 - Hello,Workflow &amp; 创建工作流解决方案 1.2 漫游工作流1.2.1 活动1.2.1.1 自定义活动《WF编程》系列之2 - 漫游工作流:活动与自定义活动1.2.2 Visual Studio 2005 扩展1.2.2.1 Windows Workflow 和 XAML1.2.2.2 WF 验证和调试1.2.2.3 设计器外观《WF编程》系列之3 - 漫游工作流:Visual Studi 阅读全文

《WF编程》系列之38 - 依赖属性

2008-01-30 10:19 by Windie Chai, 5459 阅读, 收藏, 编辑
摘要:引进依赖属性的最终目标是什么? 依赖属性拥有什么功能? 怎样注册依赖属性? 什么时候应该选择依赖属性? 阅读全文

《WF编程》系列之37 - 打开黑盒子:属性升级

2008-01-10 09:36 by Windie Chai, 4014 阅读, 收藏, 编辑
摘要:组合活动就像一个黑盒子,工作流设计器无法获取这个黑盒子内部的属性和事件,除非我们把这些属性和事件曝露给外部世界. 这时便需要利用属性升级(Property promotion),属性升级允许组合活动的设计者去决定属性对于外部世界的可见性. 阅读全文

《WF编程》系列之36 - 自定义活动:如何创建自定义活动?活动的组合

2007-12-07 09:56 by Windie Chai, 4190 阅读, 收藏, 编辑
摘要:有两种方式可以创建自定义活动,即通过组合的方式和使用继承的方式. 组合是一种简单的创建工作流的方式.我们在设计器中拖拽并配置活动的属性,然后把这个自定义活动封装成一个程序集,这样就可以供其它工作流项目使用了.这种方式的优点是快速并且简单. 使用继承的方式来创建自定义活动,我们需要编写一个类,并使其继承Activity类.也可以继承自Activity的子类从而获得更多的功能.我们可以自定义活动的设计视图,验证,序列化和代码生成.继承的方式允许我们对自定义活动进行更深层次的控制,并且提供了使用自定义代码来扩展Windows Workflow的途径. 阅读全文

《WF编程》系列之附录 电子版下载地址

2007-12-06 10:15 by Windie Chai, 11698 阅读, 收藏, 编辑
摘要:3月份开始读《Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C#》一书并写《WF编程》笔记,拖拖拉拉写到现在,居然也翻译了全书的一半。 这期间和很多朋友通过评论、留言、Email和IM等方式(就差写信了)就编写WF程序中遇到的问题进行探讨,套用某新闻节目中经常使用的和谐的五个字:“友好的交流”。 ………………华丽的省略号……………… 阅读全文

《WF编程》系列之35 - 自定义活动:为何创建自定义活动?

2007-11-25 23:58 by Windie Chai, 2612 阅读, 收藏, 编辑
摘要:使用通用的framework来开发软件虽然轻松,但却不够高效.我们每天都会遇到一些问题,只有使用专门面向这些问题的framework来开发软件才是真正的轻松并且高效.通过自定义活动,我们可以为这些日常问题量身打造工作流.自定义活动可以用来解决特定业务领域的问题,譬如,医疗软件中化验病人的血液样本的过程;我们也可以为IT领域编写自定义活动.如果我们的应用程序大量使用了Microsoft Message Queuing(MSMQ),我们就可以创建和MSMQ交互的自定义活动. 这一章将会讲述如何编写自定义活动,并且深入研究实现自定义活动的不同方式.我们会讨论如何使用组合的方式创建黑盒活动和白盒活动;如何使用继承的方式来创建自定义活动;如何创建验证和设计时的行为.接着,我们还会讨论一些相关概念,比如依赖性属性(Dependency Property)和执行上下文(Execution Context).在本章的最后,我们将比较组合和继承这两种创建自定义活动方式,并理解创建自定义活动的要点. 阅读全文

《WF编程》系列之34 - 基本活动:状态活动

2007-10-30 10:23 by Windie Chai, 3632 阅读, 收藏, 编辑
摘要:本节来介绍一下在状态机工作流中工作的活动. 一个状态机是由一系列状态(State)组成的.譬如,用来模拟软件bug跟踪的状态机工作流也许会包含以下四个状态:开启,分配,关闭和延期,工作流总是处于其中一个状态中.状态机的执行完全依靠事件来驱动.只有当工作流接收到适当的事件,才可以从当前的状态转换到一个新的状态.一个状态机必须包含一个起始状态和一个可选的结束状态.当工作流转换到结束状态时,工作流就完成了. 状态机工作流适合于模拟由外部决策来驱动执行的工作流.当我们做出了决策,比如关闭一个bug,我们需要一个本地通信服务来为工作流触发事件.工作流知道当前所处状态和可能将要转换到的状态.譬如,我们规定一个开启的bug必须在关闭之前被分配给相关人员,但它也可以从开启状态直接转换到延期状态. 我们在建立一个状态机时,第一步就是定义这些状态. 阅读全文

《WF编程》系列之33 - 基本活动:Web Services

2007-10-22 15:28 by Windie Chai, 3010 阅读, 收藏, 编辑
摘要:今时今日,一个完善的软件无可避免的需要发送或接受SOAP请求,WF也包含了一些围绕Web Services的客户端或者服务器端的活动: InvokeWebServiceActivity:调用Web Service方法; WebServiceInputActivity:接受Web Service 请求; WebServiceOutputActivity:响应Web Service请求; WebServiceFaultActivity:抛出SOAP异常. 阅读全文

《WF编程》系列之32 - 基本活动:条件与规则

2007-09-29 11:24 by Windie Chai, 2630 阅读, 收藏, 编辑
摘要:WF中关于条件和规则的活动有两个: ConditionedActivityGroup(CAG) 活动和Policy活动. 虽然我们也把CAG视作控制流的活动,但事实上CAG更加侧重于对条件和规则的控制. Policy活动是一个规则引擎,它允许我们将业务逻辑从工作流并中分离并且声明性的定义业务策略. 本节将对这两个活动进行简单的介绍. 阅读全文

《WF编程》系列之31 - 基本活动:事务(Transactions)与补偿(Compensation)

2007-09-28 15:34 by Windie Chai, 3153 阅读, 收藏, 编辑
摘要:本节简单的介绍WF中有关事务和补偿的几个内置活动. 阅读全文

SharePoint工作流开发点滴(6) - “我的任务不给你看”

2007-08-21 01:38 by Windie Chai, 9956 阅读, 收藏, 编辑
摘要:一直以来都被MOSS的工作流权限问题所困扰. 我们虽然将任务分配给了某人,但事实上,所有在任务列表中有编辑权限的用户都可以编辑该任务. 而我们并不希望用户能够看到不属于自己的任务. 我曾经尝试过采用以下两种方法解决这一问题,未果. 1.更改任务列表的视图. 2.EventHandler 我一直固执的认为任务列表的权限应该是在MOSS中配置,而不应该在工作流内部做判断,后来,我终于发现我错了. 我们使用CreateTask活动来创建任务,CreateTask活动有一个属性叫做SpecialPermissions,它的类型是HybridDictionary. 这个属性的作用就是,如果你为其指定了"特别权限",那么创建的任务就不再继承任务列表的权限了.所以我们可以在创建任务之前为其指定这个"特别权限". 阅读全文

《WF编程》系列之30 - 基本活动:错误处理

2007-08-09 22:59 by Windie Chai, 2691 阅读, 收藏, 编辑
摘要:Fault,故障,现在官方已经将其翻译为错误,那么以后的随笔中我也就采用官方的翻译吧. 错误处理也属于流程控制的一部分,这一节我来介绍一下有关错误处理的活动.错误是指在工作流执行期间发生的异常.我们可以使用错误处理程序来捕捉这些异常并尝试做一些”修复”工作.我们可以补偿提交的事务,或者发送Email来警告管理员并等待丢失的数据被修复. 我们最好在工作流中对可能发生的错误进行处理,如果工作流抛出了一个异常,而我们又不知道如何去处理,那么只能等Runtime终止工作流. 阅读全文

《WF编程》系列之29 - 本地通信事件:HandleExternalEventActivity & 活动生成器

2007-08-07 22:12 by Windie Chai, 3629 阅读, 收藏, 编辑
摘要:像CallExternalMethod活动一样,HandleExternalEvent活动也有一个必须设置的InterfaceType属性.当我设置这个属性之后,我们就可以设置EventName属性了. 如果从本地服务而来的事件一直没有到达HandleExternalEvent的话,它就不会完成.假如事件有可能永远不会到达,或者事件需要过一段时间之后才会到达,那么最好把这个活动置于Listen活动内部.我在之前介绍过,Listen活动可以有多条分支,我们可以把Delay活动放到其中一条分支中来模拟超时. Windows Workflow包含了一个命令行工具来执行Windows Workflow Communications活动生成器:wca.exe. 我们可以向wca.exe传递.NET程序集(.dll或.exe)的路径,这个工具会在程序集中寻找有ExternalDataExchange标识的接口.找到之后,它就会生成专门的自定义活动,可以执行接口中的方法和处理接口中的事件. 阅读全文

使用VISUAL STUDIO 2008 BETA2 创建 SHAREPOINT 工作流

2007-08-06 00:28 by Windie Chai, 4522 阅读, 收藏, 编辑
摘要:前几天从Kaneboy大侠处得知Visual Studio 2008 Professional Edition Beta 2和Visual Studio 2008 Team System 2008 – Team Suite Beta 2中包含了最新的VSTO 3.0(Visual Studio Tools for Office),SharePoint的工作流项目也被包含在了VSTO 3.0之中,而且极大的改进了调试方式,“基本上,调试一个SharePoint Workflow的方法就是直接按F5”(Kaneboy《即将从TechReady5归来》). 这个改进真是让我欣喜若狂啊,这一段时间正被”附加到进程”的调试方式折磨呢,不知道什么原因,两次附加中总会有一次导致Visual Studio 2005崩溃. 那么,今天,就来尝试一下用Visual Studio 2008 Beta 2来创建一个MOSS工作流,看看都有什么变化. 阅读全文

《WF编程》系列之28 - 本地通信事件:CallExternalMethodActivity

2007-08-03 16:47 by Windie Chai, 3915 阅读, 收藏, 编辑
摘要:让工作流和外部世界进行交互也并不是什么难事,因为WF本身就内置了一些活动来完成这样的工作. 为了能让本地通信可以工作,我们需要以.NET接口的形式定义一个合同.在这个接口中会包含一些方法和事件,工作流可以通过这些方法来调用本地服务,而本地服务则可以触发这些会被工作流处理的事件. 阅读全文

MOSS多级审批工作流【Sequential+ConditionedActivityGroup版】v1.1

2007-08-01 23:08 by Windie Chai, 7974 阅读, 收藏, 编辑
摘要:今年二月份,我开发了一个MOSS多级审批工作流,并在《SharePoint多级审批工作流开发文档[Sequential版]》这篇文档中详细的描述了整个开发过程而且提供了项目源码下载。 其实我在匆匆的写这篇文档的时候,对MOSS和WF连一知半解都谈不上。 所以为了实现审批流程中常见的动作-“回退”,我用了好几层的While和IfElse嵌套,使工作流看起来非常繁复,最近终于决定腾出一个分区安装了Windows Server 2003 和MOSS,然后把这个审批工作流改了一下。 阅读全文

《WF编程》系列之27 - 基本活动:EventHandlingScopeActivity & SynchronizationScopeActivity & ReplicatorActivity

2007-07-27 02:41 by Windie Chai, 3255 阅读, 收藏, 编辑
摘要:和Listen活动类似,EventHandlingScope活动也可以包含多个等待事件的分支.那么这两个活动的区别是什么呢? Parallel活动会同时执行它的每个分支, SynchronizationScope活动则正好相反,它的作用是阻止将要同时执行的活动,并让它们一个接一个的执行. Replicator活动和While活动类似,而且更加复杂.也可以这样理解,Repicator活动只能包含一个子活动,在其运行时,会取出InitialChildData属性中的所有数据,然后为每一个数据创建一个子活动的副本. 阅读全文

《WF编程》系列之26 - 基本活动:ParallelActivity & DelayActivity & ListenActivity

2007-07-26 15:11 by Windie Chai, 3387 阅读, 收藏, 编辑
摘要:Parallel活动允许多个活动同时执行并等待它们全部完成; 与它相似,Listen活动也可以包含多个分支.但不同的是Listen活动的目的仅仅是完成一个分支; Delay活动会初始化一个计时器并等待它到期,经常用来模拟超时. 本节我们使用这三个活动来模拟一个文件在公司的审批流程. 阅读全文

《WF编程》系列之25 - 基本活动:InvokeWorkflowActivity

2007-07-25 09:27 by Windie Chai, 3020 阅读, 收藏, 编辑
摘要:InvokeWorkflow活动可以在工作流执行过程中异步的执行另一个工作流.我们可以设置这个外部工作流的输入参数,却无法直接获取其输出参数(因为执行过程是异步的). 本节非常简单的介绍了InvokeWorkflow的基本概念,属性和事件,关于这个活动的详细探讨,包括如何获取外部工作流的输出参数,将在以后的文章中分享. 阅读全文

《WF编程》系列之24 - 基本活动:SuspendActivity & TerminateActivity & ThrowActivity

2007-07-24 14:17 by Windie Chai, 2823 阅读, 收藏, 编辑
摘要:这一节我们来介绍SuspendActivity,TerminateActivity和ThrowActivity. 这三个活动有一个共同的特点是都可以中断工作流的执行,不同的是Suspend用来暂停工作流,Terminate用来终止工作流,而Throw则可以抛出异常. 本节将介绍这三个活动的简单使用方法以及关键属性. 阅读全文

《WF编程》系列之23 - 基本活动:IfElseActivity & WhileActivity & SequenceActivity

2007-07-23 09:27 by Windie Chai, 3356 阅读, 收藏, 编辑
摘要:这一节介绍两个基本活动:IfElse,While和Sequence. 这三个活动都是复合活动,它们都可以包含多个子活动,但While活动有个特殊的限制,它只能直接包含一个子活动. 本节将介绍这三个活动的简单使用方法,子活动,以及关键属性. 阅读全文

《WF编程》系列之22 - 基本活动:CodeActivity

2007-07-20 09:07 by Windie Chai, 2895 阅读, 收藏, 编辑
摘要:活动是组成工作流的基本块.Windows Workflow的基本活动库包含了一些都通用的工作流活动.功能涉及流程控制,事务管理,本地通信,Web Services以及其他等等.这些活动都在工具箱中可以找到.有一些活动比较简单,比如CodeActivity,它的工作就是执行一段代码.而有的活动就比较复杂,如PolicyActivity可以以正向链法(forward chaining)来估算优先级. 通过使用这些基本活动,我们可以构建强大的工作流. 从这篇随笔开始,我将逐个介绍基本活动库中的所有活动,第一个出场的是一直出现在范例中的CodeActivity. 阅读全文

《WF编程》系列之21 - 故障 Faults

2007-07-19 09:34 by Windie Chai, 2667 阅读, 收藏, 编辑
摘要:和所有软件一样,工作流未必总是能够完美的执行.例如,数据库服务器的故障就可能使工作流抛出异常.此外,我们还可以通过TrowActivity来人为的抛出一个异常. 在工作流内部管理异常和管理C#中的异常类似.复合活动包含一个故障处理程序(fault handlers)来捕捉异常. 在.NET中,异常一直向上传递直到.NET Runtime为其找到合适的异常处理程序.在工作流内部也是一样,如果活动没有处理发生的异常,Runtime会把这个异常传递给它的父活动.如果Runtime无法找到故障处理程序,Runtime会终止工作流并触发WorkflowTerminated事件. 阅读全文

《WF编程》系列之20 - 触发事件与调用方法:宿主的实现

2007-07-17 09:38 by Windie Chai, 3861 阅读, 收藏, 编辑
摘要:我们已经实现了服务合同,服务以及工作流,本节来实现这一范例的最后一块:宿主. 阅读全文

《WF编程》系列之19 - 触发事件与调用方法:服务以及工作流的实现

2007-07-16 14:27 by Windie Chai, 4274 阅读, 收藏, 编辑
摘要:上一节中我们已经实现了服务合同,这一节我们来实现具体的服务以及工作流. 阅读全文

《WF编程》系列之18 - 触发事件与调用方法:服务合同 Service Contracts

2007-07-13 10:58 by Windie Chai, 4203 阅读, 收藏, 编辑
摘要:许多开发人员想要建立一个更加正式的机制来方便和工作流交互.尽管使用Dictionary可以简单灵活的向工作流传递数据,但这种方法需要参数名称和伴随属性的严格匹配.而且我们只可以在工作流开始时使用参数向工作流传递数据,或在结束是获取数据.许多工作流需要在执行过程的不同时期和宿主交换数据.我们可以使用事件和方法调用来达到这个目的.这一节,我们来讨论数据传输通信的基本原理. 工作流和其宿主可以通过本地通信服务(LCS,local communication service)交换数据.LCS允许工作流和宿主之间的事件和方法调用.在后台,工作流Runtime和LCS一起工作来截取通信并提供附加服务(就像事件在排队直到工作流处于可以接受事件的状态). 阅读全文

《WF编程》系列之17 - 工作流与外部事件:工作流参数

2007-07-11 09:49 by Windie Chai, 3783 阅读, 收藏, 编辑
摘要:如何向工作流传递参数? 阅读全文

《WF编程》系列之16 - 工作流与外部世界:生存周期事件

2007-04-28 16:44 by Windie Chai, 4269 阅读, 收藏, 编辑
摘要:对许多工作流来说,有一个重要的步骤是决定工作流与应用程序之间如何交互.我们如何得知工作流是否顺利完成?如何从运行中的工作流实例获取数据?如何获取已经完成的工作流的数据?这一节,我们来介绍一些解决这些问题的基本技术原理. 工作流的基本通信机制包括事件,方法和工作流参数.应用程序可以触发工作流实例的事件,也可以从工作流Runtime接收工作流实例的生存周期事件.首先我们来讨论一下工作流的生命周期事件. 阅读全文

《WF编程》系列之15 - 顺序工作流与SequenceActivity

2007-04-26 10:54 by Windie Chai, 5463 阅读, 收藏, 编辑
摘要:简单的介绍一下顺序工作流与SequenceActivity. 阅读全文

《WF编程》系列之14 - 工作流编写方式:结合代码与XAML

2007-04-25 12:18 by Windie Chai, 3779 阅读, 收藏, 编辑
摘要:Visual Studio还提供另外一种生成工作流的方式:代码分离与XAML标记结合的方式,即通常我们所说的code-beside.采用这种方式时,设计器会将工作流标记存储到一个XOML文件中,我们则可以在C#或Visual Basic源代码文件里扩充定义. 阅读全文

《WF编程》系列之13 - XAML激活

2007-04-24 11:28 by Windie Chai, 3352 阅读, 收藏, 编辑
摘要:通过XAML激活机制,我们可以使Runtime加载一个XAML文件来启动工作流. 阅读全文

《WF编程》系列之12 - 编译工作流:XAML序列化

2007-04-23 16:23 by Windie Chai, 3678 阅读, 收藏, 编辑
摘要:将工作流序列化为XAML 阅读全文

《WF编程》系列之11 - 编译工作流:使用MSBUILD

2007-04-16 15:52 by Windie Chai, 3442 阅读, 收藏, 编辑
摘要:MSBuild是.NET 2.0 Runtime中包含的基于XML的生成引擎.Visual Studio中所有的.csproj和.vbproj项目文件都可以看作是MSBuild文件. Visual Studio 2005生成项目的过程实际上是IDE使用MSBuild托管的线程来执行的.开发人员也可以直接从命令行使用MSBuild并传递参数.Windows Worklow在安装时已经将.xoml扩展名注册给了MSBuild.本节我们将使用MSBuild生成自定义活动和工作流到同一个程序集中,我们还是使用之前创建的XOML文件,然后创建一个MSBuild项目文件. 阅读全文

《WF编程》系列之10 - 编译工作流:使用WorkflowCompiler类

2007-04-11 10:58 by Windie Chai, 3396 阅读, 收藏, 编辑
摘要:我们可以使用WorkflowCompiler类和WorkflowCompilerResults类以编程的方式来编译工作流定义并得到一个程序集. 阅读全文

《WF编程》系列之9 - 编译工作流:使用WFC.EXE

2007-04-09 10:42 by Windie Chai, 4078 阅读, 收藏, 编辑
摘要:Windows Worfklow提供两种工作流编译方式,通过WorkflowCompiler类(位于System.Workflow.ComponentModel.Compiler名称空间)来编译,或者使用一个命令行编译工具(其实还是通过WorkflowCompiler类实现编译的). WF的命令行编译器叫做wfc.exe.用它来编译工作流,我们需要传递一些参数给它.第一个参数是XOML文件的名称,假设我们的XAML叫做pureXAML.xoml.然后使用-out指令来传递编译后程序集的名称.如果有一些自定义活动是在另外的程序集中定义的,我们需要使用-r指令来引用这些程序集. 阅读全文

《WF编程》系列之8 - 工作流编写方式:纯XAML

2007-04-06 09:25 by Windie Chai, 5142 阅读, 收藏, 编辑
摘要:采用纯定义的方式来编写工作流. 阅读全文

《WF编程》系列之7 - 工作流编写方式:对象及其关系

2007-04-04 14:50 by Windie Chai, 3861 阅读, 收藏, 编辑
摘要:工作流最终会变成内存中的一组托管对象.这些对象之所以能够依照我们的构思来执行,是因为我们用一种关系把它们组织到了一起. 阅读全文

《WF编程》系列之6 - 工作流编写方式:纯代码

2007-04-02 15:12 by Windie Chai, 5374 阅读, 收藏, 编辑
摘要:使用纯代码的方式创建工作流是指只使用C#和Visual Basic代码来定义工作流(没有XAML).但这并不是说我们需要手工编写所有的代码.许多Visual Studio的设计器可以为我们生成代码,比如Windows forms designer几年前就可以生成C#和Visual Basic代码了.我们可以将设计器生成的代码和我们自己的代码结合起来生成工作流. 阅读全文

《WF编程》系列之5 - 漫游工作流:第一个工作流

2007-03-31 09:43 by Windie Chai, 6530 阅读, 收藏, 编辑
摘要:让我们来开发一个简单的Bug跟踪工作流吧. 阅读全文

《WF编程》系列之4 - 漫游工作流:Widows Workflow Runtime及其服务

2007-03-30 10:00 by Windie Chai, 6807 阅读, 收藏, 编辑
摘要:在Windows Workflow中,活动可以视作提交给工作流处理器执行的指令或代码,而这个工作流处理器就是WF Runtime.通过WorkflowRuntime提供的扩展性机制-AddService方法可以向Runtime中添加可用的服务.这些服务可以是我们为特定领域编写的自定义服务,也可以是WF中内置的服务. 阅读全文

《WF编程》系列之3 - 漫游工作流:Visual Studio 2005 扩展

2007-03-29 09:40 by Windie Chai, 6813 阅读, 收藏, 编辑
摘要:通过Visual Studio 2005扩展,我们可以轻松的设计工作流. 阅读全文

《WF编程》系列之2 - 漫游工作流:活动与自定义活动

2007-03-28 09:38 by Windie Chai, 7201 阅读, 收藏, 编辑
摘要:活动是Windows Workflow 的重要组成部件,WF内置了一些活动,并且允许我们创建自定义的活动. 阅读全文

《WF编程》系列之1 - Hello,Workflow & 创建工作流解决方案

2007-03-24 17:51 by Windie Chai, 9860 阅读, 收藏, 编辑
摘要:什么是工作流? 工作流解决方案应该是什么样的? 阅读全文

《WF编程》系列之0 - WF笔记开始

2007-03-23 16:35 by Windie Chai, 7929 阅读, 收藏, 编辑
摘要:今天开始认真研读《Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C#》. 阅读全文

利用SharePoint Designer开发可循环工作流

2007-03-21 10:15 by Windie Chai, 8439 阅读, 收藏, 编辑
摘要:介绍 大家都知道SharePoint工作流有两种开发(设计)方式:通过SharePoint Designer和Visual Studio. l 使用Visual Studio,开发人员可以通过编码的方式灵活的开发SharePoint工作流. l 使用SharePoint Designer,网站管理人员可以基于定义和规则设计SharePoint工作流,无需编码. 使用SharePoint Des... 阅读全文

使用工作流标记

2007-02-28 11:12 by Windie Chai, 1069 阅读, 收藏, 编辑
摘要:MSDN原文: http://msdn2.microsoft.com/en-us/library/ms735921.aspx Windows Workflow Foundation 为设计人员和开发人员提供一种创建工作流的途径:通过使用可扩展应用程序标记语言(eXtensible Application Markup Language ,XAML)来创建标记源文件(Markup So... 阅读全文

Visual Studio 2005 Designer for Windows Workflow Foundation 概览

2007-02-27 17:53 by Windie Chai, 1784 阅读, 收藏, 编辑
摘要:MSDN原文: http://msdn2.microsoft.com/en-us/library/ms441543.aspxVisual Studio 2005 Designer for Windows Workflow Foundation 提供的图形界面使我们可以在Visual Studio 开发环境中快速开发工作流. WF Workflow 标记 每个 WF workflow 都可以用下... 阅读全文

SharePoint多级审批工作流开发文档[Sequential版] v1.1

2007-02-26 15:20 by Windie Chai, 10135 阅读, 收藏, 编辑
摘要:研究了一段时间SharePoint工作流之后的一个总结. 基于ECM Starter Kit Beta2 开发. 提供开发过程文档以及代码的下载. 注:本文为初学MOSS工作流时所写,本文所开发的工作流可以有更好的方式. 阅读全文

SharePoint工作流开发点滴(4) - 工作流中的自定义类与内部错误 (update 2008.12.25)

2007-02-07 11:10 by Windie Chai, 1937 阅读, 收藏, 编辑
摘要:在开发SharePoint工作流时有没有遇到过这样的错误: DehydrateInstance: System.Runtime.Serialization.SerializationException: 在分析完成之前就遇到流结尾。 本文将会告诉你如何解决以及防范这种错误。 阅读全文

SharePoint工作流开发点滴(3) - 添加外部工具,方便工作流开发

2007-01-16 15:26 by Windie Chai, 1041 阅读, 收藏, 编辑
摘要:在利用ECM Starter kit Beta2中的模板开发工作流的时候经常会切换到其它窗口,比如要为InfoPath表单模板生成类文件,要安装工作流等等. 可不可以把这些工作都集成到Visual Studio.net 2005 IDE中呢?答案是肯定的,利用VS.net 2005 IDE的外部工具功能,就可以轻松实现. 方法 点击工具菜单下的外部... 阅读全文

SharePoint工作流开发点滴(2) - 开发第一个SharePiont工作流: HelloWorldSequential 的注意事项

2007-01-08 10:29 by Windie Chai, 2828 阅读, 收藏, 编辑
摘要:HelloWorldSequential是一个入门级的SharePoint工作流,基本上照着MSDN的教程一步一步来就可以了,我写这篇文字的主要目的是将其中一些重要的步骤列举出来,这些步骤的错误处理将直接导致工作流失败. 阅读全文

SharePoint工作流开发点滴(1) - 一些概念

2007-01-04 09:15 by Windie Chai, 1740 阅读, 收藏, 编辑
摘要:模板(Template),关联(Association)和实例(Instance) 模板:部署到站点集中的工作流功能(Feature),用来描述该功能所包含的程序集和表单等信息. 关联:将工作流模板与列表(List)或者内容类型(Content Type)联系起来,并向工作流提供初始值或参数.对应的表单叫做Association. 实例:在列表或内容类型项上启... 阅读全文

Visual Studio 2005.net 代码段(Snippet)丢失的解决方案

2006-12-31 08:54 by Windie Chai, 1840 阅读, 收藏, 编辑
摘要:安装了ECM Starter kit之后,试做了一些SharePoint工作流,在编辑Feature.xml和Workflow.xml等固定格式的文件时,却发现我的Visual Studio.net中没有相应的代码段(Snippet). 而ECM Starter kit本来是包含这些代码段(Snippet)的,于是经过一番查找,找到了解决方案. 本文中以恢复ECM Starter kit包含的代码... 阅读全文

访问工作流中Association 和 Initiation 表单的数据

2006-12-22 10:38 by Windie Chai, 916 阅读, 收藏, 编辑
摘要:MSDN原文: http://msdn2.microsoft.com/en-us/library/ms566880.aspx 当工作流实例启动时,将会从用户处收集Association 和 Initiation表单数据并存放到一个SPWorkflowActivationProperties 对象中, 可以通过OnWorkflowActivated 活动的WorkflowProperties 属性来... 阅读全文

工作流的Association 和 Initiation 表单

2006-12-20 16:08 by Windie Chai, 525 阅读, 收藏, 编辑
摘要:MSDN原文: http://msdn2.microsoft.com/en-us/library/ms481192.aspx Association 和 Initiation 表单在工作流启动之前显示给用户.您可以使用这些表单让用户设置工作流的参数和其它信息. Association表单在管理员将工作流关联到列表,文档库或内容类型时显示给管理员.利用Association表单,管理员可以指... 阅读全文

为Office SharePoint Server 2007中的工作流设计InfoPath表单

2006-12-20 11:50 by Windie Chai, 2799 阅读, 收藏, 编辑
摘要:MSDN原文: http://msdn2.microsoft.com/en-us/library/ms548723.aspx 下面列出了为Microsoft Office SharePoint Server 2007工作流设计InfoPath表单的基本步骤: 1.使用InfoPath 2007设计表单. 2.为表单中的控件设置数据连接,使表单可以和SharePoint Server和工作流交换数据... 阅读全文

调试 Windows SharePoint Services Workflow

2006-12-19 19:22 by Windie Chai, 1145 阅读, 收藏, 编辑
摘要:MSDN原文: http://msdn2.microsoft.com/en-us/library/ms455354.aspx当我们部署并激活了工作流功能之后,我们可以通过打开工作流项目,附加进程到w3wp来调试工作流. 提示:为了使调试变得简单,建议您在运行Microsoft Windows SharePoint Services 3.0的服务器上开发工作流模版. 附加到 Windows Shar... 阅读全文