首页> 中国专利> 一种使遗留系统具备工作流处理能力的方法及系统

一种使遗留系统具备工作流处理能力的方法及系统

摘要

本发明公开了一种使遗留系统具备工作流处理能力的方法及系统,该方法包括截取业务表单操作中的业务表单对象参数,并将业务表单对象参数存储至一方法调用堆栈数据库中;根据所述业务表单对象参数,判断该业务表单操作是否需要进行工作流处理;如否,则完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用;如是,则发起并执行工作流,然后判断所述工作流是否成功结束;如否,则使所述业务表单操作以失败结束;如是,则完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用。本发明可以使现有不具备工作流处理能力的遗留系统具备工作流处理能力,而且不需要修改业务表单代码。

著录项

  • 公开/公告号CN104217271A

    专利类型发明专利

  • 公开/公告日2014-12-17

    原文格式PDF

  • 申请/专利号CN201310217934.6

  • 发明设计人 李引;袁峰;

    申请日2013-06-04

  • 分类号G06Q10/06;

  • 代理机构广州新诺专利商标事务所有限公司;

  • 代理人肖云

  • 地址 511458 广东省广州市南沙区海滨路1121号A栋801室

  • 入库时间 2023-12-17 03:09:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-15

    授权

    授权

  • 2015-01-07

    实质审查的生效 IPC(主分类):G06Q10/06 申请日:20130604

    实质审查的生效

  • 2014-12-17

    公开

    公开

说明书

技术领域

本发明属于业务表单技术领域,具体涉及一种使遗留系统具备工作流处理能力的方法及 系统。

背景技术

业务表单,也可以叫电子表单,是采用信息化的手段对现实世界中纸张表单(比如请假单、 报销单)的抽象。它是应用系统中进行数据采集和展示的主要方式和手段,也是工作流系统中 主要处理对象,主要包含三部分内容:

(1)表单标签:这里面包含了处理表单数据所用CGI/JSP/ASP等程序的URL以及数据 提交到服务器的方法。

(2)表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选 择框和文件上传框等。

(3)表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的 CGI/JSP/ASP等脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工 作。其中提交按钮就对应着表单的新建、修改、删除等操作。

工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在 一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要 问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递 文档、信息或者任务。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。 我们可以将整个业务过程看作是一条河,其中流过的河水就是待审核的业务表单。

工作流引擎(Work Flow Engine)是为了实现工作流的操纵方式,将流程操作处理进行了 封装,对应用系统提供服务,使得业务系统能够实现工作流的操作方式。

遗留系统(legacy system),是对以前建立的系统,或者旧版本的系统的泛称。如果遗留 系统不具有工作流处理的能力,那么如果要使得遗留系统具有工作流的处理能力,目前的做 法就是对遗留的业务代码进行修改。不具有工作流处理的能力体现在一个客户端提交一个业 务表单后,业务表单的信息保存在一个数据库中,不会主动推送到其他客户终端进行下一步 处理。而具有工作流处理的能力体现在一个客户端提交一个业务表单后,业务表单信息就会 根据工作流设定的节点自动往下传输,直至工作流结束。

工作流处理能力功能的添加相当于将业务表单的操作按照工作流设定的节点进行了切 分,使得业务表单的操作不是马上生效的,必须等到工作流处理完毕之后业务表单操作才能 最终生效。所以,已有的技术对不具有工作流能力的业务表单操作添加工作流能力,是需要 修改源代码的。

比如遗留系统中的请假单,具有表单按钮“提交”,点击提交按钮之后,该请假单将立即 生效,即是:对于现有不遗留系统的业务表单,一旦用户点击“提交”按钮后,就会将该业 务表单的数据直接保存至DB数据库中,DB数据库中的数据是可以被其他人查阅的。

如果将提交请假单添加工作流的处理能力,则需要修改提交请假单的业务代码。在已有 的请假单申请的业务代码中,需要调用工作流引擎的功能,用来发起某一个工作流。与此同 时,提交的请假单不能马上被查询到,必须等到请假单工作流处理全部完成后,才能被查询 到。因此,查询请假单的代码也需要进行修改,需要添加该请假单是否在工作流处理中的业 务代码来进行判断。

