【毕设作品】asp.net基于工作流引擎的系统框架设计开发(源代码+论文)免费下载
摘要:
4.1 模块的划分
通过对用户需求调研并分析,确定系统应具备的功能,所需模块包括:状态图管理,任务管理,任务指派,任务提交。
4.2 功能描述
这个系统主要涉及到状态图管理、任务管理、任务指派、任务提交。
状态图管理:包括添加、删除、修改流程。对流程进行控制,包括无条件转移、与分支控制、与合并控制、或分支控制、或合并控制、投票合并控制。查看任务的状态,包括了睡眠状态、就绪状态、执行状态、完成通过状态以及完成未通过状态,不同的任务状态显示为不同的颜色。
任务管理:从数据库中读取出任务列表,其中包括未完成任务和已完成任务,任务列表中包括了任务建立的时间,预计完成任务的时间,完成任务人员,任务完成时间。同时可以添加新任务。
任务指派:包括等待指派的任务,任务指派的基准以及任务指派的人群。其中任务指派的基准包括基于部门进行任务指派、基于团队进行任务指派、基于角色进行任务指派、基于自定义的方式进行任务指派。任务指派的人群包括将任务分配指定的所有人员,将任务分配给指定群体中的工作量最少的人员,将任务队列中最早创建的任务分配给相应群体中最先提出执行任务请求的个体,基于优先数分配。
任务提交:任务结束后提交系统。
4.3 工作流引擎的详细设计
根据工作流引擎的工作流程,综合上述的各功能模块,设计出的系统模块图如图5所示:
图5系统模块图
状态图管理如图6:
图6状态图管理
用户通过对活动节点进行操作,主要操作动作有以下表1所示:
表1控制节点类型
控制类型名 |
中文名 |
说明 |
DIRECT |
无条件转移 |
不做任何动作,直接激活下一个节点。 |
AND_BRANCH |
与分支控制 |
流经此处的任务将进行与分支,通过查找TaskStatus表来决定下一动作。 |
AND_MERGE |
与合并控制 |
流经此处的任务将进行与合并同步,通过查找TaskStatus表来决定下一动作。 |
OR_BRANCH |
或分支控制 |
流经此处的任务将进行或分支,通过查找TaskStatus表来决定下一动作。 |
OR_MERGE |
或合并控制 |
流经此处的任务将进行或合并同步,通过查找TaskStatus表来决定下一动作。 |
VOTE_MERGE |
投票合并控制 |
通过查找TaskStatus表来决定投票结果。 |
上面所定义的6种控制类型的节点,若不能满足业务要求,可以自定义其他的控制节点类型。
一个流程实例产生之时一并产生所有活动节点的初始状态,生成以后则由控制节点来动态修改其状态。任务状态主要有6种:睡眠状态、就绪状态、执行状态、完成通过状态以及完成未通过状态。睡眠状态:流程实例创建时统一设置所有活动节点为该状态,等待唤醒。就绪状态:前趋控制节点将活动唤醒,等待人工处理。执行状态:表示正在进行人工处理,等待处理结果。完成通过状态:表示人工处理结束,移交给控制节点继续下一步处理。完成未通过状态:表示人工处理结束,处理意见为“否决”,同时移交给控制节点继续下一步处理。
任务列表用于记录那些已经创建但尚未完成的任务以及已完成的任务,它们之间用CompletionFlag标记。
任务指派是指依照某种规则将任务分配给具体人员来执行。只有常规交互活动才涉及到任务指派的问题;其他活动要么在前台不具备实际的应用逻辑,要么由工作流引擎自动调用,因此与任务指派无关。任务指派的基准是:基于部门进行任务指派、基于团队进行任务指派、基于角色进行任务指派、基于自定义的方式进行任务指派。任务指派的基准确定以后,再确定执行任务的群体,具体指派到哪些实际人员还取决于任务指派方法。指派方法有四种:ALL:表示任务将分配给由BasedOn指定的群体中的所有人员。LEAST_WORKING_LIST:表示任务将分配给指定群体中的工作量最少的人员,工作量的多少可以通过ToDoTaskList的统计数据得到。FCFA:表示先来先分配, 即将任务队列中最早创建的任务分配给相应群体中最先提出执行任务请求的个体,任务的创建时间由DateCreated指示。PRIORITY:表示基于优先数分配, 只适合于ROLE_BASED任务指派基准。在表UserInRole中有个字段PriorityNo用于指定相应人员的优先级。用户也可以根据具体需要来添加新的任务指派方法。
4.4 数据库结构的设计
根据前面的模块功能设计,系统所需要的数据库应包括“活动节点表”,“业务过程表”,“控制节点表”,“任务指派规则表”,“任务状态表”,“任务列表”等,各部分各自作为一个表存在。
具体设计如下:
1.活动节点表
用于存放活动节点信息,具体设计如表2所示:
表2 活动节点表
字段名 |
数据类型 |
说明 |
ActID |
Int |
活动编号 |
ProcID |
Int |
业务编号 |
ActName |
Varchar(20) |
活动名称 |
ActType |
Varchar(20) |
活动类型 |
TimeAllowed |
Datatime |
接受时间 |
PreCtrNodelist |
varchar(20) |
前面的控制结点表 |
NextCtrNodelist |
varchar(20) |
后面的控制结点表 |
2.业务过程表
用于存放业务过程,具体设计如表3所示:
表3业务过程表
字段名 |
数据类型 |
说明 |
ProcID |
Int |
业务编号 |
ProcName |
varchar(20) |
业务名称 |
ProcDesc |
varchar(20) |
3.控制节点表
用于存放控制节点,具体设计如表4所示:
表4 控制节点表
字段名 |
数据类型 |
说明 |
CtrNodeID |
Int |
控制节点编号 |
ActID |
Int |
活动编号 |
ProcID |
Int |
项目编号 |
CtrNodeName |
varchar(20) |
控制节点名 |
CtrNodeType |
Varchar(20) |
控制节点类型 |
CtrNodeDesc |
varchar(20) |
|
PreActNodelist |
varchar(20) |
前次的活动结点目录 |
NextActNodelist |
varchar(20) |
下次的活动结点目录 |
ExecCtrFunc |
varchar(20) |
实行的控制关系 |
PassedPercentage |
float |
通过的百分率 |
Parameterlist |
varchar(20) |
参数目录 |
4.任务指派规则表
用于存放任务指派规则,具体设计如表5所示:
表5 任务指派规则表
字段名 |
数据类型 |
说明 |
TeamID |
Int |
团队编号 |
DeptID |
Int |
部门编号 |
ActID |
Int |
活动编号 |
BasedON |
varchar(20) |
任务指派的基准 |
Method |
Varchar(20) |
任务指派的群体 |
ExeFuncID |
Int |
可执行的关系编号 |
5.任务状态表
用于存放任务状态,具体设计如表6所示:
表6 任务状态表
字段名 |
数据类型 |
说明 |
SerialNo |
Int |
流水号 |
TaskID |
Int |
任务编号 |
ActID |
Int |
活动编号 |
ProcID |
Int |
业务编号 |
TaskStatus |
varchar(20) |
任务状态 |
EntityID |
Int |
实体编号 |
6. 任务列表
用于存放为完成任务和已完成任务,具体设计如表7所示:
表7 任务列表
字段名 |
数据类型 |
说明 |
SerialNo |
Int |
流水号 |
TaskID |
Int |
任务编号 |
EntityID |
Int |
实体编号 |
UserID |
Int |
用户号 |
TaskStatus |
varchar(20) |
任务状态 |
DateCreated |
Datatime |
创建时间 |
DateAccepted |
Datatime |
开始执行时间 |
DateCompleted |
Datatime |
完成时间 |
CompletionFlag |
Int |
任务的状态 |
数据库关系图如图7所示:
图7数据库关系图
总结: 对整个工作六引擎系统的功能模快的详细设计和所运用的Microsoft SQL Server2000数据库表的详细介绍。
END
联系我
获取更多资源
学习更上一层楼