【备注】这篇本来之前就应该写好的,但因为在beta版的时候总是遇到一些问题,我自己都没有做成功,所以就搁笔不写。本周装好了正式版,看了看,这些问题总算是得到解决了。

【备注】这个与工作流开发的系列,大致还有三篇。本篇讲的是通过SharePoint Designer设计可复用的工作流。下一篇将讲解网站工作流,最后还有一篇讲解在VS 2010中设计和开发可用于SharePoint的工作流

在前面几篇中,我针对工作流基本概念,和最佳实践的前三步做了讲解和演示。他们的链接分别如下

  • 工作流开发概述 http://www.cnblogs.com/chenxizhang/archive/2010/05/02/1726105.html
  • 工作流开发最佳实践(一):使用Visio设计工作流概念模型 http://www.cnblogs.com/chenxizhang/archive/2010/05/02/1726154.html
  • 工作流开发最佳实践(二):使用SharePoint Designer实现工作流细节 http://www.cnblogs.com/chenxizhang/archive/2010/05/03/1726281.html
  • 工作流开发最佳实践(三):让工作流支持运行期配置 http://www.cnblogs.com/chenxizhang/archive/2010/05/03/1726391.html

让我们开始吧

是的,我再次用可复用的工作流做标题,之前我确实有一篇文章介绍过这个概念,大家有兴趣可以参考一下:

http://www.cnblogs.com/chenxizhang/archive/2010/04/06/1705021.html

可重用工作流,简单来说,很显然,是相对于“不可重用工作流”的一个概念,呵呵。当然,这只是一个玩笑话,不存在什么“不可重用工作流”,实际上这里指的是“列表工作流”,也就是说,因为“列表工作流”在设计的时候,是需要与某个具体的列表绑定的,所以就造成了它很难重用的事实。

【注意】网站工作流将在下一篇介绍

所以,我们的问题就是: 如何让一个流程(例如一个简单的审批流程)可以更加通用,例如可以绑定到不同的列表上面去?

第一步:创建一个内容类型

为什么要做这一步呢?其实不难理解的,因为既然你想在多个列表之间重用某个流程,那么这些列表肯定得有一定的公共之处吧?这是显而易见的。

当然,你也可以不创建一个新的内容类型,而是为“任务”这种内容类型的所有列表实例去设计可重用的工作流,这个从本质上是一样的,因为“任务”其实就是一个内置的内容类型。从这个意义上说,内容类型是可重用工作流的一个基础。在下面的演示过程中,这一点将得到证明。

好,闲话少说,我们创建了下面这样一个内容类型。这个类型是用来表示报销单的

它有两个字段:标题和金额

第二步:基于这个内容类型创建一个可重用工作流

接下来,我们可以针对这个内容类型创建一个可重用的工作流。作为演示目的,我们的流程逻辑做得简单一些:

  • 如果金额大于一定的数目,则要求经理审批
  • 这个数目是可以配置的,也就是每个列表在具体绑定的时候,可以设置不同的值

【注意】不出我们的意料,在创建可重用工作流的时候,就必须选择一个内容类型

接下来的流程设计过程,我就不一一截图了。我首先定义了几个变量

然后,为了让审批金额可以设置,我定义了一个关联和启动表单参数,并且默认值设置为500

流程设计的结果大致如下

最后,保存并且发布该流程

第三步:创建一个列表使用该内容类型

现在流程做好了,我们要着手准备一个列表来使用该流程。首先,我们需要创建这个列表,需要注意的是,我们需要让该表使用“报销单内容类型”

【注意】请注意,在内容类型这个区域,我们只保留了一个内容类型:“报销单内容类型”

第四步:将工作流附加到这个列表

现在工作流和列表都有了,那么接下来,如何将工作流与这个列表进行关联呢?

点击“关联至列表”按钮,会出现一个下拉列表

也就是说,它自动会检测当前网站中使用了“报销单内容类型”的列表。当前只有一个,就是“报销单”。点击这个列表,会转到IE窗口中

我们将内容类型的下拉框选择为“报销单内容类型”,请注意观察下面的工作流列表的变化

选中“报销单流程”,并且在下面的文本框中输入一个名称。当前页面其他的选项先不做更改

点击“下一步”,此时出现了一个界面,是让我们配置经理审批金额下限的

我这里先不做修改,保留500这个值,并且点击“保存”按钮。这样就实现了工作流与列表的关联了。

我们可以来测试一下这个流程,分别创建两个报销单,一个金额是小于500的,一个是大于500的。

世博会门票因为金额小一些,所以直接无需审批就完成了

而北京出差因为高于了500,所以它需要经理审批

第五步:重复前面两步,再创建一个新列表,并且将工作流绑定到它上面

这一步我就不截图了。大家有兴趣可以试一下,应该是没有什么问题的。这样才称为可重用的工作流嘛

总结:

这一篇,我们讲解了什么是可重用工作流,以及如何重用它。

