国网安徽省电力公司淮北供电公司 梁后健 李孝天 胡贺军
JAVA工作流引擎的开发和设计
国网安徽省电力公司淮北供电公司 梁后健 李孝天 胡贺军
工作流在业务开发中占据了重要的地位,而工作流系统的核心部件就是工作流引擎,直接影响着系统质量。信息技术在不断的发展,在企业工作中,办公自动化系统应用越来越广泛,这也是企业现代化水平的重要衡量标准。工作流技术在应用中较为深入,出现了很多工作流产品的变更,但是缺少灵活性和适应性,因此这一问题不可忽视。本文从技术背景入手,具体阐述JAVA工作流引擎的开发和设计,希望本文的研究对相关工作有所帮助。
JAVA;工作流;工作流引擎;开发;设计
目前工作流系统较为普遍,应用也较为广泛,市场用户数量较多,不过目前相关的工作流产品还很难在各个领域实现流通,也很难满足市场用户的各种需求。面对客户需求越来越特殊,工作流系统也得到了普及,工作流引擎在很多的企业中都已经实现了应用,开展了具有企业特色的工作流系统,也能满足不同用户的特殊需求。
JAVA是一种程序设计语言,在互联网、数据中心、PC端等应用极为普遍,通用性和安全性能优异。JAVA和一般的程序语言不同,属于一种开放性语言,各个软件相互兼容,可以面向对象进行多线程动态分布。
工作流一词来源于英语单词Work fl ow,产生于生产办公自动化领域,提出这一概念,主要是将整体性的工作进行分解,分解成为一个个的子任务,按照一定的规则进行各个子任务完成情况监控,有效的提高任务完成效率,也能明显降低生产成本,提高企业的生产水平,简单来说,工作流就是企业业务流程的自动化。
工作流引擎能为工作流提供必要的运行环境和服务,这也就是“引擎”,具体来说,工作流引擎可以控制整个工作的运行过程,并且进行相应的过程定义,同时,可以对各个活动进行操作和解释的转换,在用户和应用之间传递工作流控制相关数据,提供工作流操作界面,实现对工作流操作的管理和监督。
JAVA工作流引擎是一种能为工作流提供必要环境和服务的引擎,功能较为突出,如图1所示。
图1 JAVA工作流引擎总体架构示意图
如图所示,这是本文提出的JAVA工作流引擎的整体架构,在其中准确描述了工作流引擎在整个系统中的功能以及具体的工作方式。引擎核心是流程中央控制器,能控制系统的各个组件,实现核心路由的功能,也能通过对子系统的功能限定,进行数据的存储和处理。引擎接口可以对流程进行重新定义,实现对流程的整体维护和管理。在引擎核心的设计上,可以从产品的具体需求和模型建设角度进行处理,确定不同的管理器,展现不同的功能,而利用一个JAVA工作流引擎管理器就可以实现对所有管理器的控制,这样能展现出JAVA工作流引擎的功能,也方便了企业管理工作。
工作流模型是工作流实现的重要前提,这也是对业务处理的重要基础,能将企业工作业务进行抽象处理,并且借助计算机用一种全新的方式表达出来。
(1)设计对象模型
在编辑程序的过程中,最为重要的就是找到对象,根据具体的需求,将具体的概念转化成为对象模型。设计对象模型,更加方便工作流操作执行,而工作流的操作执行的开始和结束就是这些对象之间相互处理的结果。
(2)设计数据模型
根据不同类型的JAVA工作流引擎可以选择不同的数据模型。在机构模型选择条件下,可以确定法企业或者各个部门之间的组织结构关系,展现了企业内部的人员结构规划,也能分析JAVA工作流引擎中的各种控制数据。根据数据模型的要求,可以对企业的关键业务进行更为准确细致的描述,也能根据数据模型的要求,选择不同的业务规则,这样重新定义双方关系结构。
从工作流引擎的定义来看,能为工作流提供必要的运行环境和服务,在其中提供了必要的工作流定义和相关活动,针对JAVA工作流引擎的各种功能,具体阐述JAVA工作流引擎关键技术的实现。
JAVA工作流引擎在关键算法和技术要点都集中在算法设计上,工作流系统本身很可能出现业务流程规则上的问题,而业务流转就可以借助路由算法来实现。工作流系统可以按照预先设定好的业务流程规则进行自动流转,而根据路由算法的不同进行不同的判断,路由算法的功能和路由其这一硬件设备基本相同,其质量直接决定这工作流系统的运转情况。工作流模式较多,而对于不同的建模语言进行处理,很难具体确定哪一种模式。根据事务执行模式的不同,可以选择不同的工作流模式,常见的工作流模式如表1所示。
表1 常见工作流模式表
本次JAVA工作流引擎设计选择的为并发聚合路由。
数据模型数据提供源为过程定义工具,流程定义完成之后,相关的信息都会存储在工作流数据库中,这也就是过程定义的职能,然后JAVA工作流引擎就可以进行后续操作。JAVA工作流引擎可以算是一个抽象接口,直接与数据模型相连。
JAVA工作流引擎流程控制器是流程控制管理的核心辅助对象,对于流程进行全新的解释,而各个节点和路由算法可以进行全新的调度实现,这也是其核心内容,通过核心节点可以实现对其他节点的调度。JAVA工作流引擎权限控制管理器可以实现工作流角色和系统角色关系的处理,借助工作流引擎核心的功能进行权限的解释,这样就可以改变其运行结果,进行引擎优化。
(1)事务机制方法
在应用系统开发过程中,事务是单个工作单元,需要重点考虑,每个步骤之间需要密切联系,并且作为一个整体看待,这样事务之间的每一个步骤都需要在上一个步骤成功之后方可继续处理。根据事务处理的要求,两个操作需要保持一致,都成功或者失败,这样才能满足要求。
①事务属性
从事务属性来看,企业在应用程序开发上,需要进行全方位的数据访问,而事务可以控制多个程序访问相同的数据,协调管理数据访问过程,根据客户的需求,可以选择对数据的不同处理方式,无论是读取还是写入,都可以根据用户需求进行。
②事务协议
在阶段初始,和事务相关的所有信息资源都需要提前提交,而事务涉及到的资源还可以选择一次就叫异常结束事务的机会。在事务执行上,可以进行两个阶段的处理,两个阶段本身就具有统一性,如果发送过来的资源出现的异常,那么整个事务都会取消,而资源不进行更新的状况下,事务会正常执行。只有第一个阶段没有发生任何异常,第二个阶段才能正常的开展。在这一状况下,资源管理都可以进行数据更新,而事务提交可以选择不同的阶段进行,这时两个阶段之间的事务协议也就显得极为重要。事务协议可以让多个事务管理和资源管理都整合到一个事务中,这样如果一个部分出现事务异常,那么所有事务都会回滚。
③事务控制
和之前的事务形式不同,新的事务控制可以选择声明式的事务,可以让组件自动参与其中,事务框架组件不会声明事务的进行状况,可以借鉴这一内容,程序员在编程控制上,直接控制逻辑,就可以减少编码时间,这样在事务优化的时候,不需要直接改动源代码,节省了很多编码时间,也能避免客户端程序出现误差。这一事务控制类型,在应用上效果较好,而且组件程序和应用程序并不需要真正了解事务就可以进行编程处理。目前在JAVA事务控制框架选择上,声明式事务经过实践之后能很好的支持企业应用。
(2)异常处理方法
在JAVA工作流引擎工作过程中,会出现以下两种异常情况:
①系统级日常
在出现网络故障的时候,客户端可以向服务器发送请求,而出现网络崩溃的时候,很容易造成客户端并不能准确确定网络崩溃的时间段,这样客户的判断准确度也就很难保障,并不知道客户请求到底是在服务器处理之前还是处理之后的信息传递过程出现网络故障,也不能判断数据库中数据是否经过修改。网络故障是较为常见的故障形式,但是并不是唯一的故障形式,数据库自身也能发生崩溃故障,而数据库出现问题的时候,在数据的写入上就会出现偏差,影响到数据库的正常处理。
②应用级异常
在用户访问上,不同的分布可以有不同的结构表现,而如果多个用户同时访问同一个数据库的时候,很容易出现记录上的冲撞,而如果两个用户都更改产品记录,不适用事务的时候就会造成数据的存储出现问题。只要应用事务,那么两个数据就会发生排斥,这样就会让数据库在操作上保持唯一,保证数据库数据完整统一。在特定的逻辑状态下,根据特定的需求出现系统异常,发生逻辑错误的时候,程序员在运行上很容易出现异常。这些异常方式都会造成JAVA工作流引擎系统出现异常。
综上所述,借助工作流模型可以确定其核心内容,也就是工作流引擎的实现,在JAVA体系结构平台下,采取全新的技术架构方式,可以完成JAVA工作流引擎核心技术。工作流管理系统较为复杂,其核心内容JAVA工作流引擎更加复杂,在开发设计上,架构更加清晰,实现也更加方便,应用效果良好,关键步骤基本上得以实现,在未来还有很大的发展空间。
[1]王瑾.J2EE开发环境下的轻量级工作流引擎构件的设计与实现[J].科技创新导报,2008,36:39.
[2]袁雄伟,钟宝荣.Spring MVC框架下公文审批中应用JBPM工作流引擎[J].信息系统工程,2013,03:88-90.
[3]陈思蒙,谭慧敏.基于工作流引擎构建高等学校本科专业设置预测系统[J].沈阳师范大学学报(自然科学版),2015,04:555-558.
[4]谭善伟,唐军.基于SSI架构的建筑质量监督系统的设计与实现[J].物联网技术,2017,02:100-101+104.