zoukankan      html  css  js  c++  java
  • 微软workflow foundation介绍

    一概述

    WF是在windows平台上开发具有工作流功能的应用的 编程模型,运行环境和工具

    ¡Windows平台上统一的工作流技术
    —平台级的技术
    —适用于绝大部分场景

    ¡对传统工作流技术的扩展
    —包括人工活动和系统活动
    —灵活的流程控制:顺序, 状态机, 基于规则
     
    ¡领导新的工作流方向
     —一致和熟悉的模型,开发者容易接受
    —强大的合作伙伴和解决方案生态系统  

    活动(Activity):工作流由活动组成
    活动运行在宿主(Host)进程中:任意应用或者服务器
    用户自定义活动(Customer Activity Library)
    组件
    基本活动库:平台自带的活动
    运行时引擎:运行工作流,状态管理
    运行时服务:为宿主提供灵活性,管理通讯

    定义工作流:

    可以用代码表达:工作流是一个类

    <?Mapping XmlNamespace="Activities" ClrNamespace="System.Workflow.Activities" Assembly="System.Workflow.Activities" ?>

    <SequentialWorkflow x:Class="MyWorkflow" xmlns="Activities" xmlns:x="Definition">
        …
    </SequentialWorkflow>

    二 活动 的概念

    活动是工作流中的一个步骤
    属性和事件:用户用代码定制
    方法:仅能被运行时引擎调用
    类比表单和控件
    活动 == 控件
    工作流 == 表单
    活动可以分成两类
    基本活动 – 原子动作
    复合活动 – 管理子活动

    Activity 是搭建Workflow的积木
    一个逻辑执行单元,可重用的部件
    基本的Activity是Workflow中的一个步骤
    复合的Activity包含其它的Activity,比如: Sequence
    基本活动库(Base Activity Library)包含了一组Activity的集合
    第三方将提供更多的Activity,比如: “ApproveOrder”
    Activity 是一个类:
    Activity的属性和事件被工作流使用
    Activity的方法被Workflow的运行时调用 (比如: Execute方法)
    Activity可以被编译到Workflow中,也可以以活动库的形式单
     独提供

    生命周期 Activity
    InvokeWorkflow
    Suspend
    Terminate
    事件 Activity
    EventDriven
    Listen
    Delay
    HandleExternalEvent

    复合活动:

    复合活动在所有子活动完成时完成

    复合活动负责管理子活动的执行,和子活动的执行模式(顺序,条件,循环,并行. . .)

    通过 IActivityEventListener 侦听所有子活动的状态改变(close)

    并行执行:

    ParallelActivity允许并行执行其子分支
    ParallelActivity依次执行每一个分支的第一个Activity
    当遇到阻塞时,转去执行其它的分支
    当所有的分支都执行完, ParallelActivity结束

    同步执行:

    ParallelActivity允许并行执行其子分支
    SynchronizationScopeActivity 允许多个并行活动被同步执行
    通过同步句柄来管理同步执行

    自定义活动:

    什么是自定义活动:

    WF为我们提供了一组”内置”活动(Code,While…)

    用户也可以根据创建自己的活动

    新的活动可以被用于工作流中

    用户可以自行规定活动的功能,执行逻辑和主体风格

    自定义活动可以以组件的方式提供给其它人使用

     为什么要自定义活动

    WF的基本活动很有限

    需要更多的活动封装业务逻辑

    减少用户使用的复杂性

    提供更贴近现实的风格

    如何自定义活动

    从Activity(或其子类)继承出一个类来

    复写Execute方法

    制定新活动对外交互的方式(DependencyProperty等)

    为新活动指定风格
    ActivityDesigner
     ActivityValidator

    三工作流形态

    工作流三种形态:
    顺序工作流
    状态机工作流
    规则驱动的活动

    什么是状态机工作流
    工作流本身由一组状态组成。

    存在一个初始状态。

    每个状态都可以接收一组特定事件。

    视事件而定,可以转换到另一个状态。

    状态机工作流可以有最终状态。

    当对最终状态进行转换时,工作流将完成

    什么时候使用状态机工作流?
    影响工作流程的一些重要的选择是否发生在工作流外部(out of workflow)?

    是否由用户进行控制?

    是否发生了“goto” 操作?

    为什么要使用规则驱动的工作流?
    顺序和状态机工作流不能满足复杂的流程需要

    工作流执行中需要更改规则

    复杂的策略

    规则种类:
    代码规则(Code Condition)
    通过一个返回布尔值的方法作为规则
    规则写死在代码中
    规则文件(Rule Condition)
    规则写在.rules的XML文件中
    运行时可以更改
    规则集合(Rule Set)
    一个规则的集合
    每个规则采用If-Then-Else的方式
    可定义优先级

    规则驱动的活动
    采用Code Condition和Rule Condition的Activity
    IfElseBranch
    While
    Replicator
    ConditionedActivityGroup (CAG)
    采用Rule Set的Activity
    PolicyActivity

    四宿主和运行时间
    宿主是WF运行的容器

    宿主提供WF运行的底层服务(线程,安全)

    宿主可以是任意的.NET进程

    什么是WF Runtime
    WF Runtime运行在宿主中

    WF 实例运行在WF Runtime中

    WF Runtime负责WF实例的运行,状态维护,生命周期等

    WF Runtime加载各种服务,完成特定的功能(调度,通讯,持久化等)

    一个WF Runtime中可以运行多个WF实例

    宿主(Host)
    任意.NET进程
    Windows SharePoint Services
    IIS/ASP host
    BizTalk 2006
    Dynamics 未来版本
    Office 2007
    运行时服务
    监控服务
    持久化服务
    其他

  • 相关阅读:
    python之os模块
    python之字符串
    python之爬虫(beautifulsoup)
    python之常见算法
    python之装饰器(类装饰器,函数装饰器)
    python之mock使用,基于unittest
    python之定时器
    python基础语法随记
    redis基础
    移动端页面开发(二)
  • 原文地址:https://www.cnblogs.com/superch0054/p/4010142.html
Copyright © 2011-2022 走看看