zoukankan      html  css  js  c++  java
  • Windows Workflow Foundation 中的多引擎

      以前曾提过双引擎或多引擎的问题,很多朋友问多引擎的目的是什么,在这里,我简单举几个例子

    以下例子只是抛砖引玉,千万不要因为下面的几个例子将思路锁死

    1.为业务扩展灵活性而使用多引擎

    WF的引擎中可以同时运行多个工作流模板的多个实例,如图



     

    这是一种理想的模式,但在实际开发中可能会有如下问题:

    1.不同的工作流对持久化服务,监听服务的要求有同

    2.不同的工作流对流程的控制要求不同,如CallExternalMethodActivityHandleExternalEventActivity与宿主有比效复杂的交互操作。不同的状态机工作流有各自的业务状态操作

    3.系统发布后,需要添加新的工作流模板。

    等许多要求如果者使用上图的单引擎模式,代码将十分混乱,也不便于扩充

     这时,可以使用下面的方式(当然这只是一个例子,具体开发中封装粒度可以随意调整)



     

    2.为特殊的结点使用专用引擎

    为特殊的结点使用独立的引擎的例子很多,在这里我只举一个简单的

    在有些开发中,工作流的某个结点可能要与外部调备进行交互,如开关同一台电闸




     

    NET中支持多线程,WF也可以并行实例,可以我们的电闸X并不支持多线程操作

     我们不希望A流程实例与B流程实例同时对电闸X下手,我们也不希望AB流程的两个实例同时对电闸X下手,

     这时,可以使用双引擎,第一个引擎正常运行所有实例,当遇到[操作电闸X]结点时,将实例交给一个串行引擎(ManualWorkflowSchedulerService服务),由串行引擎逐个完成每个实例的[操作电闸X]结点,当然还可以在这个串行引擎中进行资源调用优化,优先级设置,开关闸状态共享等管理。要文就不讨论了.

    3.物理双引擎

    目的很明确,负载均衡与故障转移,与写SQL Server的思路一样,这里就不重复了,如图:


     

    4.分存式引擎

    这个是我以前的一个设想模式,但在其他工作流平台上不容易实现,不过在WF中确是很爽的。

    技术特点如下:

    1.使用智能客户端模式开发

    2.所有的客户端都安装net 3.0 或使用Vista操作系统

    3.将业务操作的用户UI直接封装到客户户端程序中

    4.多用户参与的工作流,在某个用户的客户端运行完该用户的业务操作后,将实例传行化后以(TCP,WebService,或电子邮件)的方式发给下一个要参与流程的用户.

     以前做过一个类似的,不过客户端的业务逻辑是在代码中推的,严格上说不能算工作流,

     MS要将WF预装在每台电脑上,真不错,可以实现很多以前很难开发的功能了





     

  • 相关阅读:
    git command
    互联网应用架构概览-学习笔记
    机器学习基础概念-阿里大学课程学习笔记
    Python的并行求和例子
    C语言处理CSV数据
    Pattern Evaluation
    Python写的大小写转换小工具
    处理输入为非对角阵的Clustering by fast search and find of density peak代码
    css点击下层穿透上层元素
    浏览器全屏效果
  • 原文地址:https://www.cnblogs.com/foundation/p/538485.html
Copyright © 2011-2022 走看看