从以上例子可以看出,遗留的业务表单添加工作流的处理能力是一件很繁琐和效率低下 的工作,需要对已有的业务代码进行修改,并且使得业务表单的代码与工作流的代码进行耦 合。

发明内容

为了解决上述问题,本发明的目的在于提供一种使遗留系统具备工作流处理能力的方法 及系统,可以使现有不具备工作流处理能力的遗留系统具备工作流处理能力,而且不需要修 改业务表单代码。

为了实现上述发明目的,本发明采用的技术方案如下:

一种使遗留系统具备工作流处理能力的方法,包括:

截取业务表单操作中的业务表单对象参数,并将业务表单对象参数存储至一方法调用堆 栈数据库中;

根据所述业务表单对象参数,判断该业务表单操作是否需要进行工作流处理;

如否,则从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该业务表单操 作,然后存储至业务表单数据库中以供其他用户查询调用;

如是,则发起并执行工作流,然后判断所述工作流是否成功结束;

如否,则使所述业务表单操作以失败结束,同时获取到该业务表单控制状态信息,执行 “拒绝”操作使得业务表单控制状态信息进行转换;

如是,则从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该业务表单操 作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到该业务表单控制状态 信息,执行“接受”操作使得业务表单控制状态信息进行转换。

进一步的,所述业务表单对象参数包括调用类名、调用方法名和调用方法参数。

进一步的,在截取业务表单操作中的业务表单对象参数后还包括:根据所述业务表单对 象参数生成业务表单控制状态信息,所述业务表单控制状态信息包括在一定操作条件下可相 互转换的八种控制状态:新建状态、新建工作流处理中状态、新建失败状态、正常状态、修 改工作流处理中状态、修改失败装置、删除工作流处理中状态以及被删除状态。

进一步的,还包括遗留系统的查看业务表单数据的步骤,具体如下:

执行遗留系统的业务表单查询方法,加载业务表单的数据;

检查所述业务表单控制状态信息,是否包含该业务表单数据;

如不包含,则将业务表单的数据送业务表单处理页面显示;

如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。

进一步的,还包括工作流处理中查看业务表单数据的步骤,具体如下:

在工作流处理页面中显示即将发生变化的业务表单信息;

在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,加载并显 示业务表单数据;

判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类型;

如果是删除,则将业务表单数据送工作流处理中的页面中进行显示;

如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表单数据。

本发明还提供了与前述方法完全对应一致的使遗留系统具备工作流处理能力的系统,其 包括:

业务表单操作截取模块,用于截取业务表单操作中的业务表单对象参数,并将业务表单 对象参数存储至一方法调用堆栈数据库中;

工作流判断模块,用于根据所述业务表单对象参数,判断该业务表单操作是否需要进行 工作流处理,如否,则执行完成业务表单逻辑操作模块,如是,则执行工作流发起与结束判 断模块;

完成业务表单逻辑操作模块,用于从所述方法调用堆栈数据库读取相应的业务表单对象 参数以完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用;

工作流发起和结束判断模块,用于发起并执行工作流,然后判断所述工作流是否成功结 束,如否,则执行失败结束模块,如是,则执行成功结束模块;

失败结束模块,用于使所述业务表单操作以失败结束,同时获取到该业务表单控制状态 信息,执行“拒绝”操作使得业务表单控制状态信息进行转换;

成功结束模块,用于从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该 业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到该业务表 单控制状态信息,执行“接受”操作使得业务表单控制状态信息进行转换。

进一步的,所述业务表单对象参数包括调用类名、调用方法名和调用方法参数。

进一步的,所述业务表单操作截取模块,在截取业务表单操作中的业务表单对象参数后 还包括:根据所述业务表单对象参数生成业务表单控制状态信息,所述业务表单控制状态信 息包括在一定操作条件下可相互转换的八种控制状态:新建状态、新建工作流处理中状态、 新建失败状态、正常状态、修改工作流处理中状态、修改失败装置、删除工作流处理中状态 以及被删除状态。

进一步的,还包括遗留系统的查看业务表单数据的模块,用于具体执行如下动作:

执行遗留系统的业务表单查询方法,加载业务表单的数据;

