什么是工作流?
工作流是一组同软件或人交互的活动,以及活动间的联系,可以像一个流程图,也可以像一个状态机。


[图一,左边是流程图,右边是状态机]

什么是微软Workflow Foundation?
微软Workflow Foundation 是一组由基础运行组件和开发工具组成的工作流开发平台,它不是一个工作流产品。

Workflow Foundation 中的工作流模式
Workflow Foundation 中的工作流模式分为顺序工作流和状态机工作流两种。

什么是顺序工作流(Sequential Workflow)?
顺序工作流的执行过程是一个连续的活动序列,它在完成一个活动之后会去执行下一个活动,它允许分支和循环以及接收外部事件,但是只向前执行。

什么是状态机工作流(State Machine Workflow)?
一些业务过程在进行中呈现出不同的状态,在Workflow Foundation中用状态机来表示实际业务过程中的状态。状态机工作流由一组状态组成,每个状态可以接收一组事件,由事件来决定状态之间的转换,这样就实现了工作流的执行过程。

Workflow Foundation 架构


基础活动库/自定义活动库(Base Activity Library/Custom Activity Library) 
运行时引擎(Runtime Engine) 
运行时服务(Runtime Services)

活动库为工作流提供基本的元件,每个活动是相对独立的可执行单元。
运行时引擎为工作流提供运行环境,管理工作流的生命周期。
运行时服务会在运行时引擎中加载,他们为工作流提供辅助的服务。

Workflow Foundation 中的运行时服务包括:
计划服务(管理工作流的工作方式):DefaultWorkflowSchedulerService、ManualWorkflowSchedulerService。
批处理服务:DefaultWorkflowCommitWorkBatchService,SharedConnectionWorkflowCommitWorkService。
持久化服务(将工作流实例存储在硬盘上):SqlWorkflowPresistenceService。
跟踪服务:SqlTrackingService,SqlTrackingQuery。

以上服务均要通过运行时引擎(Workflow Runtime)加载。

Workflow 如何与外部交互?
组成Workflow的每一个Activity都可以接收外部事件,由Workflow接受的接口中的事件可将外部数据发送到工作流,工作流通过方法将数据发送给外部。

Workflow Foundation 如何支持分布式应用?
Workflow Foundation 内建支持基于Web Service 与 WCF 的分布式应用。在基础活动库中提供了通用的Web Service活动。

通过WebServiceInputActivity、WebServiceOutputActivity将工作流发布为Web服务。
通过InvokeWebServiceActivity调用Web服务。

Workflow Foundation 开发基本过程包括哪些?
1、分析业务流程,提取功能点并封装成Activity,可以利用微软的基础Activity库与自定义Activity组合。
基础Activity实现通用操作,自定义Activity实现业务。

2、利用微软提供的Workflow Designer 组织Activity 配置控制逻辑

3、找到Workflow与应用程序的交互点,通过定义接口使应用程序与Workflow建立协作关系,在应用程序中实现这些接口

4、根据业务需要为工作流配置运行时要启用的服务,如持久化、计划服务等。

Workflow Foundation 运行环境/开发环境
运行环境:
Windows Vista
Windows XP
Windows 2003

开发环境:
Visual Studio 2005+Visual Studio 2005 Extensions for .net 3.0( Workflow Foundation )
Visual Studio 2008

见微知著 — 从一小段代码观察Workflow Foundation
一段工作在Asp.net的全局代码:

  1. void Application_Start(object sender, EventArgs e)
  2. {
  3. //创建工作流运行时实例
  4. System.Workflow.Runtime.WorkflowRuntime workflowRuntime =
  5. new System.Workflow.Runtime.WorkflowRuntime();
  6. //创建工作流计划服务并在运行时服务中加载
  7. System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService manualService =
  8. new System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService();
  9. workflowRuntime.AddService(manualService);
  10. //启动工作流运行时
  11. workflowRuntime.StartRuntime();
  12. //存储工作流运行时实例到Application对象 这是Asp.net中的全局对象
  13. Application["WorkflowRuntime"] = workflowRuntime;
  14. }
  15. 一段工作Asp.net页中的代码:
  16. protected void StartRuntime_Click(object sender, EventArgs e)
  17. {
  18. //引用工作流运行时对象
  19. WorkflowRuntime workflowRuntime = Application["WorkflowRuntime"] as WorkflowRuntime;
  20. //从运行时对象中取出计划服务实例
  21. ManualWorkflowSchedulerService manualScheduler =
  22. workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService))
  23. as ManualWorkflowSchedulerService;
  24. //通过运行时对象创建一个类型为ASPNetSequentialWorkflow的顺序工作流实例
  25. WorkflowInstance instance = workflowRuntime.CreateWorkflow(
  26. typeof(ASPNetSequentialWorkflow));
  27. //启动工作流实例
  28. instance.Start();
  29. //让工作流实例参与计划服务
  30. manualScheduler.RunWorkflow(instance.InstanceId);
  31. }

