黄丽梅, 李佳林, 李瑞然
(长春市国土资源局信息中心,吉林长春 130011)
目前应用的各类电子政务系统,基本上是以工作流技术为核心的电子审批、档案管理、行政办文等相应系统组成的综合性事物处理平台,为政府提高管理水平提供了有效的技术支撑[1]。工作流技术从产生开始发展到今天,无论是在技术方面,还是在管理方面,都有了很大的变化,最初的的技术方法已经不能适应新的需要,随着信息化的进一步发展与深入,一般性的工作流设计方法已经不能使工作流程与实际情况对应,现实情况对于工作流平台的要求越来越复杂,对工作流引擎的子流程技术改进已经成为电子政务发展的重要需求[2]。
工作流就是一类能够完全或者部分由计算机自动执行的业务过程[3],一个成熟的工作流管理系统,其引擎对于子流程(Subflow)功能的支持是必不可少的,就如同是一门编程语言支持函数一样普遍。在当前Workflow,BPM,EAI产品的建模工具中,对于子流程的应用无处不在,随着流程建模工具的日益强大、企业业务过程的日趋复杂及集成要求的不断增长,把相似的过程封装成一个个可调用的过程函数,已经是一个不可缺少的功能了[4]。
在工作流技术基本控制流程模式中,子流程分为4类。
定义1 非同步多实例模式:在一个工作流实例的环境中,一个动作的多个实例可以被创建。也就是说,在控制线程外产生新的线程。这些线程相互独立,不需要同步。
例如:在业主办理土地证的流程中,同一业主有多处房产,可办理多个土地证,因此,土地证的办理动作存在多个实例,办理土地证A的实例、办理土地证B的实例等。
定义2 设计时可知的多实例模式:在一个流程实例中,一个活动被实例化的次数在设计时是可知的。一旦所有已知的实例完成,其它的活动需要被执行。
例如:某个订单,需要3次不同的审核。
定义3 运行时可知的多实例模式:在一个流程实例中,一个活动被实例的调用次数在设计时是不可知的,它依赖于流程特性或者资源可用性,仅在流程实例运行时的某个阶段可知。
例如:在土地分割登记过程中,一宗地的分割流程中分割的数量依赖于实际分割的户数,每户所分得的土地依赖于宗地总面积、总建筑面积以及该户的建筑面积。
定义4 运行时不可知的多实例模式:在一个流程实例中,一个活动被实例的调用次数在设计时是不可知的,在流程运行的过程中也是不可知的。
例如:在100台计算机的运输流程中,每次运输的计算机的个数是不可知的,因此,整个运输次数也是不可知的。
子流程是一类特殊的工作流过程定义,可以映射成其它工作流定义中的一个活动节点,当执行到子流程节点时,触发子流程执行,待子流程执行完毕,回到父流程执行下一个节点,通过子流程机制,工作流技术实现工作流过程定义之间的嵌套和连接[5]。
在此次设计中,工作流引擎设计使用微软的WF(Windows Workflow Foundation)引擎来实现系统核心平台。Windows Workflow Foundation是编程模型、引擎和工具,用于在Windows上快速生成启用工作流的应用程序。它包括一个命名空间、一个进程内工作流引擎和多个Visual Studio 2008设计器。Windows Workflow Foundation是一个框架,让用户可以在其为Windows Vista,Window s XP和Windows Server 2003系列编写的应用程序中创建系统或人工工作流。Windows Workflow Foundation可用于解决简单方案,如根据用户输入显示UI控件,或用于解决大型企业遇到的复杂方案,如订单处理和库存控制。
Windows Workflow Foundation可以处理的方案包括[6]:
◦在业务线应用程序中启用工作流
◦用户界面页流
◦以文档为中心的工作流
◦人工工作流
◦面向服务应用程序的复合工作流
◦业务规则驱动的工作流
◦系统管理的工作流
Windows Workflow Foundation提供了与其它.NET Framework 3.0技术(如Windows Communication Foundation和Window s Presentation Foundation)一致和熟悉的开发体验。Windows Workflow Foundation API完全支持Visual Basic.NET和C#、专用工作流编译器、在工作流中调试、图形工作流设计器,并支持完全用代码或标记开发工作流。Windows Workflow Foundation还提供了可扩展模型和设计器,用于生成为最终用户或跨多个项目重用封装工作流功能的自定义活动。
下面以土地管理系统中的分割登记流程为例来说明此次工作流引擎中子流程技术的实现。
一般的分割登记流程是由一个分割登记流程通过分割一宗地形成若干个分割宗地及相应的分割登记证号,整理立卷之后,分割登记流程结束。分割转让登记流程是根据分割登记流程所形成的分割证号启动分割转让登记流程,将临时性的分割登记证换发土地证[7]。
这种流程方式的弊端是两个流程没有有机地结合起来,导致分割转让登记如果发现问题需要更改时,分割登记流程已经形成的电子档案和纸质档案不能同步修改,使原分割登记的档案不能保持有效性,需要重新进行分割登记,产生许多重复工作,这种流程引擎已经不能适应现在土地登记管理的实际情况。因此就要把流程整合,使两个流程有机地统一起来,使最终档案生成有效。
新引擎的设计使两个流程能够有机组合,变成一个父流程与子流程的关系。解决了数据管理和使用的同步问题。下面以土地分割登记为例,说明父流程与子流程之间的调用方法,土地分割登记中包括调用分割转让流程和测绘流程。
以土地分割登记流程为例,流程采用代码分离方式设计,其XAML代码如下[8]:
从上面实例可以看出,分割转让登记子流程和测绘子流程的调用方式完全不同,分割转让登记流程在工作流设计中使用的是运行时可知的多实例模式,采用ReplicatorActivity方法调用,ReplicatorActivity类似于代码中的For Each语句,如果出现需要对许多不同实体重复同一函数的任务,则使用ReplicatorActivity解决方案可能比WhileActivity更好,默认情况下,在所有子实例结束后,ReplicatorActivity结束,可以用活动完成时要使用的自定义条件重写此行为。如果在所有子实例结束前,此条件计算结果为true,则会取消所有正在运行的未完成子实例,因此,采用ReplicatorActivity。而在测绘子流程中却采用非同步多实例模式,在工作流设计中作为一个Active直接调用。
子流程技术的引入,减少了工作流二次开发中大量的重复劳动,若同时采用动态表单技术可以实现单流程多用途的审批管理模式,不仅能够缩短程序开发周期,而且具有很强的实用价值。
[1] 辛继升.推进国土资源信息化建设若干问题的探讨[J].国土资源信息化,2008(3):7-11.
[2] 陶信宽.贵州省国土资源信息化建设模式研究[J].国土资源信息化,2009(5):3-5.
[3] 李玉华.工作流技术的研究设计[J].中国科技信息,2008,10(3):96-98.
[4] 侯秀萍.基于工作流网的过程模型的合理性分析[J].长春工业大学学报:自然科学版,2006,27(2):162-164.
[5] 唐文忠.基于工作流技术的构件模型研究[J].计算机应用研究,2008,25(7):2057-2059.
[6] 谭 云.基于Windows Workflow Foundation技术的软件项目管理系统的实现方法[J].青岛职业技术学院学报,2008(3):77-81.
[7] 李明晶.浅析土地分割登记[J].黑龙江国土资源,2007(7):64-65.
[8] 李军怀.一种基于XM L的工作流过程定义语言研究与应用[J].计算机工程,2005,31(15):53-55.