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

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

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

【背景技术】
[0002] 业务表单,也可以叫电子表单,是采用信息化的手段对现实世界中纸张表单(比 如请假单、报销单)的抽象。它是应用系统中进行数据采集和展示的主要方式和手段,也是 工作流系统中主要处理对象,主要包含三部分内容:
[0003] (1)表单标签:这里面包含了处理表单数据所用CGI/JSP/ASP等程序的URL以及 数据提交到服务器的方法。
[0004] (2)表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选 择框和文件上传框等。
[0005] (3)表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上 的CGI/JSP/ASP等脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处 理工作。其中提交按钮就对应着表单的新建、修改、删除等操作。
[0006] 工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后 组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解 决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则 自动传递文档、信息或者任务。简单地说,工作流就是一系列相互衔接、自动进行的业务活 动或任务。我们可以将整个业务过程看作是一条河,其中流过的河水就是待审核的业务表 单。
[0007] 工作流引擎(Work Flow Engine)是为了实现工作流的操纵方式,将流程操作处理 进行了封装,对应用系统提供服务,使得业务系统能够实现工作流的操作方式。
[0008] 遗留系统(legacy system),是对以前建立的系统,或者旧版本的系统的泛称。如 果遗留系统不具有工作流处理的能力,那么如果要使得遗留系统具有工作流的处理能力, 目前的做法就是对遗留的业务代码进行修改。不具有工作流处理的能力体现在一个客户端 提交一个业务表单后,业务表单的信息保存在一个数据库中,不会主动推送到其他客户终 端进行下一步处理。而具有工作流处理的能力体现在一个客户端提交一个业务表单后,业 务表单信息就会根据工作流设定的节点自动往下传输,直至工作流结束。
[0009] 工作流处理能力功能的添加相当于将业务表单的操作按照工作流设定的节点进 行了切分,使得业务表单的操作不是马上生效的,必须等到工作流处理完毕之后业务表单 操作才能最终生效。所以,已有的技术对不具有工作流能力的业务表单操作添加工作流能 力,是需要修改源代码的。
[0010] 比如遗留系统中的请假单,具有表单按钮"提交",点击提交按钮之后,该请假单将 立即生效,即是:对于现有不遗留系统的业务表单,一旦用户点击"提交"按钮后,就会将该 业务表单的数据直接保存至DB数据库中,DB数据库中的数据是可以被其他人查阅的。 toon] 如果将提交请假单添加工作流的处理能力,则需要修改提交请假单的业务代码。 在已有的请假单申请的业务代码中,需要调用工作流引擎的功能,用来发起某一个工作流。 与此同时,提交的请假单不能马上被查询到,必须等到请假单工作流处理全部完成后,才能 被查询到。因此,查询请假单的代码也需要进行修改,需要添加该请假单是否在工作流处理 中的业务代码来进行判断。
[0012] 从以上例子可以看出,遗留的业务表单添加工作流的处理能力是一件很繁琐和效 率低下的工作,需要对已有的业务代码进行修改,并且使得业务表单的代码与工作流的代 码进行耦合。


【发明内容】

