文章信息
- 顾雷, 张旭, 黄震春, 范东璞.
- Gu Lei, Zhang Xu, Huang Zhenchun, Fan Dongpu.
- 工作流技术在数字林业网格中的应用
- Application of Workflow Technology in Digital Forestry Grid
- 林业科学, 2006, 42(增刊1): 101-105.
- Scientia Silvae Sinicae, 2006, 42(增刊1): 101-105.
-
文章历史
- 收稿日期:2005-08-17
-
作者相关文章
2. 中国林业科学研究院资源信息研究所 北京 100091
2. Research Institute of Forest Resources Information Techniques, CAF Beijing 100091
无论在商业应用还是科学研究领域, 一些过程被一再地重复执行, 只是每次的输入数据不同。这些过程通常包括一组较小的子任务, 每个子任务是一个独立的工作单元, 子任务间互相依赖。通常, 一个过程中输入输出相依赖的一组任务被称为工作流, 而工作流系统是用来定义、执行和监控工作流的。
在最近几年中, 工作流技术在商业应用和科学研究领域得到越来越广泛地关注和使用。XPDL(XML process definition language, XML过程定义语言)和BPEL(business process execution language, 业务过程执行语言)正逐渐被越来越多的公司采纳并已经应用到实际的产品和项目中。工作流的基本功能可以用“三个正确”来概括, 即在正确的时间选择正确的人做正确的事情。通常适用于过程固定, 但流程参与者和流程处理数据变化的应用。在工作流系统中, 数据的流向能够被清晰展现。此外, 工作流系统能够很好地支持协作式信息系统、计算机支持的协同工作、群件系统和功能库。
在数字林业部分应用中, 数据是应用的核心。应用中最常见的查询、分析、过滤、合并和显示等操作都可以看作是数据的过滤器。数据在不同的过滤器之间流动, 根据一定的规则实现应用的目标。在若干年的数字化过程中, 数字林业领域积累了大量可重用的标准格式的数据和各种处理服务。为了提高林业数据和GIS服务的重用性并简化应用的开发维护, 采用了基于工作流技术的方案来实现。WIFG(workflow-base infrastructure for forestry grid, 基于工作流的林业网格支撑平台)项目的目标是提供一个基于工作流系统的安全可控的运行环境, 使得对整个应用的全生命周期进行管理和监控。在科学研究领域, 已经存在一些应用系统是以工作流系统为支撑平台的, 其中有些系统是以子任务交互为中心的(Weske et al., 1996; Vossen et al., 1999), 有些系统是以数据访问为中心的(Ailamaki et al., 1998)。随着网格技术的发展, 还出现了一类弱化过程概念, 完全以数据为中心的应用系统(David et al., 2004)。
针对数字林业应用的服务重用性高、数据量大、操作耗时长的特点, WIFG设计了如下特性: 1)系统可扩展 系统的状态采用对象模型, 可以持久化在内存、数据库和文件中, 可以通过分布式的数据库和文件系统共享, 实现分布的工作流系统; 2)支持页面引擎 WIFG提供了页面引擎来控制应用页面的跳转以及数据在页面和服务之间的传递, 使得开发基于WIFG的Web应用更为简便; 3)插件灵活 系统遵循模块化设计, 每个模块都设计了接口。用户可以遵循接口开发持久化服务层、服务、规则等。灵活的插件使得系统的适应性增强, 便于将来改造扩展; 4)容错性强 工作流的数据和状态都可以保存在数据库中, 而工作流的运行状态则完全由数据库中的状态来决定, 因此可以通过数据库的事物来确保工作流的事物; 此外, 可持久化的工作流实例也使得系统在遇到灾难后, 可以从以前的状态恢复。
本文介绍WIFG的体系结构、设计和实现, 给出一个基于WIFG的开发实例, 最后对该项目进行总结。
1 体系结构图 1是WIFG的体系结构。WIFG分为用户层和系统层。用户层模块负责和用户交互, 将用户的请求转化为系统可识别的命令, 转发给WIFG系统的核心模块, 将系统的处理结果以用户可理解的方式反馈给用户。系统层模块根据用户的请求, 使用系统控制的资源处理该请求, 并返回处理结果。
![]() |
图 1 WIFG的体系结构 Fig. 1 The architecture of WIFG |
用户层是用户与工作流系统交互的界面, 流程的整个周期可以分为:定义、部署、创建和运行几个阶段。用户层为不同的阶段提供了相应的辅助工具。
设计工具在流程设计阶段使用。设计工具提供可视化的界面, 让用户设计工作流程以及流程中需要使用的决策规则、交互页面以及功能服务等。设计好的规则、页面、服务和工作流, 可以作为模板保存起来, 供以后的设计和运行时使用。设计工具最主要的功能是设计工作流脚本, 脚本中描述了工作流中需要调用的服务、流转的判断规则、与用户交互的界面以及流程的组成。
管理工具在流程部署阶段使用。主要是针对工作流脚本的管理, 包括部署、反部署、分类和设置权限等。工作流设计出来后, 还不能够马上被工作流引擎所执行, 必须使用管理工具部署到引擎中。在部署过程中, 引擎会验证工作流脚本的语法, 维护工作流脚本的版本, 使得同一流程的不同版本可以在系统中运行。
工作间在流程启动和运行中提供给流程用户。用户在工作间中可以启动应用, 并且在工作流引擎的控制下一步步执行应用。这里用户可以启动新的应用、继续原有应用以及中止和退出应用。
运行时监视器是为系统管理员提供的。在系统运行过程中, 系统管理员通过运行时监视器可以查看所有流程的运行情况以及系统的负载, 并可以做相应的调整。
1.2 系统层系统层是WIFG的核心。底层是丰富的数据库、服务库、页面库、规则库和流程库, 中间层是灵活强大的数据库引擎、服务引擎、页面引擎和规则引擎, 最上层是工作流引擎。
数据库引擎封装了对数据库的操作。系统运行过程中, 整个工作流的实例都是持久化保存在数据库中的; 此外工作流运行中, 一些流程相关的数据也需要保存在数据库中。数据库引擎可以方便地对数据库进行操作, 并且屏蔽各种关系数据的异构性, 使得系统具有数据库无关的特性。此外将流程状态数据保存在数据库中, 便于运行时查询分析系统的运行情况。
服务引擎是工作流系统的执行单元。工作流具体执行的功能通过调用外部的服务完成。具体对服务的调用是由服务引擎完成的。服务引擎可以调用不同类型的服务, 例如可执行代码、脚本代码、Web服务等。
页面引擎是工作流系统的渲染单元。工作流执行时, 具体功能的输入输出由页面引擎来处理。在运行阶段, 用户指定每个任务的页面, 页面引擎以表单形式收集用户的输入, 并传递给工作流引擎。在需要显示页面的时候, 页面引擎会将页面需要的数据从工作流系统中取出并格式化, 页面引擎完成和用户的交互。
规则引擎是工作流系统的决策单元。在流程运行中, 经常需要根据流程的运行情况做一些决策, 例如条件分支、条件同步和访问控制等。与外部服务相类似, 规则也需要支持可执行代码、脚本代码和Web服务。因此在系统中引入规则引擎来判断条件。
工作流引擎是工作流系统的对外接口, 主要负责流程状态的转换。在流程运行时, 根据流程定义调用相应的引擎执行相应的操作。简单来说, 工作流引擎只负责流程的逻辑, 具体的功能都是调用相应的引擎来完成的。需要与用户交互时, 调用页面引擎来展现结果, 接收输入; 需要执行外部服务时, 调用服务引擎执行脚本中定义的服务; 需要判断流转情况时, 调用规则引引擎来选择执行路线; 需要保存流程状态和相关数据时, 调用数据库引擎来操作。
2 设计和实现 2.1 工作流定义规范在WIFG中, 工作流脚本采用XML格式。WIFG中提供了一组自定义的标签来表示工作流的元素。首先介绍其中最主要的4个元素:步骤、结果、服务和规则。图 2是一个包含了分支条件的流程示意图。
![]() |
图 2 流程示意图 Fig. 2 A simple workflow UR: Unconditional result; CR: Conditional result.下同。The same below. |
步骤是流程图中的每一个节点, 是流程的基本元素, 每一步代表一个用户功能。流程每运行到一个步骤, 将和用户交互一次, 处理用户请求, 根据结果选择下一个步骤。结果是流程图中的每一条有向边。结果分为有条件结果和无条件结果。流程运行时, 首先判断条件, 当判断满足某一条件, 则沿着相应边转换到下一个步骤。服务是工作流执行功能的基本单位。在流程从一步转换到另一步时, 会依次产生步骤预处理、有条件结果预处理、有条件结果后处理和步骤后处理4个事件。每个事件会触发相应脚本中定义的服务, 服务是在流程转换过程中被调用的。规则主要用在判断条件结果的时候。当判断一个有条件的分支时, 会调用规则引擎来判断相应脚本中定义的规则是否被满足, 满足则执行该分支。
此外还设计了分支和同步2种路由元素。位于分支后面的多个步骤可以被并行执行, 同步需要等待之前的步骤全部执行完毕。图 3是一个含有并行分支和并行同步的流程示意图。
![]() |
图 3 含有分支和同步的流程示意图 Fig. 3 A complex workflow containing fork and join |
WIFG中工作流引擎的设计和开发参考了开源的工作流项目jBMP和OSWorkflow, 采用了J2EE (Java 2 platform, enterprise edition, Java2平台企业版)技术中的轻量级组件技术。
2.2.1 模板库使用工作流来构建数据驱动的应用, 主要目的是为了重用流程和各种功能组件。在WIFG中, 各种组件(工作流脚本、规则、服务、页面)资源都是以XML格式保存的。用户在设计工作流脚本时, 可以随时设计新的组件并添加到模板库中, 且可以随时使用模板库中的现成组件。
2.2.2 数据库引擎引擎在运行时, 流程的状态、流程的相关数据都保存在数据库中。WIFG的数据库引擎使用了基于Hibernate的对象关系映射技术, 使得引擎中对数据库的访问同访问Java对象一样方便, 并可以在不改动代码的情况下移植到各种Hibernate支持的数据库上, 这一点尤为重要, 在开发测试阶段, 为了部署运行方便, 底层使用的是HSQLDB这一轻量级纯Java数据库。系统实际部署时, 可运行在Microsoft SQL Server 2000和Oracle 8i/9i上。为了能够方便的访问工作流相关数据, 还开发了基于Hibernate的可持久化的属性集, 使得开发人员可以方便的使用setter(属性设置方法)/getter(属性获取方法)来保存/访问相关数据。
2.2.3 页面引擎使用JSP(Javaserver page, Java服务器端页面)技术来渲染页面。为了方便的展现工作流相关数据, WIFG系统提供了一组JTL(Java tag library, Java标签库)来显示可持久化的属性集中的数据。
2.2.4 服务引擎服务引擎采用插件结构, 不同的插件可以支持不同类型的功能服务。WIFG中已经支持的服务类型有: Java类、EJB(enterprise JavaBean, 企业级Java组件)、SOAP(simple object access protocol, 轻量级对象访问协议)服务、BeanShell(轻量级Java脚本)和Jython(Python语言的Java实现)。用户可以开发新的插件, 例如支持Javascript(一种流行的基于对象的语言)和Groovy(一种基于Java虚拟机的语言)等。在调用服务的时候, 服务引擎会传递3类参数:用户从页面提交的参数、脚本引擎中预先设置的参数和工作流相关数据的属性集。每种方法返回字符串类型的值表示服务调用的结果。
2.2.5 规则引擎规则引擎的结构同服务引擎, 也是支持插件的结构。支持的插件类型同服务引擎, 唯一区别在于返回值不是字符串, 而是布尔类型。
2.2.6 工作流引擎工作流引擎使用DOM(document object model, 文档对象模型)来解析XML格式的工作流定义文件, 将之转化为Java对象。在运行过程中, 将状态一步一步保存到数据库, 根据预先定义好的流程, 调用相应的子引擎来完成相应的功能。
2.3 用户接口用户接口提供给工作流系统的使用者。使用者包括流程设计、流程部署、流程管理、流程使用等角色。不同接口供不同角色使用。
2.3.1 设计工具WIFG使用JGraph开发的可视化流程定制工具, 支持独立运行和浏览器嵌入式运行2种模式。编辑器支持鼠标拖拽, 并可以设置每个工作流元素的属性。WIFG可以自动在可视化流程和XML格式之间转换。该开发环境还支持模板的编辑和使用。
2.3.2 管理工具管理工具是完全基于Web的, 在Web界面中可以对流程进行部署、分类、修改状态以及设置权限等操作。
2.3.3 工作间工作间是基于Web的。每个普通用户登录到系统之后可以进入个人的工作间, 这里列出用户可以启动的应用, 以及用户正在运行的流程。
2.3.4 运行时监视器运行时监视器通过查询底层数据库获得工作流实例相关的数据。通过监视器, 可以查看正在运行的流程以及对流程实例进行停止、挂起和恢复的操作。
3 应用开发以“退耕还林规划”流程应用为例, 描述使用WIFG开发应用的过程。退耕还林规划流程的目标是要得到河流两岸坡度小于一定范围的耕地。为了得到这一结果, 需要对基础地图、土地利用图和耕地分布图进行各种GIS操作。为了得到不同地区的结果, 需要使用不同地区的地图数据来操作, 但是流程是固定的。整个开发分为如下步骤:定义流程、开发服务、开发页面和配置部署。
3.1 定义流程退耕还林规划应用虽然流程不是非常复杂, 但是用到了流程中的分支、并行和合并。使用WIFG编辑器绘制的流程图如图 4, 图 4可以清楚的看出退耕还林的过程。
![]() |
图 4 退耕还林流程 Fig. 4 A workflow of converting cropland to forest |
在林业中, 大量的GIS操作是可重用的, 为此开发了几个非常常用的GIS服务:缓冲区分析、空间分析、叠加分析以及结果显示。此外, 在网格应用中, 资源的查找注册也是常用的服务。基于数字林业网格的另一个子项目中开发的资源注册平台、搜索服务也是通用的。在开发服务的时候需要明确定义服务的输入输出参数的名称和格式。
3.3 开发页面这一步是开发每一步用于和用户交互的页面, 所有的页面可以基于相同的模板按照WIFG的页面规范来开发。页面使用WIFG提供的JTL可以方便的访问流程相关的数据, 用户请求也只需要提交给WIFG引擎。在页面层不需要考虑如何处理用户输入, 下一步跳转到什么页面。使得页面开发可以更多的考虑表示层的东西, 而不需要考虑过多逻辑层。
3.4 配置部署流程开发完毕之后, 需要将开发好的服务在WIFG编辑器中设置到相应的预处理和后处理元素中, 将开发好的页面设置到相应的步骤中, 并且将页面添加到页面库中; 然后将工作流部署到系统中; 再次登入系统, 即可启动应用, 按照流程定制的步骤一步步的完成应用。
4 结论在数字林业网格中使用工作流技术具有以下优点: 1)利于不同专长的人员的合作。熟悉应用流程的人员和熟悉应用开发的人员可以通过工作流定制工具进行准确交流。2)提高了服务和应用的重用性。在实际开发的时候, 只开发了少量功能单一的业务服务。此外, 如果某一地区需要使用该服务, 只需要将本地的数据按照规定的格式注册到资源注册中心, 即可以使用系统提供的应用流程来处理本地数据。3)适合于长时间运行的服务。使用工作流技术后, 每个应用的运行状态都被记录下来, 应用可以随时中断、随时继续。而且支持并行执行。对于大量使用耗时的GIS操作的林业应用, 能够明显提高工作效率。4)缩短了二次开发的时间, 降低了开发的难度。
当然, 系统中也存在一些不足, 如工作流引擎自身的效率还有待提高, 此外页面系统暂时只支持JSP, 不支持ASP(Active Server Pages, 活动服务器页面)语言、PHP(Personal homepage Hypertext Preprocessor, 个人主页超文本预处理)语言等常见的动态Web语言, 使得与这类系统集成时需重新开发页面。今后将进一步改进。
Ailamaki A, Ioannidis Y E, Livny M. 1998.Scientific workflow management by database management.Statistical and Scientific Database Management, 190-199
|
David T L, M ichael J F. 2004.GridDB : A data-centric overlay for scientific grids. International Conference on Very Large Databases(VLDB)
|
Vossen G, Weske M. 1999.The WASA2 object-oriented workflow management system.Proceedings ACM SIGMOD International Conference on M anagement of Data (SIGMOD 1999), 587-589
|
Weske M, Vossen G, Medeiros C B.1996.Scientific workflow management : WASA architecture and applications.Fachbericht Angewandte Mathematik und Informatik 03/96-I
|