workflow:微软Workflow Foundation 高阶透视



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



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



什么是微软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
批处理服务:DefaultWorkflowCommitWorkBatchServiceSharedConnectionWorkflowCommitWorkService
持久化服务(将工作流例子存储在硬盘上):SqlWorkflowPresistenceService
跟踪服务:SqlTrackingServiceSqlTrackingQuery

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



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


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

通过WebServiceInputActivity、WebServiceOutputActivity将工作流发布为Web服务
通过InvokeWebServiceActivityWeb服务





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全局代码:

    ="highlighter-c">
  1. ="keyword">voidApplication_Start(="keyword">objectsender,EventArgse)
  2. ="alt">{
  3. ="comment">//创建工作流运行时例子
  4. ="alt">.Workflow.Runtime.WorkflowRuntimeworkflowRuntime=
  5. ="keyword">.Workflow.Runtime.WorkflowRuntime;
  6. ="alt">
  7. ="comment">//创建工作流计划服务并在运行时服务中加载
  8. ="alt">.Workflow.Runtime.Hosting.ManualWorkflowSchedulerServicemanualService=
  9. ="keyword">.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService;
  10. ="alt">workflowRuntime.AddService(manualService);
  11. ="alt">="comment">//启动工作流运行时
  12. workflowRuntime.StartRuntime;
  13. ="alt">
  14. ="comment">//存储工作流运行时例子到Application对象这是Asp.net中全局对象
  15. ="alt">Application[="">"WorkflowRuntime"]=workflowRuntime;
  16. }
  17. ="alt">
  18. 段工作Asp.net页中代码:
  19. ="alt">="keyword">protected="keyword">voidStartRuntime_Click(="keyword">objectsender,EventArgse)
  20. {
  21. ="alt">="comment">//引用工作流运行时对象
  22. WorkflowRuntimeworkflowRuntime=Application[="">"WorkflowRuntime"]="keyword">asWorkflowRuntime;
  23. ="alt">
  24. ="comment">//从运行时对象中取出计划服务例子
  25. ="alt">ManualWorkflowSchedulerServicemanualScheduler=
  26. workflowRuntime.GetService(="keyword">typeof(ManualWorkflowSchedulerService))
  27. ="alt">="keyword">asManualWorkflowSchedulerService;
  28. ="alt">="comment">//通过运行时对象创建个类型为ASPNetSequentialWorkflow顺序工作流例子
  29. WorkflowInstanceinstance=workflowRuntime.CreateWorkflow(
  30. ="alt">="keyword">typeof(ASPNetSequentialWorkflow));
  31. ="comment">//启动工作流例子
  32. ="alt">instance.Start;
  33. ="comment">//让工作流例子参和计划服务
  34. ="alt">manualScheduler.RunWorkflow(instance.InstanceId);
  35. }

Tags:  captarisworkflow windowsworkflow oracleworkflow workflow

延伸阅读

最新评论

发表评论