[0013] 为了解决上述问题,本发明的目的在于提供一种使遗留系统具备工作流处理能力 的方法及系统,可以使现有不具备工作流处理能力的遗留系统具备工作流处理能力,而且 不需要修改业务表单代码。
[0014] 为了实现上述发明目的,本发明采用的技术方案如下:
[0015] 一种使遗留系统具备工作流处理能力的方法,包括:
[0016] 截取业务表单操作中的业务表单对象参数,并将业务表单对象参数存储至一方法 调用堆栈数据库中;
[0017] 根据所述业务表单对象参数,判断该业务表单操作是否需要进行工作流处理;
[0018] 如否,则从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该业务 表单操作,然后存储至业务表单数据库中以供其他用户查询调用;
[0019] 如是,则发起并执行工作流,然后判断所述工作流是否成功结束;
[0020] 如否,则使所述业务表单操作以失败结束,同时获取到该业务表单控制状态信息, 执行"拒绝"操作使得业务表单控制状态信息进行转换;
[0021] 如是,则从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该业务 表单操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到该业务表单 控制状态信息,执行"接受"操作使得业务表单控制状态信息进行转换。
[0022] 进一步的,所述业务表单对象参数包括调用类名、调用方法名和调用方法参数。
[0023] 进一步的,在截取业务表单操作中的业务表单对象参数后还包括:根据所述业务 表单对象参数生成业务表单控制状态信息,所述业务表单控制状态信息包括在一定操作条 件下可相互转换的八种控制状态:新建状态、新建工作流处理中状态、新建失败状态、正常 状态、修改工作流处理中状态、修改失败装置、删除工作流处理中状态以及被删除状态。
[0024] 进一步的,还包括遗留系统的查看业务表单数据的步骤,具体如下:
[0025] 执行遗留系统的业务表单查询方法,加载业务表单的数据;
[0026] 检查所述业务表单控制状态信息,是否包含该业务表单数据;
[0027] 如不包含,则将业务表单的数据送业务表单处理页面显示;
[0028] 如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。
[0029] 进一步的,还包括工作流处理中查看业务表单数据的步骤,具体如下:
[0030] 在工作流处理页面中显示即将发生变化的业务表单信息;
[0031] 在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,力口 载并显示业务表单数据;
[0032] 判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类 型;
[0033] 如果是删除,则将业务表单数据送工作流处理中的页面中进行显示;
[0034] 如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表 单数据。
[0035] 本发明还提供了与前述方法完全对应一致的使遗留系统具备工作流处理能力的 系统,其包括:
[0036] 业务表单操作截取模块,用于截取业务表单操作中的业务表单对象参数,并将业 务表单对象参数存储至一方法调用堆栈数据库中;
[0037] 工作流判断模块,用于根据所述业务表单对象参数,判断该业务表单操作是否需 要进行工作流处理,如否,则执行完成业务表单逻辑操作模块,如是,则执行工作流发起与 结束判断模块;
[0038] 完成业务表单逻辑操作模块,用于从所述方法调用堆栈数据库读取相应的业务表 单对象参数以完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调 用;
[0039] 工作流发起和结束判断模块,用于发起并执行工作流,然后判断所述工作流是否 成功结束,如否,则执行失败结束模块,如是,则执行成功结束模块;
[0040] 失败结束模块,用于使所述业务表单操作以失败结束,同时获取到该业务表单控 制状态信息,执行"拒绝"操作使得业务表单控制状态信息进行转换;
[0041] 成功结束模块,用于从所述方法调用堆栈数据库读取相应的业务表单对象参数以 完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到 该业务表单控制状态信息,执行"接受"操作使得业务表单控制状态信息进行转换。
[0042] 进一步的,所述业务表单对象参数包括调用类名、调用方法名和调用方法参数。
[0043] 进一步的,所述业务表单操作截取模块,在截取业务表单操作中的业务表单对象 参数后还包括:根据所述业务表单对象参数生成业务表单控制状态信息,所述业务表单控 制状态信息包括在一定操作条件下可相互转换的八种控制状态:新建状态、新建工作流处 理中状态、新建失败状态、正常状态、修改工作流处理中状态、修改失败装置、删除工作流处 理中状态以及被删除状态。
[0044] 进一步的,还包括遗留系统的查看业务表单数据的模块,用于具体执行如下动 作:
[0045] 执行遗留系统的业务表单查询方法,加载业务表单的数据;
[0046] 检查所述业务表单控制状态信息,是否包含该业务表单数据;
[0047] 如不包含,则将业务表单的数据送业务表单处理页面显示;
[0048] 如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。
[0049] 进一步的,还包括工作流处理中查看业务表单数据的模块,用于具体执行如下动 作:
[0050] 在工作流处理页面中显示即将发生变化的业务表单信息;
[0051] 在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,力口 载并显示业务表单数据
[0052] 判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类 型;
[0053] 如果是删除,则将业务表单数据送工作流处理中的页面中进行显示;
[0054] 如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表 单数据。
[0055] 现有遗留系统业务表单的处理流程:提交业务表单操作后,业务表单就会立即生 效,即是提交后业务表单对象参数将被保存至业务表单数据库中,可以被其他用户查询调 用,即可被其他用户查询到。
[0056] 然而,本发明通过截取业务表单操作中的业务表单对象参数,并将业务表单对象 参数存储至一方法调用堆栈数据库,而不直接存储至业务表单数据库中,使之不会立即生 效。同时,本发明利用方法调用堆栈数据库中存储的数据,发起和执行相应的工作流,工作 流执行结束后才存储至业务表单数据库中,使之能够被其他用户查询调用。即是,本发明是 将业务表单提交操作的数据截取出来,存储至一个中间数据库(方法调用堆栈数据库)中, 然后再对其添加工作流处理能力,从而可以看出本发明可以不改动业务表单原有的表单标 签、表单域、表单按钮的情况下,使得业务表单能够在工作流中进行处理,从而减少系统编 程的开发,提高开发效率。

【专利附图】

【附图说明】
[0057] 此【专利附图】
附图
【附图说明】所提供的图片用来辅助对本发明的进一步理解,构成本申请的一部 分,并不构成对本发明的不当限定,在附图中:
[0058] 图1为本发明的整体流程原理示意图;
[0059] 图2为业务表单进行工作流发起时的流程示意图;
[0060] 图3为业务表单进行工作流处理结束时的流程示意图;
[0061] 图4为遗留系统中查看业务表单数据的流程示意图;
[0062] 图5为工作流处理中查看业务表单数据的流程示意图;
[0063] 图6为业务表单进行工作流发起时的控制装置示意图;
[0064] 图7为业务表单进行工作流处理结束时的控制装置示意图;
[0065] 图8为查看业务表单数据的装置示意图;
[0066] 图9为业务表单控制状态机示意图。

