`
ww2
  • 浏览: 400510 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

工作流模式详解之基本流程控制模式的应用与设计(6、7、8、9)

阅读更多

  现在讲述的四种模式,包括:Multi-Choice、Structured Synchronizing Merge、Multi-Merge、Structure Discriminator,一般将其归纳为高级的分支和同步模式(Advanced Branching and Synchronization Patterns)。

1. 关于模式的归类

  何以将这些模式叫"高级"呢?因为从这些模式开始,在技术水平上就把各种工作流产品拉开了距离。因为技术上实现的复杂性,所以许多工作流产品/标准都不一定能直接支持,甚至有些产品无法描述这些流程模式。如果一些研究过早期工作流模式的朋友,可能会发现没有了 Synchronizing Merge 这种模式,因为现在已经被拆分为三个模式:Structured Synchronizing Merge、Acyclic Synchronizing Merge 和 General Synchronizing Merge。

2. 小说人们对工作流的认识

  工作流模式是对实际业务的一种总结,也是一个工作流系统设计的发展历史。可以看到前面的5种基本流程控制模式,是基于最简单的流程图方式,还有计算机并发的处理。在这时候,人们对工作流系统的认识也大都停留在这种以软件技术手段延伸出来的层次上(就是仿照软件技术中处理流程的方式)。而这些模式,正是WfMC组织开始约定的几种分支/合并模式(详细参见WFMC-TC-1011,http://www.wfmc.org/standards/docs/TC-1011_term_glossary_v3.pdf)。但是基本的模式在实际的应用过程中,并不足以表达实际的业务逻辑,这样就使得深入研究工作流模式越来越重要。

  高级流程这四种模式的引入,正好能让我们窥探前辈探索的道路。其基本特征,可以清晰地看到工作流的流程控制两个发展方向:终端用户的参与,和上下文关联。所谓的终端用户参与,即根据业务数据(或者终端用户的选择)来确定流程路径的走向(分支);而上下文关联,就是在若干的前躯时候,由于用户的选择而动态的产生了分支,在某一点上必须根据上文分支来决定其合并方式(合并)。这样很清晰的一个理念和方向便确立起来:对工作流的流程模式研究,不再是以往那样只关心流程的拓扑结构,而是更多的关心对实际业务的归纳总结。(感叹,国内同行的什么时候才能达到这个层次?)

3. 应用

  这部分的模式,如果没有数学工具作为验证前提,建议尽量配对使用。下面列出几种配对的建议:

  • Multi-Choice → Multi-Merge

  • Multi-Choice → Structured Synchronizing Merge

  • Parallel Split → Structured Discriminator

  当然,并没有限制配对的方式,不过配对的时候,需要仔细推敲(还有数学方法可以使用,这个有机会的话另外讲述),避免出现不可控制的情况。其中注意到 Multi-Choice 实际上可以概括 AND、XOR 的分支模式,因此理论上说,做一些额外的处理可以使得 Multi-Choice 换成 AND、XOR 也可以(这里的额外处理,是让 Structured 类的节点获得上文的信息)。

  还有值得注意一点,Multi-Merge 这个模式实际上是Clone了数个不同的流程分支,最后这些产生的分支如何合并,还需要看具体的工作流产品的具体算法决定。如果算法是在图形结构上生成了不同的分支(即使用图形的拓扑结构实现这个模式),那么最终可以使用一个 AND-join 或者 Structure Discriminator 合并。

4. 实例

  这些流程模式本身已经表达了一些较为复杂的现实结构,考虑一个实际的业务:一个企业,一般策划的活动进度管理。首先草拟策划方案,这个方案可能涉及不同部门的参与,具体的部门根据方案内容确定。草拟方案后,将方案交给需要参与的部门负责人审批。一个部门负责人审批方案结束后,便可安排人员并开始执行。可考虑下面的设计:

 

  注意,上图中为什么不能让经理审批不通过后直接返回上一部的草拟方案呢?实际上也可以这样做,只要在草拟方案的业务中判断,如果是属于审批退回来的情况,则后续的路径选择只能是对应退回来的那个步骤,这种设计需要在这个流程实例中保存数个变量来识别退回后的路径选择。不过这种做法需要仔细推敲业务处理的代码。如下图:




  其他的模式,除了Structure Discriminator以外,业务上的例子很多,这里就不一一列举了。Structure Discriminator 这个模式我自己并没有遇到过实际的业务,不过 plutoner 说的业务也很实在,乃真经验之谈也。

5. 总结

  所谓的高级模式,更注重了终端用户的选择权,同时引入了较为复杂的动态路径选择方式。这里我们似乎可以看到前辈研究工作流的点点滴滴。我觉得,这些模式的深入研究,是使得工作流足以独立成一个复杂体系的开端。如果工作流就如普通的流程图一般,那也没有如此红红火火的市场。如果这些模式的发展足以囊括大部分的业务方式,那么工作流肯定是要成为信息化一个最重要的基石。

分享到:
评论

相关推荐

    嵌入式Linux应用程序开发详解

    204 本章小结 207 思考与练习 207 第7章 进程控制开发 208 7.1 Linux下进程概述 208 7.1.1 进程相关基本概念 208 7.1.2 Linux下的进程结构 210 7.1.3 Linux下进程的模式和类型 210 7.1.4 Linux下的进程...

    安防天下智能网络视频监控技术详解与实践part2

    9.4.2 视频分析的工作流 263 9.4.3 视频分析算法模块 264 9.4.4 视频分析过程 267 9.5 视频分析技术难点 269 9.5.1 环境因素 269 9.5.2 视频场景相关因素 270 9.5.3 平台及芯片的限制 270 9.5.4 成像...

    安防天下智能网络视频监控技术详解与实践.part3

    9.4.2 视频分析的工作流 263 9.4.3 视频分析算法模块 264 9.4.4 视频分析过程 267 9.5 视频分析技术难点 269 9.5.1 环境因素 269 9.5.2 视频场景相关因素 270 9.5.3 平台及芯片的限制 270 9.5.4 成像因素 271...

    asp.net知识库

    与DotNet数据对象结合的自定义数据对象设计 (二) 数据集合与DataTable 与DotNet数据对象结合的自定义数据对象设计 (一) 数据对象与DataRow ASP.NET中大结果集的分页[翻译] .net 2.0 访问Oracle --与Sql Server的...

    log4Net详解(共2讲)

    国讯OA工作流管理实现基本功能 1、定义任意形式的工作流程 国讯OA强大的自定义功能可以满足企业对复杂工作流程的定义,包括请假审批流程和工单管理流程。 2、工作流执行 可设定的对工作流的执行包括提交、批准、...

    安防天下智能网络视频监控技术详解与实践part1

    9.4.2 视频分析的工作流 263 9.4.3 视频分析算法模块 264 9.4.4 视频分析过程 267 9.5 视频分析技术难点 269 9.5.1 环境因素 269 9.5.2 视频场景相关因素 270 9.5.3 平台及芯片的限制 270 9.5.4 成像...

    windows驱动开发技术详解-part2

    Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动...

    Windows驱动开发技术详解的光盘-part1

    本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...

    精通SQL 结构化查询语言详解

    《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言...

    Java Web程序设计教程

    程序设计教程.pdf>>人民邮电出版社的教程哦,所以,好书,你懂的!! 第1章web应用开发简介 1 1.1何为web应用 1 1.1.1web的概念及发展 1 1.1.2web应用程序 2 1.2使用java开发web应用 3 1.2.1面向对象的编程语言...

    嵌入式Linux应用程序开发标准教程(第2版全)

    接着系统地讲解了嵌入式Linux的环境搭建,以及嵌入式Linux的I/O与文件系统的开发、进程控制开发、进程间通信开发、网络应用开发、基于中断的开发、设备驱动程序的开发以及嵌入式图形界面的开发等,并且还安排了丰富...

    精通SQL--结构化查询语言详解

    第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    02 Django的ORM基本操作补充之一对多 03 学员管理示例:编辑学生 04 Django的ORM基本操作补充之多对多 05 学员管理示例:为班级分配老师 06 初识Ajax以及简单应用 07 学员管理示例:Ajax删除学生 08 本节作业以及...

    工作报告之基于android开题报告.docx

    本系统采用模块化的程序设计思想,将系统功能设计成为相应的功能模块,其中主要的模块包括: 工作报告之基于android开题报告全文共6页,当前为第1页。 (1)手机终端ui功能模块设计: 工作报告之基于android开题...

    FastUnit开发手册3.6

    第6章 工作流:流程开发和管理 第7章 专题:综合功能或独立功能的讲解 第8章API简介:介绍常用类或接口 第9章 案例分析:结合案例深入了解平台运行机制 第10章 应用定制:介绍针对具体项目时,可能需要作出的调整 第...

    beauty of architecture

    关于业务流程即服务(BPaaS)交付模式 基于云计算开放架构的业务云(Business Cloud)案例 NIST云计算参考架构 基于云计算平台的信息系统参考架构 3.3 软件即服务(SaaS)架构设计 Force.com平台总体架构(元...

    ASP.NET3.5典型模块开发源代码

    28.1.2 工厂设计模式在Pet Shop 4.0中的应用 374 28.2 数据层的数据库访问 375 28.2.1 数据访问接口IDAL 375 28.2.2 数据访问的实现类 377 28.2.3 数据访问工厂类DALFactory的实现 379 28.3 数据层中的...

Global site tag (gtag.js) - Google Analytics