资源描述
基于工作流系统的表单研究
摘要 : 描述了基于工作流系统中的表单定义以及处理的规则。基于这些规则,用户可以自由定制应用在Web 上的基于HTML的表单,并灵活地控制表单的显示、数据项之间的运算以及工作流的处理逻辑。通过不同的规则组合,可以实现一系列复杂的功能,完全能够满足多分支、多路径的工作流系统对表单定义处理灵活性的要求。
关键词: 工作流;表单;规则
Research Of Form Based On Workflow System
Abstract: In this study, this paper descibes a set of rules which are designed for form definition and process in based workflow system..Based on these rules,user can not only define HTML-based forms freely but also control their display,operation,and process logic flexibly.By combining various rules,user can realize a series of complicated functions, which can fully meet the requirement of form definition and process in multi-branch workflow system..
Key word: workflow;form;rule
0 引 言
工作流是一类能够完全或者部分自动执行的业务过程,它根据一系列预定义的规则来传递文档、信息或任务,并使得此过程在不同的执行者之间自动传递与执行。很多现实生活中的操作,例如公文处理、购物消费等过程,都具有典型的工作流特征,可以使用工作流系统加以实现。在基于工作流系统中,如何灵活实现表单的定义和处理,是直接关系到系统性能的重要因素。目前这方面的研究文献中,有些仅仅给出了表单信息模型的定义,而没有相应的表单处理规则;有些虽然给出了表单处理规则,但这些规则过于简单和抽象,难以满足实际工作流系统的需要。为了解决上述的问题,在本文中提出了一种新的表单定义与处理规则,并对规则的应用做出讨论。
1 表单的定义
表单中包含了用户在各个节点需要察看和填写的内容。在实际的应用中,由于内容的不同,用户可能使用的表单是多种多样的。有些工作流产品会预先定义好一组表单模版,然后限定用户在这些模版中进行选择。这种做法虽然容易实现,但缺乏灵活性,难以满足用户需求的变更。另一种更为灵活的方式,就是允许用户按照需求自己定义表单,这种方式虽然在实现上较为复杂,但能够满足绝大部分的用户需求。
在基于Web的工作流系统中,可以将表单视为一张HTML页面;用户对工作流的处理过程,就是该页面在多个用户之间传递,填充数据的过程。基于这一处理方式,可以将表单视为多个表单项的组合,每一个表单项都是用户需要填写的内容。通过一系列的要素,可以对表单项进行定义。
2 表单在工作流中的应用
当用户定义完表单后,就可以在工作流中使用这些表单了。为了简化起见,此处讨论每个工作流中只允许使用一张表单的情况。在这种情况下,用户只需要为一个新定义的流程指定一张表单即可,而不是为每一个节点都指定相应的表单。可以证明,在不同节点使用多张表单的工作流,是可以转换成为在所有节点都使用同一表单的工作流的。
假定某一工作流中包含了S个节点(N1,N2,...,Ns),其中节点Ni所使用的表单Fi中共含有Ti个表单项(Mi1,Mi2,...MiTi),则我们可以重新定义一张表单F’,其中包含的表单项为Mij,其中i=1...S,j=1...Ti。
在每个节点均使用表单F',并且定义规则如下:
当且仅当在节点Ni,表单项(Mi1,Mi2,...,M iTi)是可用的。
在此新规则下的工作流与原有的工作流等价。
2.1 表单的运算规则
根据不同的需求,可以对上述的规则进行进一步扩展,使之不仅仅控制表单项的显示。例如,通过引进一系列的运算规则,可以实现表单项之间的运算:
1)四则运算:可以实现数值型表单项之间的加减乘除等运算。
2)字符串函数:实现文本、字符类表单项的常见字符串操作,例如合并、取子串等等。
3)求和运算:对于同一个表单项的多个副本,求这些副本中的同一个表单项内容之和。
4)均值运算:对于同一个表单项的多个副本,求这些副本中的同一个表单项内容的平均值。
5)极值运算:对于同一个表单项的多个副本,可以实现数值、文本、日期等表单项在所有副本中取最大值、最小值的处理。为了进一步的需要,极值运算不仅仅返回表单项的值,还可以返回拥有该极值的副本的ID。
6)取副本:对于同一个表单项的多个副本,可以取出其中的某一个副本进行操作。
7)删除副本:删除多个副本中的一个。
8)赋值$运算规则的结果,可以赋予某一个表单项。上述只是一些简单的运算规则,可以根据需求的不同来决定引入哪些规则。
2.2 表单的逻辑规则
如果需要,也可以在运算规则之上再定义逻辑规则。执行分支的控制或更复杂的逻辑:
1)条件规则:根据表单项的内容,来判定某一条件是否成立。根据表单项内容类型的不同,可以采用的条件规则也各不相同。例如对于数值类型,可以定义=、≠、<、>、≤、≥等条件;对于字符串类型,可以定义=、≠、包含、不包含、以...开头、以...结尾等条件。
2)AND规则:定义两个条件之间的关联为与关系。
3)OR规则:定义两个条件之间的关联为或关系。
4)NOT规则:定义对某个条件的结果取反。
5)IF-THEN-ELSE 规则:定义判断条件,如果条件满足则将工作流导向不同的分支。
6)SWTICH-CASE规则:定义判断条件,如果条件满足则将工作流导向不同的分支。
7)输出控制规则:可以使用此规则来控制输出的内容。
8)输入控制规则:此规则控制输入的多个表单副本、当满足一定条件后开启下一步的操作。
对于较为简单的、单线的工作流系统,上述的逻辑规则并不必要。但是对于复杂的、多分支的工作流系统来说,逻辑规则的存在是必不可少的。只有通过这些规则,才能够对表单在不同分支所产生的多个副本进行控制和管理。
2.3各种规则的应用
根据上面所描述的显示规则、运算规则和逻辑规则,可以将工作流中的节点划分为以下三种节点:
1)用户节点:此类节点用于对用户的显示与交互。显示规则与部分逻辑规则在此节点发挥作用,控制用户所见的表单。用户节点的输入和输出都是唯一的。
2)逻辑节点:负责逻辑的控制,为工作流做出判断,传递相应的副本到工作流所流向的节点。逻辑规则在此节点发挥作用。 逻辑节点可以具有多个输入和多个输出。
3)运算节点:负责表单内容的运算。运算节点可以接受多个表单副本,根据这些副本的内容来生成新的、要输出的副本。
这类节点主要使用运算规则,可以拥有多个输入和多个输出。
使用上述的三种节点,可以非常灵活地定义各种复杂的工作流过程。在一些工作流系统中,会设置专门的投票节点来处理从多个节点汇总而来的表单副本。例如当多于半数的表单副本选择某一选项时,则流向某一节点。在我们的定义中,不需要使用专门的投票节点,只要使用一个运算节点与一个逻辑节点即可实现此功能(图中代表用户节点,代表运算节点,代表逻辑节点,下同):
如图2所示,在表单中可以将投票所使用的表单项定义为单选项或者下拉菜单,例如"0:反对" "1:赞成"。各个用户节点的表单副本提交到运算节点后,执行如下规则:
图2 例一: 实现投票功能
1)对投票表单项求和。2)将求和的值赋予输出表单中得某一表单项。此表单项可以是一个用户可见的表单项,也可以是一个专为存储参数而使用,在任何节点都不可见的表单项。
3)为输出表单的其他项赋值。4)提交表单。
在逻辑节点,就可以根据运算节点所得到的和(按照上面的定义,这个和其实就是赞成者的票数)进行判断,以决定下一步的走向:
IF 赞成票数>=2 THEN GOTO U4
ELSE GOTO U5
END IF
上面给出的是如何实现投票功能的例子。下面我们给出另一个例子,描述使用上述节点如何实现竞标功能。竞标功能,就是在多个表单中,根据某表单项的值,来选择让哪一个表单流向下一节点。与上面的例子类似,我们也可以使用一个运算节点来实现这一功能。
图3 例二:实现竞标功能
在运算节点C,各个用户节点的表单副本提交到运算节点后,执行如下规则:1)取指定表单项的最大,最小值,返回该值所在的副本ID。2)根据ID取出此副本。3)将此副本赋予输出副本。4)提交表单。
将多个逻辑节点与运算节点结合使用,可以实现更为复杂,功能更为强大的工作流过程,以应对各种各样的环境。
2.4 工作流系统中表单的处理
在工作流系统中,需要一系列的模块来为上述的表单和规则服务,使之能够有效地运转。与上面所描述的表单与规则的处理相关的系统模块如图4所示。
表单定义:负责上述段落中所描述的表单的定义。
流程定义:负责流程的定义和规则的定义。
表单生成器:负责表单的自动生成。
逻辑规则解释器:在逻辑节点,由逻辑规则解释器根据当前节点的逻辑条件进行处理。
图4 系统框架图
运算规则解释器:在运算节点,由运算解释模块根据当前的运算规则进行处理,得出相应的结果。
启动流程:负责工作流的启动。当工作流开始运行时,系统根据工作流所使用的表单建立表单的实例。在工作流的运行过程中,根据表单的定义以及工作流中对表单在当前节点的描述,为用户动态生成表单。用户的输入内容在通过有效性验证后存储到数据库中,由工作流引擎将其提交到工作流中的下一个节点。
表单的实例是在某一用户启动一个工作流时建立的。数据库中除了要记录当前工作流的信息以外,还要根据用户的信息记录实例的创建人、创建时间等。
副本传递:随着工作流的逐步执行,在每一步都可以为当前的实例建立副本,保存当前节点的用户输入。在单线的工作流系统中,可以使用单一的实例保存整个过程中表单的值,但是在多分支的工作流系统里,必须使用单独的副本来为每一个节点保存所产生的值。副本的总数量是由工作流图中的节点间路径总数所决定的,同时存在的最大副本数量是由最大分支数所决定的。在这种情况下,两个节点之间的数据传递可以通过传递表单副本的ID来实现。
数据存储与管理:用户在使用表单时,会在各个表单项中输入具体的数据。这些输入数据都必须被保存下来,以供下一个节点的用户使用。在数据库中保存表单项的输入。
结束流程:当某一个流程执行完毕后,按照预定义的规则结束该流程,清理流程中生成的数据,关闭相应的实例与副本、并记录相应的日志。
3 结束语
本文通过所描述的逻辑规则以及运算规则,我们可以以一种非常灵活的方式对工作流进行描述和定义。在这种方式下,用户可以定义较为复杂的工作规则,很多日常的工作处理流程都可以在此规则下实现,在很大程度上支持了办公自动化系统的实现。上述的工作已经在实际的项目中得到了部分的实现。本文中所描述的规则可以满足目前对工作流应用的通常需求,也可以在本文的基础上进一步改进,以实现更广泛实际应用的要求。
本文作者创新点: 通过所描述的逻辑规则以及运算规则,我们可以以一种非常灵活的方式对工作流进行描述和定义。在这种方式下,用户可以定义较为复杂的工作规则,很多日常的工作处理流程都可以在此规则下实现,在很大程度上支持了办公自动化系统的实现。
参考文献:
【1】 李伟,李青. 基于J2EE的工作流管理系统框架研究与实现 微计算机信息,2004
【2】范玉顺. 工作流管理技术基础———实现企业业务过程重组、过程管理与过程自动化的核心技术[M] . 北京:清华大学出版社,施普林格出版社,2001.
【3】飞思科技产品研发中心. JSP 应用开发详解[M] . 北京:电子工业出版社,2002.
【4】阎宏. Java 与模式[M] . 北京:电子工业出版社,2002
【5】陈建伟,唐平. 基于Java 规则引擎的足球机器人系统决策研究[J ] . 广东:广东工业大学学报,2003 ,
【6】陶望龙等.Web环境下基于表单的工作流管理系统研究[J] 计算机应用研究,2003;
Biography:
Ying Wu-Feng,born in 1979,male, the HAN nationality, Postgraduate in College of Information Engineering of NanChang University,Major in Computer software engineering .
WU You-Xin,born in 1963,male, the HAN nationality, Postgraduate in College of Information Engineering of NanChang University,Major in Computer software engineering and e- government affair.
展开阅读全文