vlambda博客
学习文章列表

【论文参考】基于工作流引擎的系统框架设计开发 ——工作流引擎子系统(论文+系统)免费下载



摘要:
工作流就是一系列相互衔接、自动进行的业务活动或任务。工作流引擎是工作流管理系统的核心,它的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。

论文主要讲述了工作流引擎的基本功能及设计方法,介绍工作流引擎的基本原理,具体分析了工作流引擎所包含的内容,详细介绍了相关的信息模型和控制模型。系统采用关系结构的理念来设计工作流引擎,给出了用MicrosoftVisual Studio 2005和Microsoft SQL Server2000实现系统的方法。论文中利用本工作流引擎构建系统能适应大多数业务流程的扭转,大大缩短常见信息系统的项目开发周期,提高效率。


关键字: 工作流引擎;关键业务;关系



目录:

【论文参考】基于工作流引擎的系统框架设计开发 ——工作流引擎子系统(论文+系统)免费下载

4.1 工作流引擎的详细设计

根据工作流引擎的工作流程,综合上述的各功能模块,设计出的系统模块图如图5所示:

【论文参考】基于工作流引擎的系统框架设计开发 ——工作流引擎子系统(论文+系统)免费下载

用户通过对活动节点进行操作,主要操作动作有以下表1所示:

表1控制节点类型

控制类型名

中文名

说明

DIRECT

无条件转移

不做任何动作,直接激活下一个节点。

AND_BRANCH

与分支控制

流经此处的任务将进行与分支,通过查找TaskStatus表来决定下一动作。

AND_MERGE

与合并控制

流经此处的任务将进行与合并同步,通过查找TaskStatus表来决定下一动作。

OR_BRANCH

或分支控制

流经此处的任务将进行或分支,通过查找TaskStatus表来决定下一动作。

OR_MERGE

或合并控制

流经此处的任务将进行或合并同步,通过查找TaskStatus表来决定下一动作。

VOTE_MERGE

投票合并控制

通过查找TaskStatus表来决定投票结果。

4.1数据库结构的设计

根据前面的模块功能设计,系统所需要的数据库应包括“活动节点表”,“业务过程表”,“控制节点表”,“任务指派规则表”,“任务状态表”,“任务列表”等,各部分各自作为一个表存在。

具体设计如下:

1.活动节点表

用于存放活动节点信息,具体设计如表2所示:

表2 活动节点表

字段名

数据类型

说明

ActID

Int

活动编号

ProcID

Int

业务编号

ActName

Varchar(20)

活动名称

ActType

Varchar(20)

活动类型

TimeAllowed

Datatime

接受时间

PreCtrNodelist

varchar(20)

前面的控制结点表

NextCtrNodelist

varchar(20)

后面的控制结点表

5.1.3 工作流程和部分代码

部分代码如下:

string sql = "select top 1count0=(select count(*) from TaskList where CompletionFlag=0 ),count1=(selectcount(*) from TaskList where CompletionFlag=1 ),count2=(select count(*) fromTaskList where CompletionFlag=2 ),count3=(select count(*) from TaskList whereCompletionFlag=3 ),count8=(select count(*) from TaskList where CompletionFlag=8),count9=(select count(*) from TaskList where CompletionFlag=9),maxcount=(select count(*) from TaskList) from TaskList";

                read =SqlHelper.SqlHelpDao.ExecuteReader(ContClass.Constants.ConnectionString, CommandType.Text,sql);

                while (read.Read())

                {

                    this.Fettle[0] = double.Parse(read[0].ToString());

                    this.Fettle[1] = double.Parse(read[1].ToString());

                    this.Fettle[2] = double.Parse(read[2].ToString());

                    this.Fettle[3] = double.Parse(read[3].ToString());

                    this.Fettle[4]= double.Parse(read[4].ToString());

                    this.Fettle[5] = double.Parse(read[5].ToString());

                    this.Fettle[6] = double.Parse(read[6].ToString());

                    this.label13.Text = "任务流程未通过的有:" + Fettle[0].ToString() + "个";

                    this.label14.Text = "任务流程处理中的有:" + Fettle[1].ToString() + "个";

                    this.label15.Text = "任务流程已通过的有:" + Fettle[2].ToString() + "个";

                    this.label16.Text = "任务流程哑状态的有:" + Fettle[3].ToString() + "个";

                    this.label17.Text = "任务流程睡眠状态有:" + Fettle[4].ToString() + "个";

                    this.label18.Text = "任务流程等待状态有:" + Fettle[5].ToString() + "个";

                    this.label19.Text = "合计任务流程数共有:" + Fettle[6].ToString() + "个"

                    this.lbl0.Height = ((int)(this.lbl0.Height * (Fettle[0] / Fettle[6])) <= 1)? 2 : (int)(this.lbl0.Height* (Fettle[0] / Fettle[6]));

                    this.lbl1.Height = ((int)(this.lbl1.Height * (Fettle[1] / Fettle[6])) <= 1)? 2 : (int)(this.lbl1.Height* (Fettle[1] / Fettle[6]));

                    this.lbl2.Height = ((int)(this.lbl2.Height * (Fettle[2] / Fettle[6])) <= 1)? 2 : (int)(this.lbl2.Height* (Fettle[2] / Fettle[6]));

                    this.lbl3.Height = ((int)(this.lbl3.Height * (Fettle[3] / Fettle[6])) <= 1)? 2 : (int)(this.lbl3.Height* (Fettle[3] / Fettle[6]));

                    this.lbl4.Height = ((int)(this.lbl4.Height * (Fettle[4] / Fettle[6])) <= 1)? 2 : (int)(this.lbl4.Height* (Fettle[4] / Fettle[6]));

                    this.lbl5.Height = ((int)(this.lbl5.Height * (Fettle[5] / Fettle[6])) <= 1)? 2 : (int)(this.lbl5.Height* (Fettle[5] / Fettle[6]));

                }




END

联系我

获取更多资源

学习更上一层楼