转载于:https://www.cnblogs.com/JiangMingFeng/archive/2009/09/09/1563320.html

微软Workflow Foundation 高阶透视相关推荐

  1. 微软workflow foundation介绍

     一概述 WF是在windows平台上开发具有工作流功能的应用的 编程模型,运行环境和工具 ¡Windows平台上统一的工作流技术 -平台级的技术 -适用于绝大部分场景 ¡对传统工作流技术的扩展 ...

  2. Windows Workflow Foundation 4.0

    转:http://www.cnblogs.com/foundation/category/215023.htm WF4.0 技术文章 WF4.0 流程设计器例子 (提供状态机模板) 摘要: WF4.0 ...

  3. NLP高阶:一文走遍完整自然语言处理流程

    NLP进阶之路上,你是否也遇到过这些疑问? 为什么在这个问题上使用Adam,而不是GD或者Adagrad? 对于特定的业务场景,我应该如何把领域知识考虑进去, 用先验,还是用限制条件? 对于拼车场景, ...

  4. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例(转)

    和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例 今天开始,我打算开始学习WWF,从网上搜索到了部分相关资料,也找到了一些文档和实验.但是,资料以 ...

  5. python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数

    跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...

  6. 技术干货 | iOS 高阶容器详解

    导读:近期,在面试 iOS 工程师的过程中,当我问到候选人小伙伴都了解哪些 iOS 容器类型时,大多数小伙伴能给出的答复就是NSArray.NSDictionary 和 NSSet以及对应的可变类型, ...

  7. NLP高阶实战必读:一文走遍完整自然语言处理流程

    NLP进阶之路上,你是否也遇到过这些疑问? 为什么在这个问题上使用Adam,而不是GD或者Adagrad? 对于特定的业务场景,我应该如何把领域知识考虑进去, 用先验,还是用限制条件? 对于拼车场景, ...

  8. Windows WorkFlow Foundation学习资源

    微软主站 Microsoft Windows Workflow Foundation 入门:开发人员演练 转载于:https://www.cnblogs.com/zwx/archive/2007/01 ...

  9. 利用SOS扩展库进入高阶.NET6程序的调试

    有时候我们可能想深入到程序的运行核心,去观察下内存分配情况以及堆栈内保存的东东,那么作为编程新贵的底层框架.NET6,又为我们提供了什么可用的观测工具呢? 1.SOS 扩展是什么? SOS扩展库是Wi ...

最新文章

  1. u盘迷你linux,U盘上的迷你linux——BabyLinux
  2. 《树莓派Python编程指南》——2.3 小结
  3. v$open_cursor与session_cached_cursor
  4. 第五周项目一-三角形类雏形(2)
  5. Java并行程序基础(十二)
  6. 南外计算机课,南外小升初,怎么考?
  7. bind函数怎么用JAVA_c++bind函数的用法
  8. MariaDB(MySQL)数据库的介绍及使用示例
  9. 教你如何利用EXCEL制作动态仪表盘
  10. html设置table border,用css来设置table的border
  11. BFPTR算法详解+实现+复杂度证明
  12. 解决Too many open files问题
  13. 有多大的大脑互联网正在开发社交网络
  14. Pandas系列(十三)分层索引MultiIndex
  15. 没有你不会的CAD?CAD知识整理上集
  16. VScode正则表达式
  17. camscanner(扫描全能王)功能解析与复现
  18. 银保监机构保险许可证数据(2007-2022年)
  19. 又有2名博士入选华为“天才少年”!学霸日常科研计划表曝光
  20. Java破解9X9数独小游戏

热门文章

  1. 计算机教学辅助在教学中的应用研究,云计算辅助教学在高职计算机教学中的应用研究.doc...
  2. 多线程可以使用计算机多核那,【多线程逻辑面试题】面试问题:异步操作的优缺… - 看准网...
  3. 信息系统项目管理师考前冲刺第二天:项目整体管理
  4. 产品分析之需求分析的六原则
  5. 50本精品前端开发书籍免费下载
  6. SSM中通过okhttp3向接口发送xml格式的请求参数
  7. Java的poi的excel导入怎么验证整型格式的单元格
  8. java强引用、软引用、弱引用、虚引用-Java的引用类型总共有四种,你都知道吗
  9. 什么是死锁?死锁如何解决
  10. Flutter 找不到 android sdk(图文详解)