【具体实施方式】
[0067] 如图1所示,本实施例公开了一种使遗留系统具备工作流处理能力的方法,包括: [0068] 11、截取业务表单操作中的业务表单对象参数,并将业务表单对象参数存储至一 方法调用堆栈数据库中,所述业务表单对象参数包括调用类名、调用方法名和调用方法参 数;
[0069] 12、根据所述业务表单对象参数,判断该业务表单操作是否需要进行工作流处 理;
[0070] 如否,则执行131 :从所述方法调用堆栈数据库读取相应的业务表单对象参数以 完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用;
[0071] 如是,则执行132 :发起并执行工作流,然后判断所述工作流是否成功结束;
[0072] 如否,则执行141 :使所述业务表单操作以失败结束,同时获取到该业务表单控制 状态信息,执行"拒绝"操作使得业务表单控制状态信息进行转换;
[0073] 如是,则执行142 :从所述方法调用堆栈数据库读取相应的业务表单对象参数以 完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到 该业务表单控制状态信息,执行"接受"操作使得业务表单控制状态信息进行转换。
[0074] 为了控制业务表单的操作以及在工作流中处理流转,在截取业务表单操作中的业 务表单对象参数后还包括:根据所述业务表单对象参数生成业务表单控制状态信息,所述 业务表单控制状态信息包括在一定操作条件下可相互转换的八种控制状态:新建状态、新 建工作流处理中状态、新建失败状态、正常状态、修改工作流处理中状态、修改失败装置、删 除工作流处理中状态以及被删除状态。
[0075] 为了屏蔽或者转换遗留系统中的业务表单显示的信息,使得能够与工作流处理能 力进行匹配,还包括遗留系统的查看业务表单数据的步骤,具体如下:
[0076] 执行遗留系统的业务表单查询方法,加载业务表单的数据;
[0077] 检查所述业务表单控制状态信息,是否包含该业务表单数据;
[0078] 如不包含,则将业务表单的数据送业务表单处理页面显示;
[0079] 如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。
[0080] 为了便于工作流处理过程中查看业务表单数据,还包括工作流处理中查看业务表 单数据的步骤,具体如下:
[0081] 在工作流处理页面中显示即将发生变化的业务表单信息;
[0082] 在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,力口 载并显示业务表单数据;
[0083] 判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类 型;
[0084] 如果是删除,则将业务表单数据送工作流处理中的页面中进行显示;
[0085] 如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表 单数据。
[0086] 本实施例还公开了一种与前述方法完全对应一致的使遗留系统具备工作流处理 能力的系统,其包括:
[0087] 业务表单操作截取模块,用于截取业务表单操作中的业务表单对象参数,并将业 务表单对象参数存储至一方法调用堆栈数据库中,所述业务表单对象参数包括调用类名、 调用方法名和调用方法参数;
[0088] 工作流判断模块,用于根据所述业务表单对象参数,判断该业务表单操作是否需 要进行工作流处理,如否,则执行完成业务表单逻辑操作模块,如是,则执行工作流发起与 结束判断模块;
[0089] 完成业务表单逻辑操作模块,用于从所述方法调用堆栈数据库读取相应的业务表 单对象参数以完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调 用;
[0090] 工作流发起和结束判断模块,用于发起并执行工作流,然后判断所述工作流是否 成功结束,如否,则执行失败结束模块,如是,则执行成功结束模块;
[0091] 失败结束模块,用于使所述业务表单操作以失败结束,同时获取到该业务表单控 制状态信息,执行"拒绝"操作使得业务表单控制状态信息进行转换;
[0092] 成功结束模块,用于从所述方法调用堆栈数据库读取相应的业务表单对象参数以 完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到 该业务表单控制状态信息,执行"接受"操作使得业务表单控制状态信息进行转换。
[0093] 为了控制业务表单的操作以及在工作流中处理流转,所述业务表单操作截取模 块,在截取业务表单操作中的业务表单对象参数后还包括:根据所述业务表单对象参数生 成业务表单控制状态信息,所述业务表单控制状态信息包括在一定操作条件下可相互转换 的八种控制状态:新建状态、新建工作流处理中状态、新建失败状态、正常状态、修改工作流 处理中状态、修改失败装置、删除工作流处理中状态以及被删除状态。
[0094] 为了屏蔽或者转换遗留系统中的业务表单显示的信息,使得能够与工作流处理能 力进行匹配,还包括遗留系统的查看业务表单数据的模块,用于具体执行如下动作:
[0095] 执行遗留系统的业务表单查询方法,加载业务表单的数据;
[0096] 检查所述业务表单控制状态信息,是否包含该业务表单数据;
[0097] 如不包含,则将业务表单的数据送业务表单处理页面显示;
[0098] 如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。
[0099] 为了便于工作流处理过程中查看业务表单数据,还包括工作流处理中查看业务表 单数据的模块,用于具体执行如下动作:
[0100] 在工作流处理页面中显示即将发生变化的业务表单信息;
[0101] 在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,力口 载并显示业务表单数据
[0102] 判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类 型;
[0103] 如果是删除,则将业务表单数据送工作流处理中的页面中进行显示;
[0104] 如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表 单数据。
[0105] 当然上述使遗留系统具备工作流处理能力的方法还可以将其划分为四个阶段的 处理流程:工作流发起阶段流程、工作流完成阶段流程、工作流处理中的业务表单数据查看 流程、遗留系统中业务表单数据查看流程。
[0106] 其中,工作流发起阶段流程的主要作用是对遗留业务表单操作进行截取,并插入 工作流发起的逻辑。比如新建报销单操作时,需要将原有的业务逻辑进行截取,并发起新建 报销单的工作流处理。
[0107] 其中,工作流完成阶段流程的主要作用是在工作流完成的基础上,完成对业务表 单的操作。比如新建报销单工作流处理完成时,需要继续执行之前截取的业务逻辑操作,完 成报销单的新建操作。
[0108] 其中,工作流处理中的业务表单数据查看流程的主要作用是在工作流处理中,处 理人要查看的业务表单需要做进一步的处理才能符合显示要求。比如新建报销单操作后, 由于在工作流发起阶段中截取了新建报销单操作,使得在报销单库中并不存在该报销单, 而是存储在另外的数据库中,那么当需要在工作流处理中查看该新建的报销单信息时,就 必须进行额外的处理,才能看到该新建的报销单信息。
[0109] 其中,遗留系统中业务表单数据查看流程的主要作用是屏蔽或者转换遗留系统中 的业务表单显示的信息,使得能够与工作流处理能力进行匹配。比如将报销单的报销金额 从1000元修改为2000元,遗留系统修改完毕之后就马上生效,并且修改后的报销单金额 2000元能够被财务专员看到了。但是如果添加了工作流处理能力,那么该报销单金额2000 元是不能被财务专员马上查看到的,必须等到整个工作流处理完成之后,才能看到2000 J Li 〇
[0110] 如图2所示,工作流发起阶段具体包括以下步骤:
[0111] 步骤S110,点击业务表单的按钮,将会执行后端的业务逻辑操作。常用的业务逻辑 操作有新建、删除、修改、查看等。比如,点击请假表单的"提交"按钮,那么对应后端的新建 操作逻辑会将该请假表单的数据存入到数据库中。
[0112] 步骤S120,截取业务表单操作中的业务表单对象参数,基于该业务表单对象生成 业务表单控制状态信息,按照面向对象思想,执行业务表单控制状态信息对象的提交操作, 在该对象的提交操作中,主要是改变业务表单的控制状态和设置变化后的业务表单数据。 截取参数一般可以采用Α0Ρ(面向方面编程)技术,将方法的参数抓取出来。
[0113] 步骤S130,判断该业务表单操作是否需要进行工作流处理。如果不进行工作流处 理,则执行步骤S140,否则执行步骤S160。
[0114] 步骤S140,完成S110中的业务表单逻辑操作。
[0115] 步骤S150,按照面向对象思想,将S120中的业务表单控制状态信息作为对象,执 行该对象的接受操作。在该对象的接受操作中,主要是改变业务表单的控制状态和清空变 化后的业务表单数据。
[0116] 步骤S160,停止业务表单的后端逻辑操作,并将该后端逻辑操作的方法调用堆栈 信息进行保存。方法调用堆栈信息的保存使得工作成功完成时,能够再次被调出来和执行, 完成业务表单的逻辑操作。方法调用堆栈信息包括调用方法名、方法参数对象等。如果是 面向对象的语言比如Java编写的,还包括调用类的名称。
[0117] 步骤S170,发起工作流。
[0118] 如图3所示,工作流完成阶段具体包括以下步骤:
[0119] 步骤S210,判断工作流是否成功结束,如果以失败结束,则执行步骤S220,如果以 成功结束则执行步骤S240。
[0120] 步骤S220,将业务表单操作对应的方法堆栈丢弃,使得业务表单的操作失败。
[0121] 步骤S230,按照面向对象思想,将S120中的业务表单控制状态信息作为对象,执 行该对象的拒绝操作。在该对象的拒绝操作中,主要是改变业务表单的控制状态和清空变 化后的业务表单数据。
[0122] 步骤S240,取出方法调用堆栈,继续执行业务表单的操作,使得业务表单的操作成 功。比如执行新建报销单的操作,在步骤S130中判断该新建报销单需要执行工作流操作, 并在步骤S160将新建报销单的后端逻辑操作的方法调用堆栈进行了保存。在步骤S240 时,将之前保存的调用堆栈取出来,并执行,使得新建报销单最终生效,并能够被用户所查 看到。
[0123] 步骤S250,按照面向对象思想,将S120中的业务表单控制状态信息作为对象,执 行该对象的接受操作。在该对象的接受操作中,主要是改变业务表单的控制状态和清空变 化后的业务表单数据。
[0124] 如图4所示,遗留系统的查看业务表单数据的流程具体包括以下步骤:
[0125] 步骤S310,执行遗留系统的业务表单查询方法,加载业务表单的数据。比如,根据 报销单的ID,查询对应的报销单的信息。
[0126] 步骤S320,检查S120中的业务表单控制状态信息,是否包含该业务表单数据,如 果不包含则执行步骤S340,如果包含则执行步骤S330。
[0127] 步骤S330,根据业务表单控制状态信息,修改业务表单的状态显示。比如业务表单 中有一个"状态"表单域,根据控制状态信息将其设置为"修改审批中"。
[0128] 步骤S340,将业务表单的数据显示到页面上。
[0129] 如图5所示,工作流处理中查看业务表单数据的流程具体包括以下步骤:
[0130] 步骤S410,工作流处理用户点击进入某一个业务表单的工作流处理页面,在其中 将显示即将发生变化的业务表单信息。比如,新建报销单的工作流处理页面中,将报销单的 信息显示出来。
[0131] 步骤S420,系统在接收到工作流处理页面显示请求后,将执行遗留系统的业务表 单查询方法,加载并显示业务表单数据。
[0132] 步骤S430,业务表单操作有新建、删除和修三种基本类型,判断业务表单操作类 型,如果是进行的业务表单的删除操作的工作流,则执行步骤S450,如果是进行的业务表单 新建和修改的工作流,则执行步骤S440。
[0133] 步骤S440,步骤S420加载的业务表单数据替换为新建或修改后的业务表单数据。 新建或修改后的业务表单数据也就是步骤S120中截取的业务表单对象参数。
[0134] 步骤S450,将业务表单数据显示到工作流处理中的页面中。
[0135] 同样,前述使遗留系统具备工作流处理能力的系统,还可以按照以下方式进行划 分:主要包含相关的数据库表、工作流发起模块、工作流完成模块和业务表单数据查看转换 模块。
[0136] 数据库表包括方法调用堆栈库210、业务表单控制信息库220、业务表单库230,见 图6,图7,图8。
[0137] 方法调用堆栈库210对业务表单操作的后端操作逻辑的方法执行堆栈进行了存 储,主要包括调用类、调用方法名、调用方法参数集合信息。
[0138] 比如新建请假表单的后端操作逻辑的执行方法为:LeaveFormService. newLeaveForm(LeaveForm form),则调用类为 LeaveFormService,调用方法名为 newLeaveForm,调用方法名参数集合为LeaveForm form。
[0139] 业务表单控制信息库220对业务表单控制状态信息进行了存储,主要包含业务表 单类型、业务表单id、变化后的业务表单数据、业务表单的控制状态等四个字段。
[0140] 业务表单类型字段可以区分业务表单类型,使得业务表单控制信息库220能够存 储任意类型的业务表单的控制状态信息。
[0141] 业务表单id字段可以区分同一个业务表单类型中的不同业务表单。
[0142] 变化后的业务表单数据字段用来暂存新建和修改的业务表单数据。对于新建和修 改操作,在进行工作流处理时,其业务表单数据内容是不能生效的,必须当工作流以成功完 成时,业务表单的新建和修改操作才能生效。变化后的业务表单数据字段可以采用序列化 的方式将业务表单的数据信息整体转换成二进制字节码并进行存储。
[0143] 业务表单的控制状态主要有八个,见图9,主要包含NewState (新建状 态)、NewProcessState (新建工作流处理中状态)、NewFailState (新建失败状 态)、NormalState (正常状态)、ModifyProcessState (修改工作流处理中状态)、 ModifyFailState (修改失败状态)、DelProcessState (删除工作流处理中状态)、 DeletedState(被删除状态)状态,每个状态之间在一定的操作条件下能够进行转移。操作 包括提交、删除、接受和拒绝四种操作。其中提交操作可以用来处理新建和修改操作,删除 操作用来处理删除操作,接受和拒绝操作能够用来处理新建、修改和删除操作。
[0144] 优选的,业务表单的控制状态可以根据需要进行添加,比如 ModifyWaitProcessState,表示还没有经过一次工作流处理的修改业务表单状态。
[0145] 优选的,DeletedState状态不是必须的。当业务表单的删除之后,可以从业务表 单库中完全删除。
[0146] 按照面向对象思想,业务表单控制状态信息不但可以包含业务表单类型、业务表 单id、变化后的业务表单数据、业务表单的控制状态等四个属性,还包含提交操作、接受操 作和拒绝操作。
[0147] 在操作提交处理器110、操作接受处理器130、操作拒绝处理器160中将基于业务 表单的控制状态来进行业务表单处理操作控制。业务表单处理操作控制的含义是当业务表 单处于不同的控制状态时,控制业务表单能够执行的操作行为。
[0148] 比如,当处于NormalState时,执行提交操作,将状态迁移到 ModifyProcessState,并且在ModifyProcessState不能再进行提交操作,只能进行接受和 拒绝操作。基于这样的状态控制,就能够实现同一个业务表单不能在同时被多次修改,避免 了业务表单操作可能造成的数据冲突。
[0149] 业务表单库230存储了任意类型的、异构结构的业务表单。异构结构的含义是表 单域、表单标签和表单按钮时不同的。比如请假表单包含表单标签"请假时间",报销表单包 含表单标签"报销金额"。
[0150] 工作流发起模块包含遗留系统的业务表单操作执行器110、操作提交处理器120、 工作流发起拦截器130、操作接受处理器140,见图6。
[0151] 遗留系统的业务表单操作执行器110处理业务表单的操作逻辑,主要参数为变化 后的业务表单数据。如果是新建操作,则该业务表单数据是构造出来的数据。如果是修改 操作,则该业务表单数据是根据旧业务表单数据修改之后的数据。如果是删除操作,则该业 务表单数据是旧业务表单数据。
[0152] 操作提交处理器120从业务表单控制信息库220中查询是否有当前业务表单的控 制信息。如果没有对应的业务表单的控制信息,或者如果有对应的业务表单的控制信息,并 且业务表单控制状态是 NewState、NewFailState、NormalState 和 ModifyFailState 这四种 状态之一,则根据当前业务表单数据生成业务表单控制状态信息,并且执行"提交"操作。
[0153] 如果业务表单操作类型为新建操作,则执行"提交"操作后,业务表单控制状态将 转换到状态NewProcessState,并且存储到业务表单控制信息库220中。
[0154] 如果业务表单操作类型为修改操作,则执行"提交"操作后,业务表单控制状态将 转换到状态ModifyProcessState,并且存储到业务表单控制信息库220中。
[0155] 如果业务表单操作类型为删除操作,则执行"提交"操作后,业务表单控制状态将 转换到状态DelProcessState,并且存储到业务表单控制信息库220中。
[0156] 如果业务表单控制信息库220中查询到有当前业务表单的控制信息,并且业务表 单控制状态不是 NewState、NewFailState、NormalState 和 ModifyFailState 这四种状态, 则抛出异常提示"不能执行业务表单的XXX操作",并中断后续模块的执行。
[0157] 工作流发起拦截器130拦截遗留系统的业务表单操作执行器110中参数,包括操 作类型、调用类、调用方法名、调用方法参数集合,根据这些参数判断是否要发起工作流。如 果要发起工作流,则将以上参数保存到方法调用堆栈210中。
[0158] 如果不需要发起工作流,操作接受处理器140基于操作提交处理器120中获取的 业务表单控制状态信息执行"接受"操作,并且执行完业务表单的操作,将业务表单数据存 入业务表单库230中。
[0159] 如果业务表单操作类型为新建操作,则执行"接受"操作后,业务表单控制状态将 转换到状态NormalState,并且存储到业务表单控制信息库220中。
[0160] 如果业务表单操作类型为修改操作,则执行"接受"操作后,业务表单控制状态将 转换到状态NormalState,并且存储到业务表单控制信息库220中。
[0161] 如果业务表单操作类型为删除操作,则执行"接受"操作后,业务表单控制状态将 转换到状态DeletedState,并且存储到业务表单控制信息库220中。
[0162] 优选的,当业务表单控制状态处于NormalState时,可以将该业务表单控制状态 从220中删除。
[0163] 工作流结束模块包含工作流完成处理器150、操作接受处理器140、操作拒绝处理 器 160。
[0164] 当工作流完成时,工作流完成处理器150从业务表单控制信息库220和方法调用 堆栈库210中分别取出业务表单控制状态信息和业务表单操作方法调用堆栈。
[0165] 如果是以成功结束,将方法调用堆栈210中取出保存的调用堆栈,采用反射技术 执行,将业务表单数据存入业务表单库230中。同时,在操作接受处理器140中将业务表单 控制状态信息执行"接受"操作。
[0166] 如果业务表单操作类型为新建操作,则执行"接受"操作后,业务表单控制状态将 转换到状态NormalState,并且存储到业务表单控制信息库220中。
[0167] 如果业务表单操作类型为修改操作,则执行"接受"操作后,业务表单控制状态将 转换到状态NormalState,并且存储到业务表单控制信息库220中。
[0168] 如果业务表单操作类型为删除操作,则执行"接受"操作后,业务表单控制状态将 转换到状态DeletedState,并且存储到业务表单控制信息库220中。
[0169] 优选的,当业务表单控制状态处于NormalState时,可以将该业务表单控制状态 从220中删除。
[0170] 如果是以失败结束,在操作拒绝处理器160中将业务表单控制状态信息执行"拒 绝"操作。
[0171] 如果业务表单操作类型为新建操作,则执行"拒绝"操作后,业务表单控制状态将 转换到状态NewFailState,并且存储到业务表单控制信息库220中。
[0172] 如果业务表单操作类型为修改操作,则执行"拒绝"操作后,业务表单控制状态将 转换到状态NormalState,并且存储到业务表单控制信息库220中。
[0173] 优选的,将该业务表单控制信息进行拷贝生成一个新的业务表单控制信息,其中 业务表单类型、业务表单id、变化后的业务表单数据这三个字段值不变,将业务表单的控制 状态字段设置为ModifyFailState。用户可以基于该修改失败的业务表单数据进行编辑后, 再次提交。
[0174] 如果业务表单操作类型为删除操作,则执行"拒绝"操作后,业务表单控制状态将 转换到状态NormalState,并且存储到业务表单控制信息库220中。
[0175] 优选的,当业务表单控制状态处于NormalState时,可以将该业务表单控制状态 从220中删除。
[0176] 业务表单数据查看转换模块包含业务表单信息查看器310和业务表单信息替换 器 320。
[0177] 业务表单信息查看器310从业务表单数据库230中取出业务表单数据,并且根据 业务表单控制信息库210来判断是否要进行业务表单数据的替换。
[0178] 当在工作流处理页面中查看业务表单数据,并且业务表单数据在业务表单控制信 息库210中有对应的控制信息时,并且控制状态为NewProcessState或NewFailState时, 则由业务表单信息替换器320将业务表单控制信息中的变化后的业务表单数据取出来,采 用反射技术构造业务表单页面的显示字段。
[0179] 当在工作流处理页面中查看业务表单数据,并且业务表单数据在业务表单 控制信息库210中有对应的控制信息时,并且控制状态为ModifyProcessState或 ModifyFailState时,则由业务表单信息替换器320将业务表单控制信息中的变化后的业 务表单数据取出来,采用反射技术替换从业务表单数据库230中取出业务表单数据,并显 示在业务表单页面上。
[0180] 当在工作流处理页面中查看业务表单数据,并且业务表单数据在业务表单控制信 息库210中有对应的控制信息时,并且控制状态为DelProcessState时,不进行业务表单数 据的替换,直接显示从业务表单数据库230中取出业务表单数据。
[0181] 当在遗留业务表单页面中查看业务表单数据,业务表单的控制状态只能处于 NormalState、ModifyProcessState 和 DelProcessState。
[0182] 当处于NormalState时,业务表单信息替换器320不需要进行任何替换。
[0183] 当处于ModifyProcessState和DelProcessState时,业务表单信息替换器320需 要ModifyProcessState和DelProcessState状态显不在业务表单页面中。
[0184] 下面以新建请假表单操作与工作流处理结合的实例来对技术方案进行说明。
[0185] 发起新建请假单工作流
[0186] 执行新建请假表单操作,110执行后端业务逻辑操作。
[0187] 操作提交处理器120先从220中检查,发现不存在该请假表单的控制状态信息,则 根据请假表单的数据,生成业务表单控制状态信息,其中业务表单类型=请假表单,业务表 单id=新建的请假表单id,变化后的业务表单数据=请假表单数据进行序列化后的二进制 字节码,业务表单的控制状态=NewState。
[0188] 操作提交处理器120对该业务表单控制状态信息执行"提交"操作,使得业务表单 控制状态信息中的业务表单的控制状态变为NewProcessState。
[0189] 工作流发起拦截器130对请假表单的新建操作进行拦截,发现该操作需要进行工 作流处理,新建请假到的方法为 LeaveFormService.newLeaveForm(LeaveForm form)。则 130生成新建请假表单操作的方法调用堆栈信息,其中调用类名=LeaveFormService,调用 方法名=newLeaveForm、方法参数=LeaveForm form。并将该信息存入方法调用堆栈库210 中。
[0190] 工作流处理中查看请假单信息
[0191] 业务表单信息查看器310从业务表单库230中查询是否有新建请假单数据,发现 没有。则业务表单信息替换器320从业务表单控制信息库210中获取到新建请假单的控制 状态信息,并提取其中的变化后的业务表单数据,采用反序列化的方法恢复其数据表示格 式,最后再采用反射技术实现到请假单页面数据的加载与展示。
[0192] 成功完成新建请假单工作流
[0193] 新建请假单工作流处理完成时,工作流完成器150首先从业务表单控制信息 库220中获取之前存储的新建请假单的状态控制信息,操作接受处理器140在状态控 制信息上执行"接受"操作,使得业务表单控制状态信息中的业务表单的控制状态变为 NormalState。
[0194] 工作流完成器150在从方法调用堆栈库210中提取新建请假单的操作方法堆 栈,其中调用类名=LeaveFormService,调用方法名=newLeaveForm、方法参数=LeaveForm form。并米用反射技术,重新调用执行 LeaveFormService. newLeaveForm (LeaveForm form),使得该请假单的数据存入业务表单库230中。
[0195] 以上详细描述了本发明的较佳具体实施例,应当理解,本领域的普通技术无需创 造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本【技术领域】中技术人员 依本发明构思在现有技术基础上通过逻辑分析、推理或者根据有限的实验可以得到的技术 方案,均应该在由本权利要求书所确定的保护范围之中。
【权利要求】
1. 一种使遗留系统具备工作流处理能力的方法,其特征在于包括: 截取业务表单操作中的业务表单对象参数,并将业务表单对象参数存储至一方法调用 堆栈数据库中; 根据所述业务表单对象参数,判断该业务表单操作是否需要进行工作流处理; 如否,则从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该业务表单 操作,然后存储至业务表单数据库中以供其他用户查询调用; 如是,则发起并执行工作流,然后判断所述工作流是否成功结束; 如否,则使所述业务表单操作以失败结束,同时获取到该业务表单控制状态信息,执行 "拒绝"操作使得业务表单控制状态信息进行转换; 如是,则从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成该业务表单 操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到该业务表单控制 状态信息,执行"接受"操作使得业务表单控制状态信息进行转换。
2. 根据权利要求1所述的使遗留系统具备工作流处理能力的方法,其特征在于: 所述业务表单对象参数包括调用类名、调用方法名和调用方法参数。
3. 根据权利要求1所述的使遗留系统具备工作流处理能力的方法,其特征在于: 在截取业务表单操作中的业务表单对象参数后还包括:根据所述业务表单对象参数生 成业务表单控制状态信息,所述业务表单控制状态信息包括在一定操作条件下可相互转换 的八种控制状态:新建状态、新建工作流处理中状态、新建失败状态、正常状态、修改工作流 处理中状态、修改失败装置、删除工作流处理中状态以及被删除状态。
4. 根据权利要求3所述的使遗留系统具备工作流处理能力的方法,其特征在于还包括 遗留系统的查看业务表单数据的步骤,具体如下: 执行遗留系统的业务表单查询方法,加载业务表单的数据; 检查所述业务表单控制状态信息,是否包含该业务表单数据; 如不包含,则将业务表单的数据送业务表单处理页面显示; 如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。
5. 根据权利要求3所述的使遗留系统具备工作流处理能力的方法,其特征在于还包括 工作流处理中查看业务表单数据的步骤,具体如下: 在工作流处理页面中显示即将发生变化的业务表单信息; 在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,加载并 显示业务表单数据; 判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类型; 如果是删除,则将业务表单数据送工作流处理中的页面中进行显示; 如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表单数 据。
6. -种使遗留系统具备工作流处理能力的系统,其特征在于包括: 业务表单操作截取模块,用于截取业务表单操作中的业务表单对象参数,并将业务表 单对象参数存储至一方法调用堆栈数据库中; 工作流判断模块,用于根据所述业务表单对象参数,判断该业务表单操作是否需要进 行工作流处理,如否,则执行完成业务表单逻辑操作模块,如是,则执行工作流发起与结束 判断模块; 完成业务表单逻辑操作模块,用于从所述方法调用堆栈数据库读取相应的业务表单对 象参数以完成该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用; 工作流发起和结束判断模块,用于发起并执行工作流,然后判断所述工作流是否成功 结束,如否,则执行失败结束模块,如是,则执行成功结束模块; 失败结束模块,用于使所述业务表单操作以失败结束,同时获取到该业务表单控制状 态信息,执行"拒绝"操作使得业务表单控制状态信息进行转换; 成功结束模块,用于从所述方法调用堆栈数据库读取相应的业务表单对象参数以完成 该业务表单操作,然后存储至业务表单数据库中以供其他用户查询调用,同时获取到该业 务表单控制状态信息,执行"接受"操作使得业务表单控制状态信息进行转换。
7. 根据权利要求6所述的使遗留系统具备工作流处理能力的系统,其特征在于: 所述业务表单对象参数包括调用类名、调用方法名和调用方法参数。
8. 根据权利要求6所述的使遗留系统具备工作流处理能力的系统,其特征在于: 所述业务表单操作截取模块,在截取业务表单操作中的业务表单对象参数后还包括: 根据所述业务表单对象参数生成业务表单控制状态信息,所述业务表单控制状态信息包括 在一定操作条件下可相互转换的八种控制状态:新建状态、新建工作流处理中状态、新建失 败状态、正常状态、修改工作流处理中状态、修改失败装置、删除工作流处理中状态以及被 删除状态。
9. 根据权利要求8所述的使遗留系统具备工作流处理能力的系统,其特征在于还包括 遗留系统的查看业务表单数据的模块,用于具体执行如下动作: 执行遗留系统的业务表单查询方法,加载业务表单的数据; 检查所述业务表单控制状态信息,是否包含该业务表单数据; 如不包含,则将业务表单的数据送业务表单处理页面显示; 如包含,则根据业务表单控制状态信息,修改业务表单处理页面的状态。
10. 根据权利要求8所述的使遗留系统具备工作流处理能力的系统,其特征在于还包 括工作流处理中查看业务表单数据的模块,用于具体执行如下动作: 在工作流处理页面中显示即将发生变化的业务表单信息; 在接收到工作流处理页面显示请求后,将执行遗留系统的业务表单查询方法,加载并 显示业务表单数据 判断业务表单操作类型,所述业务表单操作类型包括新建、删除和修改三种类型; 如果是删除,则将业务表单数据送工作流处理中的页面中进行显示; 如果是新建或修改,则将前述加载的业务表单数据替换为新建或修改后的业务表单数 据。
【文档编号】G06Q10/06GK104217271SQ201310217934
【公开日】2014年12月17日 申请日期:2013年6月4日 优先权日:2013年6月4日
【发明者】李引, 袁峰 申请人:广州中国科学院软件应用技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1