热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文参考基于工作流引擎的系统框架设计开发——工作流引擎子系统(论文+系统)免费下载相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文参考基于工作流引擎的系统框架设计开发 ——工作流引擎子系统(论文+系统)免费下载相关的知识,希望对你有一定的参考价值。








































摘要:


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

论文主要讲述了工作流引擎的基本功能及设计方法,介绍工作流引擎的基本原理,具体分析了工作流引擎所包含的内容,详细介绍了相关的信息模型和控制模型。系统采用关系结构的理念来设计工作流引擎,给出了用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


















联系我


获取更多资源


学习更上一层楼     










推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
author-avatar
手机用户2502905381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有