APP下载

工作流环境下组件的开发

2012-09-26雷聚超范梦龙

电子设计工程 2012年22期
关键词:组件流程用户

雷聚超,范梦龙

(西安工业大学 计算机学院 西安 710021)

随着市场竞争的加剧和计算机技术的发展,企业必须寻求一种新的技术来优化他们的业务流程,于是工作流技术应运而生,它成为实现企业信息化建设、提高企业运营效率的有效途径。但是,工作流管理系统的开发随着企业要求的变更要做许多重复性的工作,软件的可扩充性、可重用性等方面的问题日益突出,本文将组件技术与工作流技术相结合使这方面的问题得到解决。

在新技术背景下,工作流技术进入一个崭新的发展阶段。一些著名的工作流商业软件供应商不断推出新产品,其中比较著名的企业级工作流产品有BEA的WLI,IBM的holosofx与 MQSeries工作流,Fujitsu 的 Iflow,SAP 的 NetWeaver,Sonic的Orchestration Server。特别是基于Web的工作流系统,已成为一种新的市场流行趋势。代表产品有Ultimus的业务流程管理产品等[1]。目前工作流管理系统存在设计实现复杂、可靠性、重用性差等问题。本文在研究工作流环境下组件的开发过程中,为使开发的组件能够良好的应用于B/S结构,采用了Ajax技术,实现异步交互过程,解决了传统Web应用中会出现的屏幕闪烁、刷新问题。

1 工作流技术

工作流概念起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序活动而提出的一个概念。工作流技术主要是利用计算机科学技术,并结合企业具体产品开发过程与经营管理进行信息化软件系统的应用开发,达到企业经营和生产过程全自动或半自动化的执行和管理[2]。现在,工作流技术已成为企业信息化建设方案中比不可少的内容之一,它被广泛的应用于电讯业、软件工程、制造业、金融业和办公自动化等领域。

尽管工作流发展到现在已经取得了相当的成就,但其概念目前还没有完全统一的定义。其中被广泛引用的是工作流管理联盟(Workflow Management Coal ition,WfMC)对工作流的定义:工作流是一类能够完全或者自动执行的经营过程,根据一系列过程规则、文档、信息或任务在不同的执行者之间进行传递与执行。

2 组件技术

组件是一个独立的可传递的操作的集合,是软件开发中一个可替换的软件单元,它封装了设计决策,具有特定的功能[3]。一个软件组件是可执行软件的一个可分离的部分,可以与其它组件实现互操作,只能通过组件的接口来访问它,在进行了必要的安装和装配过程之后,它就能以接口规定的方式来使用。

组件技术是面向对象技术之后的软件开发的标准方法体系。近年来,组件技术主要有以下3种,OMG的CORBA(通用对象请求代理结构)规范,Sun公司的JavaBean/EJB/J2EE规范和Microsoft公司的COM/DCOM/COM+规范,它们各有各的特点,但思想是一致的。

利用组件,可以堆积木似的搭建软件系统,从而实现软件的大粒度复用,缩短开发周期,降低维护成本。随着软件复用技术的日益成熟,利用可复用组件构造软件系统已成为软件开发的主要手段。

3 工作流环境下组件的开发

考虑系统的功能及组件之间的协调工作,组件的开发及部署过程一般分为根据系统的需求分析进行组件的设计、组件的定义、装配、运行及测试等几步。文中将重点放在研究工作流组件的开发上。

3.1 组件的设计

为了保证组件在复用、组装和扩展上的可行性,组件设计应遵循以下原则:

1)组件的设计应根据子系统或子功能来划分,使组件与领域内实体或者功能对应;

2)组件的接口设计要规范友好,使开发人员能够方便地使用;

3)组件的适应性强,尽可能能满足不同行业的需求;4)组件发布前必须进行测试、审查。

在进行工作流环境下组件的设计时,考虑到工作流的特殊性,不能仅仅按照设计一般组件的步骤来进行工作流组件设计。

工作流最基本的功能就是实现数据处理的自动流转,当设计工作流组件时不能简单的为每个工作流都建立组件,这样会存在一些问题,如:增加或调整工作流,就要对相应的组件进行修改,这样不够灵活;而且,有的组件是可以共用的,就可以把它归为通用组件,每个流程都可以使用,这样就减少了代码冗余。

根据以上分析,一般情况下,将组件划分成界面管理组件、权限控制组件、通用组件、流程控制组件、报表组件、数据库访问组件等。

图1 工作流环境下组件结构图Fig.1 Components structure Under the environment of the workflow

界面管理组件是系统与用户交互的各种组件的总和。验证用户是否为系统的合法用户以及用户信息是否合法等。

权限控制组件是管理系统所有使用者的身份的组件,它与流程控制组件关系密切,以不同的身份登录系统通过调用权限控制控制组件,直接控制系统数据流向。

流程控制组件是工作流组件的核心,它对于各个工作节点来说具有一定的通用性,负责把所有节点中复用的已有组件信息整合到一起来控制业务流程。可以为此组件添加流程名称、流程来源名称、前步编号、本步编号、下步编号、流程状态表名、本步表名、前步表名等属性,使之与其它组件关联起来。这些编号信息由系统产生并保存于数据库中,系统为这些信息创建特定的表,在用户处理过程中,需要读取这些信息,根据表名,系统从数据库中读取相应的字段。