检查所述业务表单控制状态信息,是否包含该业务表单数据;

如不包含,则将业务表单的数据送业务表单处理页面显示;

如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。

进一步的,还包括工作流处理中查看业务表单数据的模块,用于具体执行如下动作:

在工作流处理页面中显示即将发生变化的业务表单信息;

在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,加载并显 示业务表单数据

判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类型;

如果是删除,则将业务表单数据送工作流处理中的页面中进行显示;

如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表单数据。

现有遗留系统业务表单的处理流程:提交业务表单操作后,业务表单就会立即生效,即 是提交后业务表单对象参数将被保存至业务表单数据库中,可以被其他用户查询调用,即可 被其他用户查询到。

然而,本发明通过截取业务表单操作中的业务表单对象参数,并将业务表单对象参数存 储至一方法调用堆栈数据库,而不直接存储至业务表单数据库中,使之不会立即生效。同时, 本发明利用方法调用堆栈数据库中存储的数据,发起和执行相应的工作流,工作流执行结束 后才存储至业务表单数据库中,使之能够被其他用户查询调用。即是,本发明是将业务表单 提交操作的数据截取出来,存储至一个中间数据库(方法调用堆栈数据库)中,然后再对其 添加工作流处理能力,从而可以看出本发明可以不改动业务表单原有的表单标签、表单域、 表单按钮的情况下,使得业务表单能够在工作流中进行处理,从而减少系统编程的开发,提 高开发效率。

附图说明

此附图说明所提供的图片用来辅助对本发明的进一步理解,构成本申请的一部分,并不 构成对本发明的不当限定,在附图中:

图1为本发明的整体流程原理示意图;

图2为业务表单进行工作流发起时的流程示意图;

图3为业务表单进行工作流处理结束时的流程示意图;

图4为遗留系统中查看业务表单数据的流程示意图;

图5为工作流处理中查看业务表单数据的流程示意图;

图6为业务表单进行工作流发起时的控制装置示意图;

图7为业务表单进行工作流处理结束时的控制装置示意图;

图8为查看业务表单数据的装置示意图;

图9为业务表单控制状态机示意图。

具体实施方式

如图1所示,本实施例公开了一种使遗留系统具备工作流处理能力的方法,包括:

11、截取业务表单操作中的业务表单对象参数,并将业务表单对象参数存储至一方法调 用堆栈数据库中,所述业务表单对象参数包括调用类名、调用方法名和调用方法参数;

12、根据所述业务表单对象参数,判断该业务表单操作是否需要进行工作流处理;

如否,则执行131:从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该 业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用;

如是,则执行132:发起并执行工作流,然后判断所述工作流是否成功结束;

如否,则执行141:使所述业务表单操作以失败结束,同时获取到该业务表单控制状态 信息,执行“拒绝”操作使得业务表单控制状态信息进行转换;

如是,则执行142:从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该 业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到该业务表 单控制状态信息,执行“接受”操作使得业务表单控制状态信息进行转换。

为了控制业务表单的操作以及在工作流中处理流转,在截取业务表单操作中的业务表单 对象参数后还包括:根据所述业务表单对象参数生成业务表单控制状态信息,所述业务表单 控制状态信息包括在一定操作条件下可相互转换的八种控制状态:新建状态、新建工作流处 理中状态、新建失败状态、正常状态、修改工作流处理中状态、修改失败装置、删除工作流 处理中状态以及被删除状态。

为了屏蔽或者转换遗留系统中的业务表单显示的信息,使得能够与工作流处理能力进行 匹配,还包括遗留系统的查看业务表单数据的步骤,具体如下:

执行遗留系统的业务表单查询方法,加载业务表单的数据;

检查所述业务表单控制状态信息,是否包含该业务表单数据;

如不包含,则将业务表单的数据送业务表单处理页面显示;

如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。

为了便于工作流处理过程中查看业务表单数据,还包括工作流处理中查看业务表单数据 的步骤,具体如下:

在工作流处理页面中显示即将发生变化的业务表单信息;

在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,加载并显 示业务表单数据;

判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类型;

如果是删除,则将业务表单数据送工作流处理中的页面中进行显示;