转载于:https://www.cnblogs.com/chenxizhang/archive/2010/05/14/1735816.html

MOSS 2010:Visual Studio 2010开发体验(32)——工作流开发最佳实践(四):可重用工作流...相关推荐

  1. MOSS 2010:Visual Studio 2010开发体验(19)——ECMAScript Object Model

    这篇文章部分材料摘自下面这个地址,我做了翻译,并且按照我的案例场景做了补充 http://www.codeproject.com/Articles/60348/SharePoint-2010-Clie ...

  2. MOSS 2010:Visual Studio 2010开发体验(26)——工作流开发概述

    这一篇开始,我将介绍在MOSS 2010中进行工作流开发的最佳实践.这一篇主要介绍有关的几个概念 1.什么是工作流 工作流开发是这几年都比较火的一个领域.工作流,顾名思义就是工作的流程,而软件系统所要 ...

  3. MOSS 2010:Visual Studio 2010开发体验(15)——LINQ to SharePoint

    这一篇我们来讨论的是,如何通过LINQ的技术实现对SharePoint 2010列表的读取.我还记得当年.NET Framework 3.5发布,第一次接触到Linq的时候那种不可思议的感觉.现在,S ...

  4. MOSS 2010:Visual Studio 2010开发体验(16)——客户端对象模型

    转载自:http://www.cnblogs.com/chenxizhang/archive/2010/04/26/1721653.html 上一篇,我们讲到了LINQ to SharePoint.它 ...

  5. 关于在Office 2010,Visual Studio 2010环境下开发Office 2007解决方案的问题

    Office解决方案分应用级解决方案(application-level solution 也就是Add-in)和文档级解决方案(document-level solution包括Excel temp ...

  6. 在 Visual Studio Code 中体验 Java Web 开发

    上一篇博文介绍了如何将 Visual Studio Code 作为 Java 的开发环境.我们知道,Java Web 开发是 Java 开发的主战场,那么在 VS Code 中开发 Java Web ...

  7. MOSS 2010:Visual Studio 2010开发体验(14)——列表开发之事件接收器

    通过前面几篇,我们已经完成了内容类型,列表定义,列表实例的开发.本篇继续讲解列表中的一个重要环节--事件接收器开发. 我们的场景是:我希望之前做好的订单列表这个内容类型自动地具有某些事件特征,例如当用 ...

  8. MOSS 2010:Visual Studio 2010开发体验(22)——利用BCS和WCF进行应用程序集成

    上一篇,我们讲到了如何利用BCS服务,直接连接到SQL Server数据库实现一些简单的应用程序集成的场景.看起来很不错,不是吗? 但是,事实上,直接连接到数据库也许有时候是不可能实现的任务,很多系统 ...

  9. Visual Studio 2010 美女与程序员的爱情网剧+《耀和你一起》壁纸包

    微软这次给 Visual Studio 2010 做的广告转向了美女+感情的套路,特意为产品拍了一套爱情短剧视频,讲述美女与程序员的爱情,这给无数本来就是单身宅男的程序员们提供了不少YY的空间. 在爱 ...

  10. ASP.NET 4 和 Visual Studio 2010 Web 开发概述

    声明:本文是ASP.NET 白皮书 ASP.NET 4 and Visual Studio 2010 Web Development Overview 的阅读摘要,只是本人的学习记录,并非完整翻译,仅 ...

最新文章

  1. Java8自定义条件让集合分组
  2. 语义分割--FCN 算法中的一些细节--特征怎么融合
  3. 网络推广——在网络推广的道路上如何成为一家优秀的网站建设公司
  4. c# GDI+简单绘图(二)
  5. android自动填充包名,debug/release 修改包名,取不同包名下的agconnect-services.json 文件...
  6. java实验3 2020.4.6
  7. bitbucket初次使用
  8. [css] 请用css写一个扫码的加载动画图
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的在线问卷答题系统
  10. Java基础学习总结(51)——JAVA分层理解
  11. 2018年Android面试题整理
  12. 如何在Ubuntu Linux上安装JDK
  13. ubuntu18.04 64位安装itunes12
  14. VS(Visual Studio)间接引用
  15. Excel获取目标时间点/日期的方法
  16. UPC 6615 Snuke Festival
  17. 塔防类游戏性能优化分享
  18. Altium Designer 总结
  19. 必背C语言算法 C语言求自然底数e
  20. 关于MediaCode播放H265/hevc的总结

热门文章

  1. 几校联考——day1题解
  2. 在RedHat中安装新字体
  3. mxnet系列 tools 查看params的内容
  4. chrome webstore
  5. Python3.x:定义一个类并且调用
  6. 对Ajax返回的json数据做处理报错
  7. 《30天自制操作系统》03_day_学习笔记
  8. 在WCF数据访问中使用缓存提高Winform字段中文显示速度
  9. POJ 2773 Happy 2006 【数论,容斥原理+二分】
  10. 自己工资自己算,策略设计模式(Strategy)