什么是工作流?
工作流是
组同软件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
批处理服务: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
全局代码:
="highlighter-c">
="keyword">voidApplication_Start(="keyword">objectsender,EventArgse)
="alt">
{
="comment">//创建工作流运行时例子
="alt">
.Workflow.Runtime.WorkflowRuntimeworkflowRuntime=
="keyword">.Workflow.Runtime.WorkflowRuntime;
="alt">
="comment">//创建工作流计划服务并在运行时服务中加载
="alt">
.Workflow.Runtime.Hosting.ManualWorkflowSchedulerServicemanualService=
="keyword">.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService;
="alt">
workflowRuntime.AddService(manualService);
="alt">
="comment">//启动工作流运行时
workflowRuntime.StartRuntime;
="alt">
="comment">//存储工作流运行时例子到Application对象这是Asp.net中全局对象
="alt">
Application[="
">"WorkflowRuntime"
]=workflowRuntime;
}
="alt">
段工作Asp.net页中代码:
="alt">
="keyword">protected
="keyword">void
StartRuntime_Click(="keyword">object
sender,EventArgse)
{
="alt">
="comment">//引用工作流运行时对象
WorkflowRuntimeworkflowRuntime=Application[="">"WorkflowRuntime"]="keyword">asWorkflowRuntime;
="alt">
="comment">//从运行时对象中取出计划服务例子
="alt">
ManualWorkflowSchedulerServicemanualScheduler=
workflowRuntime.GetService(="keyword">typeof(ManualWorkflowSchedulerService))
="alt">
="keyword">as
ManualWorkflowSchedulerService;
="alt">
="comment">//通过运行时对象创建
个类型为ASPNetSequentialWorkflow
顺序工作流例子
WorkflowInstanceinstance=workflowRuntime.CreateWorkflow(
="alt">
="keyword">typeof
(ASPNetSequentialWorkflow));
="comment">//启动工作流例子
="alt">
instance.Start;
="comment">//让工作流例子参和计划服务
="alt">
manualScheduler.RunWorkflow(instance.InstanceId);
}
延伸阅读
- 2011-6-14-- workflow,WorkFlow设计篇Step.3—异常处理-WF4.0
- 2011-6-22-- sdlc协议,SDLC (Systems Development Life Cycle) Brief Terminology & Workflow
- 2011-6-22-- sdlc协议,SDLC (Systems Development Life Cycle) Brief Terminology & Workflow
- 2011-6-12-- workflow,WorkFlow入门Step.5—Adding Procedural Elements-For-WF4.0-(后续)
- 2011-6-14-- mdash,WorkFlow设计篇Step.1—传参的用法-订单金额的计算
- 2011-6-14-- mdash,WorkFlow设计篇Step.2—传参的用法-订单金额的处理(续)-WF4.0
- 2011-6-8-- mdash,WorkFlow入门Step.3—Adding Procedural Elements-For-WF4.0
- 2011-2-21-- workflow,在.NET Workflow 3.5中使用多线程提高工作流性能
- 2011-6-20-- mdash,WorkFlow扩展篇Step.2—集合分组下的活动使用[下]-WF4.0
- 2011-6-15-- mdash,WorkFlow设计篇Step.4—异常处理(续)-WF4.0
最新评论