如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表单数据。

本实施例还公开了一种与前述方法完全对应一致的使遗留系统具备工作流处理能力的系 统,其包括:

业务表单操作截取模块,用于截取业务表单操作中的业务表单对象参数,并将业务表单 对象参数存储至一方法调用堆栈数据库中,所述业务表单对象参数包括调用类名、调用方法 名和调用方法参数;

工作流判断模块,用于根据所述业务表单对象参数,判断该业务表单操作是否需要进行 工作流处理,如否,则执行完成业务表单逻辑操作模块,如是,则执行工作流发起与结束判 断模块;

完成业务表单逻辑操作模块,用于从所述方法调用堆栈数据库读取相应的业务表单对象 参数以完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用;

工作流发起和结束判断模块,用于发起并执行工作流,然后判断所述工作流是否成功结 束,如否,则执行失败结束模块,如是,则执行成功结束模块;

失败结束模块,用于使所述业务表单操作以失败结束,同时获取到该业务表单控制状态 信息,执行“拒绝”操作使得业务表单控制状态信息进行转换;

成功结束模块,用于从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该 业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到该业务表 单控制状态信息,执行“接受”操作使得业务表单控制状态信息进行转换。

为了控制业务表单的操作以及在工作流中处理流转,所述业务表单操作截取模块,在截 取业务表单操作中的业务表单对象参数后还包括:根据所述业务表单对象参数生成业务表单 控制状态信息,所述业务表单控制状态信息包括在一定操作条件下可相互转换的八种控制状 态:新建状态、新建工作流处理中状态、新建失败状态、正常状态、修改工作流处理中状态、 修改失败装置、删除工作流处理中状态以及被删除状态。

为了屏蔽或者转换遗留系统中的业务表单显示的信息,使得能够与工作流处理能力进行 匹配,还包括遗留系统的查看业务表单数据的模块,用于具体执行如下动作:

执行遗留系统的业务表单查询方法,加载业务表单的数据;

检查所述业务表单控制状态信息,是否包含该业务表单数据;

如不包含,则将业务表单的数据送业务表单处理页面显示;

如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。

为了便于工作流处理过程中查看业务表单数据,还包括工作流处理中查看业务表单数据 的模块,用于具体执行如下动作:

在工作流处理页面中显示即将发生变化的业务表单信息;

在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,加载并显 示业务表单数据

判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类型;

如果是删除,则将业务表单数据送工作流处理中的页面中进行显示;

如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表单数据。

当然上述使遗留系统具备工作流处理能力的方法还可以将其划分为四个阶段的处理流 程:工作流发起阶段流程、工作流完成阶段流程、工作流处理中的业务表单数据查看流程、 遗留系统中业务表单数据查看流程。

其中,工作流发起阶段流程的主要作用是对遗留业务表单操作进行截取,并插入工作流 发起的逻辑。比如新建报销单操作时,需要将原有的业务逻辑进行截取,并发起新建报销单 的工作流处理。

其中,工作流完成阶段流程的主要作用是在工作流完成的基础上,完成对业务表单的操 作。比如新建报销单工作流处理完成时,需要继续执行之前截取的业务逻辑操作,完成报销 单的新建操作。

其中,工作流处理中的业务表单数据查看流程的主要作用是在工作流处理中,处理人要 查看的业务表单需要做进一步的处理才能符合显示要求。比如新建报销单操作后,由于在工 作流发起阶段中截取了新建报销单操作,使得在报销单库中并不存在该报销单,而是存储在 另外的数据库中,那么当需要在工作流处理中查看该新建的报销单信息时,就必须进行额外 的处理,才能看到该新建的报销单信息。

其中,遗留系统中业务表单数据查看流程的主要作用是屏蔽或者转换遗留系统中的业务 表单显示的信息,使得能够与工作流处理能力进行匹配。比如将报销单的报销金额从1000元 修改为2000元,遗留系统修改完毕之后就马上生效,并且修改后的报销单金额2000元能够 被财务专员看到了。但是如果添加了工作流处理能力,那么该报销单金额2000元是不能被财 务专员马上查看到的,必须等到整个工作流处理完成之后,才能看到2000元。

