基于共享模型的工作流表单系统设计


2008 年 4 月 第 34 卷 第 4 期 北 京 航 空 航 天 大 学 学 报 JournalofBeijingUniversityofAeronauticsandAstronautics April 2008 Vol.34 No.4 收稿日期:2007-04-11 作者简介:唐文忠(1968-),男,河北涿鹿人,研究员,tangwenzhong@buaa.edu.cn. 基于共享模型的工作流表单系统设计 唐文忠 莫伟栋 (北京航空航天大学 计算机学院,北京 100083) 摘 要:表单是应用系统中信息传递的主要载体 . 分别分析了表单系统和工作流系 统的运行过程,分析了传统表单工作流系统中表单与工作流的结合方式,研究了基于建模的方 式对表单模型和工作流模型进行定义,并在建模过程中对二者进行结合,同时采用分域的方式 对工作流表单进行划分并在同一流程模型中共享同一表单,并提出了一种基于共享模型的工 作流表单系统的开发方法,该方法采用表单引擎和工作流引擎技术,分离表单数据和工作流数 据的处理,按表单模型和流程模型的结合点定义使工作流引擎处理表单数据,对该方法的过程 和特点也进行了详细的介绍 .关 键 词:模型;工作流;表单;表单域 中图分类号:TP315文献标识码:A 文 章 编 号:1001-5965(2008)04-0391-05 Designoftheworkflowformsystembasedonsharedmodel Tang Wenzhong MoWeidong (SchoolofComputerScienceandTechnology,BeijingUniversityofAeronauticsandAstronautics,Beijing100083,China) Abstract:Formistheinformationcarrierintheapplicationsystem.Theprocessofformsystem, workflowsystemandthecouplingpatternoftheworkflowengineandforminthetraditionalwork- flowformsystem wereanalyzed.Thedefinitionoftheform modelandworkflow modelwasdeeply studiedbasedonthe modeling method,andthey werecombinedintheprocessofmodeling.The mechanismofdividingtheworkflowformbyfieldsandsharingthesameforminthesameworkflow modelwasexploitedatthesametime,andalsoadevelopingmethodofworkflowformsystembased onsharedmodelwaspresented.Thismethodadoptsformengineandworkflowenginetechnologyto separateformdataandprocessofworkflowdataandmakeworkflowenginedealwithformdataac- cordingtothecombinationofform modelandprocessmodel.Thedetailedintroductionoftheprocess andcharacteristicsofthemethodwasalsogiven. Keywords:model;workflow;form;formfields 表单是工作流系统中传递信息的载体 . 传统 的基于 Web 的工作流系统中,表单只是作为客户 端的显示界面(UI,UserInterface),而其本身不 携带任何数据信息[1] ,从而使得表单信息的处理 和工作流引擎捆绑在一起,导致工作流系统庞大 而且复杂 . 为解决此问题,使表单既可以服务于基 础应用,也可以服务于流程应用,本文首先分析表 单系统中表单处理的原理和工作流系统中流程流 转的控制过程;然后结合这两者分析研究如何在 工作流系统中使用已定义好的表单,以及如何处 理表单中的数据并且根据处理结果来调度工作流 流程的流转;最后提出一种使用可扩展标记语言 (XML,ExtensiveMarkupLanguage)技术进行表 单描述,同时将表单按域进行划分以使其可在同 一工作流流程模型中共享使用,且采用表单引擎 技术使表单信息处理和工作流引擎可以以松耦合 方式结合的基于 共享模型的工作流表单系统框 架 . 1 表单系统框架 表单 系 统 借 鉴 软 件 开 发 架 构 (MDA,Soft- wareDevelopmentArchitecture)设计思想,采用 分层建模的方法进行设计与开发,分为数据层建 模、业务层建模以及表现层建模等 3 个层次[2] . 在 实现思想上,区别于传统的基于代码生成的方式, 表单系统采用基于描述的方法提高系统的可维护 性、可扩展性以及灵活性[3] . 在体系结构选择上, 表单系统将系统中的各个支撑功能按模块进行划 分,采用 WebService 及 MBean 等技术将支撑功 能发布成一个个的服务实现系统的松耦合部署, 其中 MBean 用 来 存 放 并 管 理 表 单 模 型,Web Service 用来提高系统的可维护性及减小单个系 统的负载 . 在模块划分上,表单系统分为 2 大模 块:表单定制模块和表单引擎模块,其中介为模型 定义 XML 和 JSP 网页代码以及数据库 schema.其中 JSP 网页,即 UI 由表单生成器生成,可以根 据需要选择不同的样式及布局 .定义1 表单F={fk|k=1,2,…,M},由一 系列表单域组成,每个表单域由 1 个或多个表单 元素组成,即f={en|n=1,2,…,M},e表示表 单中的元素,如文本框、文件框、复选框等[1]. 表单定制模块采用 XML 语言进行表单模型 的描述,如前面所述,区别于传统的表单系统,该 系统采用基于描述的方法来生成,只生成表单界 面,即 JSP 网页代码,而不生成业务 Java 代码,以 增强系统的可维护性,同时为了增强系统的可扩 展性和灵活性,在表单模型的定义中采用接口的 方式供软件开发人员对特殊需求进行特殊实现: 1)通过 数 据 层 建 模 生 成 数 据 库 schema 定 义,屏蔽底层数据库操作,实现了数据库无关,并 生成数据层模型的定义信息; 2)通过业务层的建模定义表单系统所需完 成的业务功能,包括表单对象中所需要的业务规 则校验、自定义的业务功能处理扩展、业务数据的 生成方式、业务数据的引用对象、业务数据的访问 控制定义、业务数据的审计点定义等; 3)通过表现层建模定义表单的展现形式,如 对应数据模型中的数据元素在表单上对应的表单 元素展现形式(文本框等,是否可写等)、表单元素 的整体布局、表单样式单定义等; 4)通过界面生成工具解析表现层定义的模 型并最终生成 JSP 网页代码. 表单引擎模块捕获客户端提交的操作,调用 相关支撑服务进行处理,包括获取表单实体信息 和提交表单实体信息,从而完成一次用户的交互, 这 2 个过程均由表单引擎完成,同时完成表单的 提交后,如果表单是为工作流服务的,则表单引擎 将处理结果传递给工作流引擎,完成一个任务的 提交流程.表单引擎包括表单模型解析、表单模 型-表单实体的映射、表单实体数据的处理(包括 表单实体数据校验、表单实体数据的引用数据的 生成、表单实体数据的 XMLData2SQLMap 持久 化、表单实体数据的访问控制、表单实体数据的操 作记录等)、表单流转控制(无流程的表单流转和 带流程的表单流转)和表单相关服务的调用.为实 现系 统 的 松 耦 合 结 构,上 述 各 个 功 能 以 Web Service 的形式发布,表单引擎负责调度这些服务 来驱动表单系统的流转[4]. 2 工作流概述 工作流系统是以规格化的流程描述作为输入 的软件组件,它维护流程的运行状态,并在人和应 用之间分 派 活 动[5].工 作 流 的 3 个 要 素 是 路 由 (route)、规则(rule)和任务(role).路由是定义对 象传递时所通过的路径,规则是定义信息如何路 由和路由给谁,任务是定义工作流在某一状态所 有者的具体操作.其基本概念包括流程定义、流程 实例、状态(state,或者说等待状态)、动作及流程 上下文变量(或简称变量)等[5].本文所涉及的领 域主要是组织干部管理领域,下面以组织干部领 域的任免流程来分别介绍这些概念. 流程定义是一个业务流程或过程的规格化描 述,包括该流程需要多少任务节点,每个节点需要 进行什么动作处理等,如任免审批程序的整个流 程的定义;流程实例是流程定义的一个运行实体, 如某个待任免的领导的被审批过程;状态代表一 种对外部参与者的依赖,如审批流程某个审批节 点必须等到前面的审批通过了之后将该领导的状 态置为继续审批时才能进入下一个审批环节;动 作是在流程运行过程中,工作流系统为响应指定 事件运行的一段程序逻辑,当流程运行过程中指 定的事件发生时,工作流系统启动并执行这些动 作,如初审环节需要进行初审的人员填写审核意 见,并表态是否通过,该审批意见将直接影响下一 步审批;流程上下文变量,是与流程实例相关的变 量,如任免审批流程中待审批人员的系统编号,通 常在流程定义中声明这些变量,然后在流程实例 生成时,这些流程变量被实例化. 工作流系统开发步骤分为工作流过程建模、 293 北 京 航 空 航 天 大 学 学 报 2008 年 工作流过程实例化和工作流运行 3 个阶段[5].概 括来说,工作流系统可以分流程模型定义以及流 程解析执行 2 部分实现.在定义阶段,工作流过程 工程师通过工作流建模工具定义整个工作流运行 的各个参数.在解析执行阶段,工作流引擎捕获人 机交互结果,解析流程定义模型,并根据流程模型 处理捕获到的数据,最后根据处理结果和流程定 义中的路由信息使流程继续流转到下一个定义的 流程节点,并最终完成结束流程.其中表单数据的 处理可以由表单引擎处理,从而使系统结构清晰. 3 基于共享模型的工作流表单系统 工作流流程与表单的联系点在于表单处理数 据的方式及由流程根据表单处理结果而带来的表 单的流转.表单引擎捕获表单客户端发出的数据 请求,解析表单定义处理表单数据;工作流引擎根 据表单处理结果,分别将表单进行流转,执行流程 的下一步.其中表单的数据包括表单所涉及的基 本业务数据(如待审批人员的信息)以及工作流所 涉及的控制数据(如需填写的审批意见).这些数 据需要在流程定义中进行定义.流程的处理者、流 程的处理动作、流程的流转情况、流程的上下文变 量等均需要在流程定义中进行定义,这些也是定 义流程的基本要素,同时在表单定义中也需要对 这些信息进行记录,以使表单引擎在处理完表单 请求后能够将处理结果反馈给工作流引擎. 因此对定义 1 作如下修改: 定义2 表单F={fb,fk|k=1,2,…,M}, fb 为基 础 表 单 域 (业 务 相 关 处 理,而 独 立 于 流 程),fb={en|n=1,2,…,M},e表示表单中的基 本元素;fk 为一个特殊的表单域,fk={fb,fw}, 其包括一个基础表单域和一个工作流流程节点特 定信息定 义,fb 的 信 息 为 用 户 填 写 的 审 批 意 见 等,fw={wid,wc,fn,fi,fo},为与流程交互的 数据定义,wid 表示流程标识定义信息,wc 表示流 程实例上下文变量信息,fn 表示fw 所对应的流 程节点定义信息,fi 表示该节点的输入信息,fo 表示该节点的输出信息;fk 中k=1,2,…,M 表 示一个表单中包含多 个流程节点所对应的表单 域[6]. 基于定义 2,本文给出一种表单的共享模型, 即在整个流程过程中 共享使用一个表单模型定 义.传统意义上的共享模型指在流程流转过程中 的信息处理上,采用共享模型使流程中每个任务 节点中用户的处理信息共享服务器中的同一信息 副本,而传递模型则将处理信息存成多个信息副 本.共享模型有利于信息的共享和管理,减少了信 息的冗余,但在信息的安全性方面管理相对复杂; 而传递模型则利用大量的信息副本减少了这方面 的复杂性[7].本文的表单模型采用共享方式,通过 使用表单域的方式在同一个流程中共享同一个表 单,从而减少表单模型的定义,方便表单模型的维 护;同时可以使业务建模人员仅在一个表单模型 定义中看到业务流程的所有信息,从而更有利于 其了解业务流程定义所涉及的表单的所有信息. 表 1 和表 2 分别列出流程定义中涉及的表单 信息及工作流自身所需信息. 表1 工作流系统涉及的表单信息 定 义 说 明 表单标识 信息 用以选择在工作流流程的某个节点提供显示信 息用的表单,以帮助流程流转,如待审批人 的 人 员信息,审批过程中审批人可以根据该信息进行 审批. 表单分域 信息 表单按域进行划分,每个域对应流程中的一个或 多个流程节点,一个流程节点对应一个或多个表 单域,即一个表单域可以在多个流程节点中显示 或编辑,多个流程节点也可以共享一个表 单 域; 同一个流程定义共享同一个表单模型定义,各个 节点间根 据 表 单 中 域 的 划 分 分 别 进 行 控 制.因 此,分域信息也是一种表单的控制信息. 表单处理 结果 表单引擎对表单处理后反馈给工作流引擎的数 据定义来自表单模型的定义,工作流系统根据该 处理结果进行流程路由的选择,如根据填写的人 员信息保存成功与否进行流程的选择,即表单引 擎的输出/工作流引擎的输入.该处 理 结 果 控 制 了引擎的流转,因此,也是一种表单控制信息. 表2 工作流系统自身信息[5] 定 义 说 明 流程实例 上下文 变量 从表单模型的数据层定义中选取数据项,如人员 信息中的人员编号,工作流流程实例根据该编号 在实例的各个流程节点间传递,即工作流引擎的 输出/表单引擎的输入. 流程节点 信息 定义流程的具体说明信息,一个流程节点可以对 应上述一个或多个表单域,同时定义该节点的输 入输出. 流程动作 定义 定义每个流程节点的处理动作,可以细分为 2 部 分:① 与表 单 处 理 结 合,获 取 表 单 的 处 理 结 果; ② 定义流程特有的动作,如审批意 见,工 作 流 系 统根据审批结果提交流程到相应的下一个流程 节点. 执行者 定义 定义每个流程节点的具体执行人,可以按角色定 义,也可以按用户定义. 流程路 由定义 定义不同的动作结果所流转的路径. 表 1 为工作流系统需要表单提供的数据.通 393 第 4 期 唐文忠等:基于共享模型的工作流表单系统设计 过表单标识定位表单,表单是工作流系统执行动 作的对象,执行过程中,执行者根据表单所提供的 信息执行各种定义好的动作;表单分域信息是工 作流流程流转过程中 数据处理与显示控制的关 键,也是实现工作流同一流程中实现表单模型共 享的关键;表单处理结果是工作流实例流转的判 断条件,工作流系统通过表单系统获取该结果,并 根据该结果来选择下一个流程路径及节点. 图 1 系统整体结构图 表 2 为工作流本身所需要的数据,除表中所 列举的信息外,还包括流程起始节点和终止节点. 流程实例上下文变量 是贯穿整个流程实例的标 识,在工作流模型定义时需要从表单定义所提供 的数据模型中选取,如果该标识不是表单中的变 量,则该表单在流转过程中将无法定位需显示的 表单信息记录,因为没有标识表单就无法获取显 示的数据;流程节点信息定义该节点的说明信息, 用来提示流程的执行者该节点的任务;流程动作 定义和路由定义是工作流三要素路由、规则、任务 的体现,动作中包含了流程节点的任务,动作处理 结果决定了路径的选择,此为工作流路由和规则 的体现;动作执行者定义实现了工作流系统中的 访问控制.其中动作定义需要实现可扩展的接口, 以方便地扩展系统业务的处理过程.根据这些定 义的信息,本文给出了如图 1 所示的系统结构. 系统包 含 两 大 引 擎 (表 单 引 擎 和 工 作 流 引 擎)、两大模型定义库(工作流模型定义库和表单 模型定义库)以及一些相关的系统服务(访问控制 服务、组织机构服务以及系统审计服务),系统数 据的持久化建立在公共的持久层之上并针对各种 需要进行特殊处理,其中表单的数据持久化比较 特殊(动态的表单实例数据对象与数据库 schema的映射). 表单引擎 处理表单数据并提交处理结 果,如果该表单涉及到流程,则调用一组用来使工 作流 引 擎 和 表 单 引 擎 交 互 的 应 用 程 序 接 口 (WFAPI,Workflow-Form API),将 处 理 结 果 传 递给工作流引擎,工作流引擎获取该结果进行处 理并结合流程实例选择执行路径,同时将任务分 配给具体的执行者,从而完成一次流转. 在图 1 中工作流系统与表单系统涉及了 3 个 模块的交互:① 流程模型与表单模型之间;② 流程 调度引擎和表单调度引擎之间;③ 任务列表. 流程模型与表单模型之间的交互,即在定义 流程模型的时候需要修改表单定义,从而使表单 引擎在处理表单的时候捕获到该表单涉及流程, 进而根据表单中的流程定义信 息 调 用 WFAPI, 将表单处理结果返回给工作流引擎;这个定义也 493 北 京 航 空 航 天 大 学 学 报 2008 年 就是定义 2 中的fk,fk 为流程处理过程中的一个 任务节点对应的一个表单域,该域定义了流程定 义模型中的某个节点的信息,需要由表单引擎处 理该表单域后提供给流程的数据项信息,以及在 哪几个或者哪一个流程任务节点显示或隐藏该表 单域.在表单的实现上,本系统借鉴任务传递过程 中共享模型和传递模型的优缺点区别,这种方法 使用了共享模型,使用定义 2 中 fk (k=1,2,3, …,M)所表示的一个表单中有多个流程表单域的 概念,使得工作流系统多个任务节点可以共享一 个表单模型,从而减少了表单的定义,方便了表单 的维护. 流程调度引擎和表单调度引擎之间的交互, 即通过 WFAPI 来实现表单实体数据和流程数据 的传递,表单引擎捕获客户端请求,将客户端提交 的请求数据根据表单定义模型解析、校验并持久 化后,根据上述流程模型与表单模型之间交互点 的定义(上述fk 的定义)获取需提交给流程引擎 处理的数据(包括fk 的定义)将其提取出来并调 用 WFAPI 从而把数据传递给流程引擎.流程引 擎根据从 WFAPI 中获取的执行结果和fk 定义 信息通过流程引擎执行流程的调度,并生成任务 列表. 任务列表,即工作流流转过程中系统分配给 任务执行人的工作列表,其生成自工作流引擎,调 用表单引擎定位到具体的任务信息,即在流程节 点定义的表单.在 B/S 模式下任务列表表现为一 组超链接,该超链接的 url 指向一个表单引擎可 解析的请求,当用户点击该链接请求任务具体信 息时,表单引擎捕获该请求调用数据持久化服务 和表单加载服务进行处理并将处理结果(即包含 任务信息的 UI)展现给用户;超链接中包含了流 程定义中所定义的流程实例上下文变量信息和任 务节点信息,即定义 2 中fw 的所定义的信息,根 据fw 加载表单数据,根据fn 处理表单中每个域 的显示与否,当用户进行了该表单的操作,如对信 息进行了审批,表单引擎捕获后处理数据,根据处 理情况获得fo,即该任务的输出,从而完成一个 流程任务的处理. 4 结 束 语 本文通过对传统工作流系统中表单开发方法 的简要分析,提出了一种采用表单模型和工作流 模型定义相结合,表单引擎和工作流引擎相分离, 通过 WFAPI 使两者结合从而使表单在工作流系 统中完成流程流转和任务处理的方法,该方法不 仅可以使表单服务于流程系统,也可以使表单独 立运行,同时多个流程节点共享一个表单,减少了 表单的定义,方便了表单的维护.使用该方法,软 件开发人员可以通过定义一组表单模型和流程模 型,借助表单引擎和流程引擎便可实现含流程定 义的应用系统,从而加速了应用系统的开发,提高 了软件开发的效率. 参考文献 (References) [1]严俊兰,魏登萍 . 基于 XML 表单的 Web 工作流管理系统设 计[J]. 长沙大学学报,2005,19:77 YanJunlan,WeiDengping.DesignofXML-formbased Web workflow managementsystem[J].JournalofChangshaUni- versity,2005,19:77(inChinese) [2]OMGArchitectureBoardMDADraftingTeam.Modeldriven architecture-technicalperspective[EB/OL].OMG,2001. http://www.omg.org/mda/presentations.htm [3]PereraKSP.Temenos[EB/OL].Microsoft,2005.http:// www. microsoft.com/china/MSDN/library/architecture/ AJ1Me-tadat.mspx [4]唐文忠,莫伟栋 . 面向领域的模型驱动智能表单系统的框架 设计[J]. 北京航空航天大学学报,2007,33(9):1086-1089 TangWenzhong,MoWeidong.Designofmodel-drivenintel- ligentform systemframeorientedtofields[J].Journalof BeijingUniversityofAeronauticsandAstronautics,2007,33 (9):1086-1089(inChinese) [5]The Workflow ManagementCoalition.Workflow handbook [M].FL,USA:Lighthouse Point,Future StrategiesInc, 2002 [6]陶望龙,邵新宇,张国军,等 .Web 环境下基于表单的工作流 管理系统研究[J]. 计算机应用研究,2003(12):55-57 TaoWanglong,ShaoXinyu,ZhangGuojun,etal.Research ofform based workflow managementsystemin Webenvi- ronment[J].ApplicationResearchofComputers,2003(12): 55-57(inChinese) [7]金正淑,闫文耀,陈亚军,等 . 基于 .NET 技术的网上办公模 型研究[J]. 计算机工程,2006,32(12):263-265 JinZhengshu,Yan Wenyao,ChenYajun,etal.Researchof onlineofficemodelbasedon.NETtechnology[J].Comput- erEngineering,2006,32(12):263-265(inChinese) (责任编辑:文丽芳) 593 第 4 期 唐文忠等:基于共享模型的工作流表单系统设计
还剩4页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

zhaohwi

贡献于2011-08-12

下载需要 15 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf