1.WF的用武之地:
WF本身并不是一个业务平台,它只是为开发人员提供开发工作流软件的一个平台,也就是说WF不是工作流应用平台,而是一个开发工作流应用的平台。使用WF可以开发 一下类型的软件:
1) 业务流程辅助办公软件
如审批类、办公类、采购类、电子政务、电子商务等需要按照一定业务流程办公的系统中都可以使用工作流。
2) 自动化控制
如在工控系统中,需要按照一定顺序对机器进行操作控制。
3) 软件内部工作的顺序控制
如一个步骤繁琐的设置向导
4) 自动筛选查询类系统等
如招投标系统中的自动开标模块、考试录取系统中的自动投档模块,可以使用工作流管理这些模块的运算方案和运算路径。
2.WF工作流模式
WF提供了两类工作流模式,流模式(Sequential)与状态机模式(State Machine ),可以简单的将状态机模式看成是有交互点与Goto指令的流模式,设计工作流,其实没有什么应该的模式,用状态机模式作主流程,管理业务状态,流模式作子流程,完成具体的业务操作是一个不错的方案。
3.Activity控件
WF为工作流设计提供了一系列的Activity控件,从型式上分为两类:
简单工能类(System.Workflow.ComponentModel.Activity)
容器类(System.Workflow.ComponentModel.CompositeActivity),
Activity <- CompositeActivity
包括以下具体控件:
CodeActivity:可以添加代码,
IfElseActivity:类似于if语句,
SuspendActivity:类似于线程挂起语句,
DelayActivity:类似于线程休眠语句 ,
CallExternalMethodActivity:类似于调用方法语句,
HandleExternalEventActivity:类似于触发事件语句,
WhileActivity:类似于While语句,
terminateActivity: 类似于终止语句,
ThrowActivity:类似于自定义异常语句,
ConditionedActivityGroup:有点像foreach语句,
replicatorActivity:有点像for语句
PolicyActivity:有点像职责链
可以用InvokeWebServiceActivity调用WebService
可以用WebServiceInputActivity ,WebServiceOutputActivity 将工作流发布成WebService
可以用InvokeWorkflowActivity调用子流程
还有一些用于控制流程、控制状态、事务处理、异常处理的控件
4.运行方式
工作流以模板方式存在,以实例的方式运行。
WF的工作流模板可以是一个编译成DLL的NET类库文件,也可以是一个用XML描绘结点关系的字符串,工作流实例是每个用户依据模板定义的轨道实现具体业务的一组状态数据,实例要在引擎中运行,实例可以保存到数据库或磁盘文件中。
工作流提供了一个运行实例的引擎,引擎不是以一个独立服务的方式发布的,而是可以独立线程的方式寄生在任意程中。被寄生的程序叫宿主,宿主与引擎可以通过接口进行交互,控制引擎以及与引擎中的工作流实例通信。
引擎中可以同时运行多个实例,宿主中可以同时运行多个引擎。
5.流程设计器
WF提供了System.Workflow.ComponentModel.Design.WorkflowView控件,该控件可以用图形的方式显示工作流结构,可以自定义流程设计器。