如图2所示,工作流发起阶段具体包括以下步骤:

步骤S110,点击业务表单的按钮,将会执行后端的业务逻辑操作。常用的业务逻辑操作 有新建、删除、修改、查看等。比如,点击请假表单的“提交”按钮,那么对应后端的新建 操作逻辑会将该请假表单的数据存入到数据库中。

步骤S120,截取业务表单操作中的业务表单对象参数,基于该业务表单对象生成业务表 单控制状态信息,按照面向对象思想,执行业务表单控制状态信息对象的提交操作,在该对 象的提交操作中,主要是改变业务表单的控制状态和设置变化后的业务表单数据。截取参数 一般可以采用AOP(面向方面编程)技术,将方法的参数抓取出来。

步骤S130,判断该业务表单操作是否需要进行工作流处理。如果不进行工作流处理,则 执行步骤S140,否则执行步骤S160。

步骤S140,完成S110中的业务表单逻辑操作。

步骤S150,按照面向对象思想,将S120中的业务表单控制状态信息作为对象,执行该 对象的接受操作。在该对象的接受操作中,主要是改变业务表单的控制状态和清空变化后的 业务表单数据。

步骤S160,停止业务表单的后端逻辑操作,并将该后端逻辑操作的方法调用堆栈信息进 行保存。方法调用堆栈信息的保存使得工作成功完成时,能够再次被调出来和执行,完成业 务表单的逻辑操作。方法调用堆栈信息包括调用方法名、方法参数对象等。如果是面向对象 的语言比如Java编写的,还包括调用类的名称。

步骤S170,发起工作流。

如图3所示,工作流完成阶段具体包括以下步骤:

步骤S210,判断工作流是否成功结束,如果以失败结束,则执行步骤S220,如果以成功 结束则执行步骤S240。

步骤S220,将业务表单操作对应的方法堆栈丢弃,使得业务表单的操作失败。

步骤S230,按照面向对象思想,将S120中的业务表单控制状态信息作为对象,执行该 对象的拒绝操作。在该对象的拒绝操作中,主要是改变业务表单的控制状态和清空变化后的 业务表单数据。

步骤S240,取出方法调用堆栈,继续执行业务表单的操作,使得业务表单的操作成功。 比如执行新建报销单的操作,在步骤S130中判断该新建报销单需要执行工作流操作,并在步 骤S160将新建报销单的后端逻辑操作的方法调用堆栈进行了保存。在步骤S240时,将之前 保存的调用堆栈取出来,并执行,使得新建报销单最终生效,并能够被用户所查看到。

步骤S250,按照面向对象思想,将S120中的业务表单控制状态信息作为对象,执行该 对象的接受操作。在该对象的接受操作中,主要是改变业务表单的控制状态和清空变化后的 业务表单数据。

如图4所示,遗留系统的查看业务表单数据的流程具体包括以下步骤:

步骤S310,执行遗留系统的业务表单查询方法,加载业务表单的数据。比如,根据报销 单的ID,查询对应的报销单的信息。

步骤S320,检查S120中的业务表单控制状态信息,是否包含该业务表单数据,如果不 包含则执行步骤S340,如果包含则执行步骤S330。

步骤S330,根据业务表单控制状态信息,修改业务表单的状态显示。比如业务表单中有 一个“状态”表单域,根据控制状态信息将其设置为“修改审批中”。

步骤S340,将业务表单的数据显示到页面上。

如图5所示,工作流处理中查看业务表单数据的流程具体包括以下步骤:

步骤S410,工作流处理用户点击进入某一个业务表单的工作流处理页面,在其中将显示 即将发生变化的业务表单信息。比如,新建报销单的工作流处理页面中,将报销单的信息显 示出来。

步骤S420,系统在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询 方法,加载并显示业务表单数据。

步骤S430,业务表单操作有新建、删除和修三种基本类型,判断业务表单操作类型,如 果是进行的业务表单的删除操作的工作流,则执行步骤S450,如果是进行的业务表单新建和 修改的工作流,则执行步骤S440。

步骤S440,步骤S420加载的业务表单数据替换为新建或修改后的业务表单数据。新建 或修改后的业务表单数据也就是步骤S120中截取的业务表单对象参数。

步骤S450,将业务表单数据显示到工作流处理中的页面中。

同样,前述使遗留系统具备工作流处理能力的系统,还可以按照以下方式进行划分:主 要包含相关的数据库表、工作流发起模块、工作流完成模块和业务表单数据查看转换模块。

数据库表包括方法调用堆栈库210、业务表单控制信息库220、业务表单库230,见图6, 图7,图8。

方法调用堆栈库210对业务表单操作的后端操作逻辑的方法执行堆栈进行了存储,主要 包括调用类、调用方法名、调用方法参数集合信息。

比如新建请假表单的后端操作逻辑的执行方法为: LeaveFormService.newLeaveForm(LeaveForm form),则调用类为LeaveFormService,调用方法 名为newLeaveForm,调用方法名参数集合为LeaveForm form。

业务表单控制信息库220对业务表单控制状态信息进行了存储,主要包含业务表单类型、 业务表单id、变化后的业务表单数据、业务表单的控制状态等四个字段。

业务表单类型字段可以区分业务表单类型,使得业务表单控制信息库220能够存储任意 类型的业务表单的控制状态信息。

业务表单id字段可以区分同一个业务表单类型中的不同业务表单。

变化后的业务表单数据字段用来暂存新建和修改的业务表单数据。对于新建和修改操作, 在进行工作流处理时,其业务表单数据内容是不能生效的,必须当工作流以成功完成时,业 务表单的新建和修改操作才能生效。变化后的业务表单数据字段可以采用序列化的方式将业 务表单的数据信息整体转换成二进制字节码并进行存储。

业务表单的控制状态主要有八个,见图9,主要包含NewState(新建状态)、 NewProcessState(新建工作流处理中状态)、NewFailState(新建失败状态)、NormalState(正常状 态)、ModifyProcessState(修改工作流处理中状态)、ModifyFailState(修改失败状态)、 DelProcessState(删除工作流处理中状态)、DeletedState(被删除状态)状态,每个状态之间在一 定的操作条件下能够进行转移。操作包括提交、删除、接受和拒绝四种操作。其中提交操作 可以用来处理新建和修改操作,删除操作用来处理删除操作,接受和拒绝操作能够用来处理 新建、修改和删除操作。

优选的,业务表单的控制状态可以根据需要进行添加,比如ModifyWaitProcessState,表 示还没有经过一次工作流处理的修改业务表单状态。

优选的,DeletedState状态不是必须的。当业务表单的删除之后,可以从业务表单库中完 全删除。

按照面向对象思想,业务表单控制状态信息不但可以包含业务表单类型、业务表单id、 变化后的业务表单数据、业务表单的控制状态等四个属性,还包含提交操作、接受操作和拒 绝操作。

在操作提交处理器110、操作接受处理器130、操作拒绝处理器160中将基于业务表单的 控制状态来进行业务表单处理操作控制。业务表单处理操作控制的含义是当业务表单处于不 同的控制状态时,控制业务表单能够执行的操作行为。

比如,当处于NormalState时,执行提交操作,将状态迁移到ModifyProcessState,并且 在ModifyProcessState不能再进行提交操作,只能进行接受和拒绝操作。基于这样的状态控制, 就能够实现同一个业务表单不能在同时被多次修改,避免了业务表单操作可能造成的数据冲 突。

业务表单库230存储了任意类型的、异构结构的业务表单。异构结构的含义是表单域、 表单标签和表单按钮时不同的。比如请假表单包含表单标签“请假时间”,报销表单包含表单 标签“报销金额”。

工作流发起模块包含遗留系统的业务表单操作执行器110、操作提交处理器120、工作流 发起拦截器130、操作接受处理器140,见图6。

遗留系统的业务表单操作执行器110处理业务表单的操作逻辑,主要参数为变化后的业 务表单数据。如果是新建操作,则该业务表单数据是构造出来的数据。如果是修改操作,则 该业务表单数据是根据旧业务表单数据修改之后的数据。如果是删除操作,则该业务表单数 据是旧业务表单数据。