数据访问组件负责从数据库中检索数据并把实体数据保存回数据库中。除此之外,它还包括实现数据相关操作所需的所有业务逻辑。

报表组件负责从数据库中读取数据,并将返回的结构打印成需要的报表。

通用组件是供各流程共用的组件。它包括:时钟组件、文本框组件、按钮组件、日历组件等等。

3.2 定义组件

由于本文研究适用于B/S结构的工作流组件,Intrawb是基于Delphi的网络编程平台,在该平台下可以采用继承的方法自定义生成WEB组件,具体过程如下:

1)祖先类的确定。自定义WEB组件实质上是根据需要派生新的组件类,而派生组件类的关键是选择一个合适的祖先类,如果选的祖先类不合适,不但给创建新组件造成困难,甚至可能无法实现。

2)创建组件框架。组件框架包含祖先类名、组件的类名、组件显示的面板页和组件的单元名。

3)加入属性、事件、方法。要构建工作流环境下的组件,需要为每个组件设计一个标志,用来定义组件的执行顺序;预先定义控制流程的组件的触发条件、触发事件。

按照以上步骤编写好组件代码,进行测试后,就可以将组件加入到组件包进行编译和安装,供以后使用。

3.3 Ajax技术的穿插

在编写组件代码时,需要注意一个问题,用IntraWeb可视化开发会出现屏幕刷新、闪烁的问题。这是由于传统的Web应用采用同步交互过程,这种情况下,用户首先向Web服务器发送一个请求,然后Web服务器根据用户请求的内容,执行相应的任务,并向用户返回结果,这是一种不连贯的用户体验,在服务器处理请求时,用户就只能等待着,此时浏览器显示的页面是空白的。由于同步模式的限制,浏览器在接收到服务器响应之前是处于停滞状态的,为了使开发出的组件给用户更好的体验,在编写代码时,穿插Ajax技术,解决前面提到的问题。

Ajax的英文全称是 Asynchronous JavaScript and XML,中文含义为“异步JavaScript和XML”,是指一种创建交换式网页应用的网页开发技术。图2所示的是Ajax Web软件体系架构。

图2 Ajax Web软件体系架构Fig.2 Ajax Web Software structure

从图2可以看出,Ajax应用程序比传统的Web应用程序多了一层Ajax引擎。Ajax通过发送XMLHTTP请求,实现将信息发送到服务器并从服务器接收信息,从而大大减少了带宽的浪费,同时XMLHTTP请求的发送是异步的,并不需要等待客户端或者服务器的任何其他操作而可以独立发送和接收,数据交换量的减少可以带来更快的应用,更好的用户体验和更轻的服务器负担[4]。由此可见,在编写组件代码的时候,穿插Ajax技术是很有必要的。

另外,图中的WEB组件这里主要是指Intraweb自身的组件和自定义WEB组件;组件的基础设施是指为WEB组件提供公共的基础服务;WEB组件仓库用来存放已存在基本组件和自定义组件;WEB应用程序是安装在服务器端的,该应用程序是建立在Intraweb平台下的。

4 结束语

文中根据工作流技术的特点,将工作流技术与组件技术相结合,对工作流环境下的组件开发进行了分析和研究,讨论构建工作流组件的方法,并给出了工作流环境下的组件结构,对以后在其它平台下开发工作流组件起到了一定的指导作用。另外,文中还提出了用Ajax技术来解决传统Web应用的同步交换问题的方法,这对开发Web组件也是非常有意义的,能够给用户带来更好的体验与感受。总之,我们开发出适合的自定义组件,在构建系统时节省了开发的工作量和难度,提高了开发的效率,增加了系统的可维护性,而且便于系统升级,一次功能改动后,只需要在服务器端更新该功能的组件即可。

[1]杨洋,李志蜀.工作流管理系统发展状况与趋势研究[J].四川经济管理学院学报,2008(1):53-56.

YANG Yang,LI Zhi-shu.Research on workflow management system and its developing trend[J].Journal of Sichuan Economic Management Institute,2008(1):53-56.

[2]WFMC TC00-1003.Workflow management coalition:the workflow reference mode[S].1995.

[3]左爱群,黄水松.基于组件的软件开发方法研究[J].计算机应用,1998,18(11):4-7.

ZUO Ai-qun,HUANG Shui-song.Research on comppnentbased development[J].Computer Applications,1998,18(11):4-7.

[4]Khare R.Beyond Ajax:Accelerating web applications with real time event notification[M].Know Now White Paper Clink from the Wayback Machine,2007.

[5]汪盛,袁捷,李宗岩.基于组件技术的模型管理[J].计算机工程,2001,27(1):38-40.

WANG Sheng,YUAN Jie,LI Zong-yan.Model management system based on components[J].Computer Engineering,2001,27(1):38-40.

[6]张银鹤,梁文新,李新磊.JavaScript完全学习手册[M].北京:清华大学出版社,2009.

猜你喜欢

组件流程用户
无人机智能巡检在光伏电站组件诊断中的应用
吃水果有套“清洗流程”
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
违反流程 致命误判
关注用户
本刊审稿流程
析OGSA-DAI工作流程
关注用户
关注用户