工作流设计

业务流程管理模块是本平台的重要组成部分,要实现将已经发布的标准中规范化的流程转化为具体计算机中的流程从而实现流程的自动运转,将标准化成果与员工的日常工作紧密结合起来,具有重要意义。

业务流程管理模块主要包括流程建模、工作流执行服务、流程监控等部分。其中流程建模是用来定义一个流程,具体主要包括流程定义、流程的活动定义等;
工作流执行服务用于解释流程过程定义,并控制其运转,工作流执行服务中最重要的就是工作流引擎;流程监控用于用户监控流程的运转情况。业务流程管理模块示
意图如图3-5所示:

图3-5 流程管理示意图

3.2.2.1
流程建模

流程建模用于流程的建立、修改、删除等操作,每一个业务流程通常包含若干个活动,而在流程图中,每个节点则对应一个活动。根据业务需要,我们将节点的类型分为了七类,对于不同类型的节点,我们也应该对其进行不同的设置。

(1)开始节点和结束节点

开始类型节点和结束类型节点均属于自动活动类型,但他们是比较特殊的,一个流程只能有一个开始节点,可以有多个结束节点。

(2) Node类型节点

Node类型节点属于自动活动类型,当实例执行到这里时候,会自动根据配置处理,处理后继续向下运行。

(3) Task类型节点

Task类型节点是一种手工活动类型,非常重要。流程运转到此类型节点的时候,会自动暂停流程的运转并等待参与者做相应的操作(如填写表单),并触发相应操作后才会继续执行。

(4) Decision类型节点

Decision类型节点属于决策节点。例如在一个流程中,如果时间大于某个界限时,需要某种操作。这时,使用Decision类型节点,计算机会自动根据规则判断,并转向对应的流转路由。

Decision节点还需要设置自动跳转规则,用于计算机自动判断流程流向如何跳转。

(5) Fork类型节点

Fork类型节点是分支类型节点,用于流程的分支运转。当流程需要分支执行时,就会用到此类型的节点使流程会顺着其分支同时流转。

(6) Join类型节点

Join类型节点属于汇聚类型节点,用于结束分支流程,使其回到主流程上。Join类型节点与Fork类型节点成对出现,分支节点运行完毕后会进入Join节点,Join节点触发流程回到主流程上继续运行。

(7) SubProcess类型节点

SubProcess类型节点表示子流程类型的节点,用于实现子流程的嵌套运转。当流程运转到SubProcess类型节点时,会激活该节点绑定的子流程,并使其自动开始运转,此时主流程挂起,等到子流程结束后主流程继续执行。

3.2.2.2
工作流执行服务的详细设计

工作流执行服务主要就是指工作流引擎,是为工作流运转执行提供运转服务环境的软件,是工作流执行服务的核心部件。它的主要功能有:

(1)根据流程定义对流程进行实例化,即按照预先建立的流程定义,处理相关数据,生成一个流程实例;

(2)对流程实例运转进行控制,包括流程的启动、停止、挂起和激活等;

(3)活动(任务)的处理,使参与者能够参与具体的任务,例如进行填写申请表、审批等操作;

(4)维护和处理工作流的相关数据,例如流程运转中的控制数据或者业务数据等;

(5)对外提供接口,用于其它调用。

在工作流引擎的设计中,令牌(Token)机制被引入。令牌可以记录流程正在执行的节点,从而随着令牌的传递以此控制流程的运转。当用户开启一个流程的时候,工作流引擎会根据流程定义来新建一个流程实例,并进行数据的处理。

其次工作流引擎会找到所开启的流程的开始节点,并创建一个根令牌,使跟令牌与开始节点关联。接着引擎会根据路由规则推进流程的运转与执行。在流程的运转和执行过程中,工作流引擎会根据节点的类型,来调用不同的算法进行控制。其设计思路如下图3-6所示:

图3-6 工作流引擎设计思路

各种类型的节点根据其配置和性能不同,进行不同的处理,当节点流转到结束类型节点的时候,说明流程已经运转完毕,从而结束一个流程实例的运转。

工作流设计 zt的更多相关文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(42)-工作流设计-表建立

    系列目录 工作流在实际应用中还是比较广泛,网络中存在很多工作流的图形化插件,可以做到拉拽的工作流设计,非常简便,再配合第三方编辑器,可以直接生成表单,我没有刻意的浏览很多工作流的实际设计,我认为工作流 ...

  2. Winform开发框架之简易工作流设计

    一讲到工作流,很多人第一反应就是这个东西很深奥,有时候又觉得离我们较为遥远,确实完善的工作流设计很多方面,而正是由于需要兼顾很多方面,一般通用的工作流都难做到尽善尽美.微软也提供了几个版本的WF框架支 ...

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请 系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分 ...

  4. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充 系列目录 补充一下,有人要表单的代码,这个用代码生成器生成表Flow_Form表 ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支 系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元( ...

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤 系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行 ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单 系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计 系列目录 建立好42节的表之后,每个字段英文表示都是有意义的说明.先建立 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(42)-工作流设计01

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(42)-工作流设计01 工作流在实际应用中还是比较广泛,网络中存在很多工作流的图形化插件,可以做到拉拽的工 ...

随机推荐

  1. Java中的break与continue区别

    break跳出当前循环执行循环下面的程序, 如果break出现在嵌套循环的内层循环, 则break语句只会跳出当前层的循环; 当程序执行到continue时时, 则跳过本次循环程序重新回到循环开始继续 ...

  2. BZOJ 1697: [Usaco2007 Feb]Cow Sorting牛排序

    Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大的牛有可能会捣乱,JOHN想把牛按脾气的大小排序.每一头牛的脾气都是一个 ...

  3. Tiny6410 设备驱动之helloworld

    在自己的工作目录下建立helloworld_driver.c #include <linux/init.h> #include <linux/module.h> //代码遵守的 ...

  4. 想要上市,SaaS 企业应该重点关注什么?(下)

    前言:那些非常期待能在纳斯达克敲钟的 SaaS 服务提供商们,希望能从已经上市的「前辈」身上学到一些东西.对企业的销售主管来说,他们控制着影响整个公司长期收益的多个因素,同时,他们也对潜在投资者和金融 ...

  5. C++ DLL 模板 .

    C++ DLL 模板 1.使用VS2005创建Win32 DLL项目,选择空项目,然后加入CppDll.h和CppDll.cpp文件. 2.修改CppDll.h和CppDll.cpp文件使之成为需要的 ...

  6. Java发送post请求

    package com.baoxiu.test; import java.io.BufferedReader;import java.io.InputStreamReader;import java. ...

  7. 【无聊放个模板系列】BZOJ 3172 (AC自动机)

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  8. eclipse实现JavaWeb应用增量打包

    很多情况下,项目是不允许全量发布的,所以你得把有做修改的文件一个个挑出来,如果有成千上百的文件,你是不是要头大了? 以下方法应该可以让你得到解救!前提是你是用装有svn plugin的eclipse上 ...

  9. laravel5的坑

    以此记录学习laravel的一些问题 问题:laravel转移文件夹到另外一pc或者环境后访问出现500 设置权限为777 问题: 设置路由后页面总是404 not found 解决:需要在apach ...

  10. 安装Ubuntu双系统系列——更换源

    Ubuntu 有一个非常有用的命令 apt-get,它可以帮助你下载软件,还可以安装,下载并安装的命令是 apt-get install. 那Ubuntu默认是从哪里下载软件呢,这可以查看文件/etc ...