操作提交处理器120从业务表单控制信息库220中查询是否有当前业务表单的控制信息。 如果没有对应的业务表单的控制信息,或者如果有对应的业务表单的控制信息,并且业务表 单控制状态是NewState、NewFailState、NormalState和ModifyFailState这四种状态之一,则 根据当前业务表单数据生成业务表单控制状态信息,并且执行“提交”操作。

如果业务表单操作类型为新建操作,则执行“提交”操作后,业务表单控制状态将转换 到状态NewProcessState,并且存储到业务表单控制信息库220中。

如果业务表单操作类型为修改操作,则执行“提交”操作后,业务表单控制状态将转换 到状态ModifyProcessState,并且存储到业务表单控制信息库220中。

如果业务表单操作类型为删除操作,则执行“提交”操作后,业务表单控制状态将转换 到状态DelProcessState,并且存储到业务表单控制信息库220中。

如果业务表单控制信息库220中查询到有当前业务表单的控制信息,并且业务表单控制 状态不是NewState、NewFailState、NormalState和ModifyFailState这四种状态,则抛出异常 提示“不能执行业务表单的XXX操作”,并中断后续模块的执行。

工作流发起拦截器130拦截遗留系统的业务表单操作执行器110中参数,包括操作类型、 调用类、调用方法名、调用方法参数集合,根据这些参数判断是否要发起工作流。如果要发 起工作流,则将以上参数保存到方法调用堆栈210中。

如果不需要发起工作流,操作接受处理器140基于操作提交处理器120中获取的业务表 单控制状态信息执行“接受”操作,并且执行完业务表单的操作,将业务表单数据存入业务 表单库230中。

如果业务表单操作类型为新建操作,则执行“接受”操作后,业务表单控制状态将转换 到状态NormalState,并且存储到业务表单控制信息库220中。

如果业务表单操作类型为修改操作,则执行“接受”操作后,业务表单控制状态将转换 到状态NormalState,并且存储到业务表单控制信息库220中。

如果业务表单操作类型为删除操作,则执行“接受”操作后,业务表单控制状态将转换 到状态DeletedState,并且存储到业务表单控制信息库220中。

优选的,当业务表单控制状态处于NormalState时,可以将该业务表单控制状态从220 中删除。

工作流结束模块包含工作流完成处理器150、操作接受处理器140、操作拒绝处理器160。

当工作流完成时,工作流完成处理器150从业务表单控制信息库220和方法调用堆栈库 210中分别取出业务表单控制状态信息和业务表单操作方法调用堆栈。

如果是以成功结束,将方法调用堆栈210中取出保存的调用堆栈,采用反射技术执行, 将业务表单数据存入业务表单库230中。同时,在操作接受处理器140中将业务表单控制状 态信息执行“接受”操作。

如果业务表单操作类型为新建操作,则执行“接受”操作后,业务表单控制状态将转换 到状态NormalState,并且存储到业务表单控制信息库220中。

如果业务表单操作类型为修改操作,则执行“接受”操作后,业务表单控制状态将转换 到状态NormalState,并且存储到业务表单控制信息库220中。

如果业务表单操作类型为删除操作,则执行“接受”操作后,业务表单控制状态将转换 到状态DeletedState,并且存储到业务表单控制信息库220中。

优选的,当业务表单控制状态处于NormalState时,可以将该业务表单控制状态从220 中删除。

如果是以失败结束,在操作拒绝处理器160中将业务表单控制状态信息执行“拒绝”操 作。

如果业务表单操作类型为新建操作,则执行“拒绝”操作后,业务表单控制状态将转换 到状态NewFailState,并且存储到业务表单控制信息库220中。

如果业务表单操作类型为修改操作,则执行“拒绝”操作后,业务表单控制状态将转换 到状态NormalState,并且存储到业务表单控制信息库220中。

优选的,将该业务表单控制信息进行拷贝生成一个新的业务表单控制信息,其中业务表 单类型、业务表单id、变化后的业务表单数据这三个字段值不变,将业务表单的控制状态字 段设置为ModifyFailState。用户可以基于该修改失败的业务表单数据进行编辑后,再次提交。

如果业务表单操作类型为删除操作,则执行“拒绝”操作后,业务表单控制状态将转换 到状态NormalState,并且存储到业务表单控制信息库220中。

优选的,当业务表单控制状态处于NormalState时,可以将该业务表单控制状态从220 中删除。

业务表单数据查看转换模块包含业务表单信息查看器310和业务表单信息替换器320。

业务表单信息查看器310从业务表单数据库230中取出业务表单数据,并且根据业务表 单控制信息库210来判断是否要进行业务表单数据的替换。

当在工作流处理页面中查看业务表单数据,并且业务表单数据在业务表单控制信息库210 中有对应的控制信息时,并且控制状态为NewProcessState或NewFailState时,则由业务表单 信息替换器320将业务表单控制信息中的变化后的业务表单数据取出来,采用反射技术构造 业务表单页面的显示字段。

当在工作流处理页面中查看业务表单数据,并且业务表单数据在业务表单控制信息库210 中有对应的控制信息时,并且控制状态为ModifyProcessState或ModifyFailState时,则由业务 表单信息替换器320将业务表单控制信息中的变化后的业务表单数据取出来,采用反射技术 替换从业务表单数据库230中取出业务表单数据,并显示在业务表单页面上。

当在工作流处理页面中查看业务表单数据,并且业务表单数据在业务表单控制信息库210 中有对应的控制信息时,并且控制状态为DelProcessState时,不进行业务表单数据的替换, 直接显示从业务表单数据库230中取出业务表单数据。

当在遗留业务表单页面中查看业务表单数据,业务表单的控制状态只能处于 NormalState、ModifyProcessState和DelProcessState。

当处于NormalState时,业务表单信息替换器320不需要进行任何替换。

当处于ModifyProcessState和DelProcessState时,业务表单信息替换器320需要 ModifyProcessState和DelProcessState状态显示在业务表单页面中。

下面以新建请假表单操作与工作流处理结合的实例来对技术方案进行说明。

发起新建请假单工作流

执行新建请假表单操作,110执行后端业务逻辑操作。

操作提交处理器120先从220中检查,发现不存在该请假表单的控制状态信息,则根据 请假表单的数据,生成业务表单控制状态信息,其中业务表单类型=请假表单,业务表单id= 新建的请假表单id,变化后的业务表单数据=请假表单数据进行序列化后的二进制字节码,业 务表单的控制状态=NewState。

操作提交处理器120对该业务表单控制状态信息执行“提交”操作,使得业务表单控制 状态信息中的业务表单的控制状态变为NewProcessState。

工作流发起拦截器130对请假表单的新建操作进行拦截,发现该操作需要进行工作流处 理,新建请假到的方法为LeaveFormService.newLeaveForm(LeaveForm form)。则130生成新 建请假表单操作的方法调用堆栈信息,其中调用类名=LeaveFormService,调用方法名 =newLeaveForm、方法参数=LeaveForm form。并将该信息存入方法调用堆栈库210中。

工作流处理中查看请假单信息

业务表单信息查看器310从业务表单库230中查询是否有新建请假单数据,发现没有。 则业务表单信息替换器320从业务表单控制信息库210中获取到新建请假单的控制状态信息, 并提取其中的变化后的业务表单数据,采用反序列化的方法恢复其数据表示格式,最后再采 用反射技术实现到请假单页面数据的加载与展示。

成功完成新建请假单工作流

新建请假单工作流处理完成时,工作流完成器150首先从业务表单控制信息库220中获 取之前存储的新建请假单的状态控制信息,操作接受处理器140在状态控制信息上执行“接 受”操作,使得业务表单控制状态信息中的业务表单的控制状态变为NormalState。

工作流完成器150在从方法调用堆栈库210中提取新建请假单的操作方法堆栈,其中调 用类名=LeaveFormService,调用方法名=newLeaveForm、方法参数=LeaveForm form。并采用 反射技术,重新调用执行LeaveFormService.newLeaveForm(LeaveForm form),使得该请假单 的数据存入业务表单库230中。

以上详细描述了本发明的较佳具体实施例,应当理解,本领域的普通技术无需创造性劳 动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明 构思在现有技术基础上通过逻辑分析、推理或者根据有限的实验可以得到的技术方案,均应 该在由本权利要求书所确定的保护范围之中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号