一种无侵入式的业务表单工作流化的实现方法与装置制造方法

文档序号:6503721阅读:148来源:国知局
一种无侵入式的业务表单工作流化的实现方法与装置制造方法
【专利摘要】本发明属于业务表单应用【技术领域】,具体公开了一种无侵入式的业务表单工作流化的实现方法与装置。该装置包括:业务表单数据库,用于预存多种类型的、异构结构的业务表单;工作流模板数据库,用于预存多种工作流模板;工作流关系匹配数据库,用于存储工作流模板与业务表单之间的匹配关系信息;以及关联配置器,用于读取所述业务表单库和工作流模板库中数据,将其中的工作流模板与业务表单进行两两关联,并将关联信息存入所述工作流关系匹配数据库中。本发明方法主要就是将业务表单数据库中的业务表单与工作流模板数据库中的工作流模板建立两两关联关系,然后执行和调用数据完成工作流。采用本发明,可以提高业务表单应用系统开发效率。
【专利说明】一种无侵入式的业务表单工作流化的实现方法与装置

【技术领域】
[0001] 本发明属于业务表单应用【技术领域】,具体涉及一种无侵入式的业务表单工作流化 的实现方法与装置。

【背景技术】
[0002] 工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后 组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解 决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则 自动传递文档、信息或者任务。简单地说,工作流就是一系列相互衔接、自动进行的业务活 动或任务。我们可以将整个业务过程看作是一条河,其中流过的河水就是待审核的业务表 单。
[0003] 工作流引擎(Work Flow Engine)是为了实现工作流的操纵方式,将流程操作处理 进行了封装,对应用系统提供服务,使得业务系统能够实现工作流的操作方式。
[0004] 业务表单,也可以叫电子表单,是采用信息化的手段对现实世界中纸张表单(比 如请假单、报销单)的抽象。它是应用系统中进行数据采集和展示的主要方式和手段,也是 工作流系统中主要处理对象,主要包含三部分内容:
[0005] (1)表单标签:这里面包含了处理表单数据所用CGI/JSP/ASP等程序的URL以及 数据提交到服务器的方法。
[0006] (2)表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选 择框和文件上传框等。
[0007] (3)表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上 的CGI/JSP/ASP等脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处 理工作。其中提交按钮就对应着表单的新建、修改、删除等操作。
[0008] 许多公司采用纸张表单,手工传递的方式,一级一级审批签字,工作效率非常低 下,对于统计报表功能则不能实现。而采用工作流引擎,使用者只需在电脑上填写有关业务 表单,会按照定义好的流程模板自动往下跑,下一级审批者将会收到相关资料,并可以根据 需要进行修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了 公司的核心竞争力。
[0009] 目前的应用系统的业务表单的实现方式,一般是针对每一个业务表单,都单独定 义一个工作流模板,并且将业务表单处理逻辑与工作流处理逻辑混在一起。在个性化需求 不断丰富的今天,一个电子表单系统需要的表单将越来越多,那么开发时需要定义的工作 流也随之增加,从而使得电子表单系统开发工作量不断加大。
[0010] 举例说明如下
[0011] (1)请假者请假3天,他需要走的工作流程是:
[0012] 请假者发起请假3天的请求表单一直属领导审批一审批结果(批准或拒绝)一结 束。
[0013] (2)请假者请假3天以上,他需要走的工作流程是:
[0014] 请假者发起请假3天以上的请求表单一直属领导审批一审批结果拒绝一结束
[0015] 一审批结果批准一上一级领 导审批一审批结果(批准或拒绝)一结束。即是请假3天以上要比请假3天多一级领导审 批。
[0016] (3)财务报销1000元以内,他需要走的工作流程是:
[0017] 报销者发起请求表单一直属领导审批一审批结果(批准或拒绝)一结束。
[0018] (4)财务报销1000元以上,他需要走的工作流程是:
[0019] 报销者发起请求表单一直属领导审批一审批结果拒绝一结束
[0020] 一审批结果批准一上一级领导审批一审批 结果(批准或拒绝)--结束。即是报销1000元以上要比报销1000元以内多一级领导审批。
[0021] 以上四种不同表单,需要分别开发四个工作流模板来进行一一对应,使得工作流 模板无法被复用,也使得业务开发人员不能专注于业务逻辑本身的开发,造成开发效率低 下。
[0022] 造成这种问题的本质原因是在已有的支持工作流的业务表单系统中,每个业务表 单的业务逻辑都与工作流引擎进行了紧密耦合,使得编写业务逻辑时需要直接地调用底层 的工作流引擎。


【发明内容】

[0023] 为了解决上述问题,本发明的目的在于提供一种无侵入式的业务表单工作流化的 实现方法与装置,以提高业务表单应用系统开发效率。
[0024] 本发明所谓的无侵入式的含义,就是在不改动业务表单原有的表单标签、表单域、 表单按钮的情况下,使得业务表单能够在工作流中进行处理,从而减少应用系统编程的开 发。
[0025] 为了实现上述发明目的,本发明采用的技术方案如下:
[0026] 一种无侵入式的业务表单工作流化的实现装置,该装置包括:
[0027] 业务表单数据库,用于预存多种类型的、异构结构的业务表单;
[0028] 工作流模板数据库,用于预存多种工作流模板;
[0029] 工作流关系匹配数据库,用于存储工作流模板与业务表单之间的匹配关系信息; 以及
[0030] 关联配置器,用于读取所述业务表单库和工作流模板库中数据,将其中的工作流 模板与业务表单进行两两关联,并将关联信息存入所述工作流关系匹配数据库中。
[0031] 进一步的,该装置还包括:
[0032] 方法调用堆栈库,用于对业务表单操作的后端操作逻辑的方法执行堆栈进行存 储;
[0033] URL截取器,用于截取用户对业务表单操作产生的URL访问链接;
[0034] 方法截取器,用于截取URL访问链接对应后端的执行方法的上下文信息;
[0035] 工作流判定器,用于根据URL拦截器和方法截取器传入的URL访问链接、业务表 单、业务表单操作类型参数,从工作流关系匹配数据库中查询是否有关联的工作流模板id 存在,如果存在关联的工作流模板id,则利用工作流模板id从工作流模板数据库中查询出 来传输给工作流发起器;
[0036] 工作流发起器,用于根据传入的工作流模板id和业务表单,调用工作流引擎来发 起工作流;
[0037] 工作流引擎,用于根据工作流运行实例数据库中的工作流运行实例信息,将业务 表单数据库中的业务表单分派给相应的节点处理人进行处理;
[0038] 调用堆栈保存器,用于将方法截取器截取的上下文信息进行处理并存入方法调用 堆栈库中;以及
[0039] 工作流完成处理器,用于处理工作流结束工作。
[0040] 进一步的,所述上下文信息包括URL访问链接、业务表单和操作类型。
[0041] 进一步的,所述工作流完成处理器处理工作流结束工作,具体是:如工作流以失败 结束,则从方法调用堆栈库中删除之前存入的方法执行堆栈,业务表单操作失败;如工作流 以成功结束,则从方法调用堆栈库中调出之前存入的方法执行堆栈,采用反射的方式恢复 之前的运行场景并继续执行,使得业务表单操作成功完成。
[0042] 进一步的,所述工作流关系匹配数据库的数据结构中主要包括四个字段,分别是 业务表单类型、业务表单的id、业务表单的操作类型和工作流模板id ;所述业务表单类型, 用于区分不同类型的业务表单;所述业务表单的id,用于对同一类型的业务表单进行区 分;所述业务表单的操作类型,包括添加、修改和删除三种类型;工作流模板id,用于唯一 标识工作流程模板。
[0043] 进一步的,所述工作流关系匹配数据库的数据结构中还包括表单属性过滤表达 式,用于根据当前业务表单信息来自动进行工作流模板的选择。
[0044] 进一步的,所述关联配置器将工作流模板与业务表单进行两两关联,具体是:将业 务表单数据库中的业务表单的标识id与工作流模板数据库中的工作流模板的标识id建立 映射关系,使得输入业务表单的标识id可以调出工作流模板的标识id或者输入工作流模 板的标识id可以调出业务表单的标识id。
[0045] 进一步的,所述工作流模板包含工作流的节点、节点中的处理人和节点处理人的 权限。
[0046] 一种无侵入式的业务表单工作流化的实现方法,包括以下步骤:
[0047] 将业务表单数据库中的业务表单与工作流模板数据库中的工作流模板建立两两 关联关系;
[0048] 接收用户点击业务表单按钮的命令,执行后端的业务逻辑操作;
[0049] 截取业务表单操作的上下文信息;
[0050] 根据截取的所述上下文信息,查询该业务表单是否存在与其具有关联关系的工作 流模板;
[0051] 如不存在,则业务表单操作完成;
[0052] 如存在,则停止业务表单的操作,并将该操作的调用堆栈信息进行保存,并顺序执 行后续步骤;
[0053] 调用工作流引擎,并根据查询到的工作流模板生成工作流实例;
[0054] 利用工作流引擎根据工作流模板的定义,调度给不同的节点处理人进行工作流处 理;
[0055] 判断工作流是否结束,如未结束则返回上一步循环执行;如结束,则顺序执行后续 步骤;
[0056] 判断工作流是否成功结束;
[0057] 如是,则丢弃之前存入方法调用堆栈中的信息,并以失败结束业务表单的操作;
[0058] 如否,则获取之前存入方法调用堆栈中的信息,继续执行业务表单的操作方法,使 得业务表单的操作成功完成。
[0059] 进一步的,所述将业务表单数据库中的业务表单与工作流模板数据库中的工作流 模板建立关联关系,具体是:将业务表单数据库中的业务表单的标识id与工作流模板数据 库中的工作流模板的标识id建立映射关系,使得输入业务表单的标识id可以调出工作流 模板的标识id或者输入工作流模板的标识id可以调出业务表单的标识id。
[0060] 进一步的,所述上下文信息包括URL访问链接、业务表单和操作类型。
[0061] 通过本发明装置或方法,针对现有技术中的请假3天、3天以上,报销1000元以内 和1000元以上的流程处理情况,仅仅需要在表单数据库中建立一个请假表单和一个报销 表单即可,不需要在表单处理方法中添加判断3天和1000元的逻辑。在工作流模板数据库 中建立两级审批和三级审批两个工作流,通过关联配置器建立二者的关联关系即可。如请 假两天就调用两级审批流程,报销800元也调用相同的两级审批流程。同样,请假三天以上 和报销1000元以上都调用三级审批流程即可。进而将传统的业务表单和工作流分离,改变 传统业务表单和工作流一对一绑定的关系,根据实际应用的需要将不同表单与工作流关联 起来即可完成多种不同类型的业务。
[0062] 本发明在包含有多个工作流的工作流数据库基础上,可以方便的设定多个不同的 业务表单。甚至工作流数据库中预设有足够数量的工作流时,在此基础上程序开发员甚至 可以不用特别去设计工作流,直接根据实际需要进行调用和配置即可,比如:工作流模板数 据库中有一个二级审批的工作流,那么无论是请假3天以下,还是报销1000元以内都可以 直接调用该工作流模板即可。不需要对每一个业务类型定义一个工作流,进而大大提高应 用程序开发效率,缩小程序编写的时间,缩短了表单在实际中应用的时间。
[0063] 本发明实现了业务表单与工作流的分离,支持它们的多对多对应关系,并且实现 了无侵入式的将业务表单操作工作流化的方案。
[0064] 本发明成果将达到以下效果:
[0065] (1)业务表单与工作流模板可以分开定义,并且支持它们之间的任意配对;
[0066] (2)业务表单的新建、修改和删除操作都能在不改动代码的情况下,通过配置实现 是否走工作流、在什么时候走工作流、走什么工作流的逻辑;
[0067] (3)业务表单操作与工作流进行了解耦,使得业务表单操作代码的开发无需了解 底层到底是由什么工作流引擎驱动,可与任何工作流引擎结合;
[0068] (4)提高了业务系统开发的效率,降低了缺陷产生率。

【专利附图】

【附图说明】
[0069] 此【专利附图】
附图
【附图说明】所提供的图片用来辅助对本发明的进一步理解,构成本申请的一部 分,并不构成对本发明的不当限定,在附图中:
[0070] 图1为配置定义阶段流程示意图;
[0071] 图2为工作流发起阶段流程示意图;
[0072] 图3为工作流处理阶段流程示意图;
[0073] 图4为配置定义模块系统结构示意图;
[0074] 图5为工作流发起模块系统结构示意图;
[0075] 图6为工作流处理模块系统结构示意图。

【具体实施方式】
[0076] 本实施例公开了一种无侵入式的业务表单工作流化的实现方法,方法包括三个阶 段的处理流程:配置定义阶段流程、工作流发起阶段流程和工作流处理阶段流程。
[0077] 如图1所示,为本发明方法的配置定义阶段流程,包括以下两个子步骤:
[0078] 步骤S110,读取业务表单数据库中的业务表单和工作流模板数据库中的工作流模 板;
[0079] 步骤S120,将工作流模板与业务表单建立两两关联关系。将业务表单数据库中的 业务表单的标识id与工作流模板数据库中的工作流模板的标识id建立映射关系,使得输 入业务表单的标识id可以调出工作流模板的标识id或者输入工作流模板的标识id可以 调出业务表单的标识id。比如,请假表单的标识id为al,工作流模板标识id为bl,本步骤 的作用就是建立a 1与b 1的映射关系,使得输入al可以调出bl,或者输入bl可以调出al。
[0080] 如图2所示,为本发明方法的工作流发起阶段所示,包括以下子步骤:
[0081] 步骤S210,接收用户点击业务表单按钮的命令,执行后端的业务逻辑操作;比如, 用户点击请假表单的"提交"按钮,那么后端的逻辑会将该请假表单的数据存入到数据库 中;
[0082] 步骤S220,截取业务表单操作的上下文信息,所示上下文信息包括URL、业务表 单、操作类型;
[0083] 步骤S230,根据截取的上下文信息,判断业务表单是否与某个工作流模板进行了 关联,即查询该业务表单是否存在与其具有关联关系的工作流模板;
[0084] 步骤S240,如果无法查询到与该业务表单相关联的工作流模板,则业务表单操作 成功完成,无需进行步骤S250和S260。
[0085] 步骤S250,如果能够查询到与该业务表单相关联的工作流模板,则停止业务表单 的操作,并将该操作的调用堆栈信息进行保存;其中,方法调用堆栈信息是一种数据结构, 其中可以包括调用方法名、方法参数对象等;如果是面向对象的语言比如Java编写的,方 法调用堆栈中还包括调用类的名称;
[0086] 步骤S260,执行发起工作流操作,也就是调用工作流引擎,传入步骤S250中查询 到的工作流模板的id,并根据模板生成工作流实例的过程;工作流引擎可以采用任意一种 工作流引擎。
[0087] 如图3所示,为本发明方法工作流处理阶段示意图,包括以下步骤:
[0088] 步骤S310,利用工作流引擎根据工作流模板的定义,调度给不同的节点处理人进 行工作流处理;
[0089] 步骤S320,判断工作流是否结束,如没有结束则返回S310循环执行;如结束,则执 行步骤S330 ;
[0090] 步骤S330,判断工作流是否成功结束,如果是成功结束,则执行S340,否则执行 S350 ;
[0091] 步骤S340,丢弃之前存入方法调用堆栈中的信息,并以失败结束业务表单的操作。
[0092] 步骤S350,获取之前存入方法调用堆栈中的信息,继续执行业务表单的操作方法, 使得业务表单的操作成功完成。
[0093] 本实施例还公开了一种业务表单无侵入式的添加工作流的装置,该装置主要包含 相关的数据库表、配置定义模块、工作流发起模块和工作流处理模块。
[0094] 其中,数据库表包括业务表单数据库、工作流模板数据库、工作流关系匹配数据 库、工作流运行实例数据库、方法调用堆栈库,见图4,图5,图6.。
[0095] 其中,业务表单库410存储了任意类型的、异构结构的业务表单。所谓的异构结构 的含义是表单域、表单标签和表单按钮不同。比如请假表单包含表单标签"请假时间",报销 表单包含表单标签"报销金额"。
[0096] 其中,工作流模板库420存储了工作流模板。工作流模板包含工作流的节点、节点 中的处理人、节点处理人的权限等信息。比如两级审批的工作流模板包含两个工作流节点, 并且是顺序执行的。
[0097] 其中,工作流关系匹配库430存储了工作流模板与业务表单之间的匹配关系信 息,使得在进行业务表单操作时,可以为其他模块提供业务表单是否走工作流的依据。工作 流关系匹配数据结构中主要包括四个字段,分别是业务表单类型、业务表单的id、业务表单 的操作类型、工作流模板id。
[0098] 其中,业务表单类型,区分不同的业务表单,比如请假单和报销单。
[0099] 其中,业务表单的id用来进一步区分不同的业务表单,比如请假天数为3天的请 假单id为100,请假天数为5天的请假单id为101。
[0100] 其中,业务表单的操作类型分为添加、修改和删除这三种类型。比如添加请假单的 操作,也就是提出请假申请的操作。当添加请假单操作完成时,也就是请假完成了。比如修 改请假单的操作,也就是基于之前已经通过的请假单,进行修改之后,再次发起请假申请。 比如将请假天数从3天修改为5天,当修改后的请假单通过时,则请假完成了。比如删除请 假单的操作,也就是取消请假。比如将5天的请假单删除,则取消请假完成。
[0101] 其中,工作流模板id是工作流模板的唯一身份标识。
[0102] 为了实现同一个业务表单可以与多个工作流模板进行绑定,可以在工作流关系匹 配数据结构中添加字段"属性过滤表达式"来根据当前业务表单相关的信息等自动进行工 作流模板的选择。比如,根据请假表单的"属性过滤表达式"进行工作流模板选择过滤的示 例。请假表单中有属性days,表示请假的天数。系统有两个工作流模板,其中工作流模板1 的id为100,包括直属上司和部门领导两级流程审批节点。工作流模板2的id为200,包 括直属上司、部门领导和单位领导三级流程审批节点。建立工作流关系匹配数据结构A,设 置属性业务表单类型=请假单,业务表单的操作类型=新建,工作流模板id=100,属性过滤 表达式="days〈=3"。建立工作流关系匹配数据结构B,设置属性业务表单类型=请假单, 业务表单的操作类型=新建,工作流模板id=200,属性过滤表达式="days>3"。用户发起 请假单申请,当请假天数days为2天时,在流程发起阶段将匹配出工作流模板id=100来发 起工作流。当用户请假天数为4天时,将匹配出工作流模板id=200来发起工作流。
[0103] 其中,工作流运行实例库450存储了一系列的根据工作流模板生成的实例。工作 流运行实例是工作流引擎执行的依据,实例中明确了节点的处理人、节点的处理权限、节点 的流向等信息。比如两级审批的工作流模板包含两个工作流节点,将其生成工作流运行实 例后,也将包含两个节点,并且节点处理人可能会根据工作流发起时的信息不同而不同。比 如,部门A的请假单的第一个节点的处理人是甲,而部门B的请假单的第一个节点的处理人 是乙。
[0104] 其中,方法调用堆栈库440对业务表单操作的后端操作逻辑的方法执行堆栈进行 了存储,主要包括调用类、调用方法名、调用方法名参数集合信息。比如新建请假表单的后 端操作逻辑的执行方法为:LeaveFormService. newLeaveForm(LeaveForm form),则调用 类为LeaveFormService,调用方法名为newLeaveForm,调研方法名参数集合为LeaveForm form。
[0105] 如图4所示,配置定义模块包含关联配置器110,关联配置器110从业务表单数据 库410和工作流模板数据库420中读取数据,将其中的工作流模板与业务表单进行两两关 联,并将关联信息存入工作流关系匹配库430中,具体的关联方法还是将业务表单数据库 中的业务表单的标识id与工作流模板数据库中的工作流模板的标识id建立映射关系,使 得输入业务表单的标识id可以调出工作流模板的标识id或者输入工作流模板的标识id 可以调出业务表单的标识id。
[0106] 如图5所示,工作流发起模块包含URL拦截器210、方法截取器220、工作流判定器 230、工作流发起器240、调用堆栈保存器250和工作流引擎260。
[0107] 用户点击业务表单按钮后,会产生一个对后台的URL访问链接,URL拦截器210对 该URL进行拦截,作为后面的工作流判定器230的参数。
[0108] URL截取器210将利用Java Servlet Filter或者其他类似的技术来对访问请求 进行截取,抽取其中的URL参数,形如:*/leaveForm. do?action=submit。
[0109] 用户点击业务表单按钮后,会产生一个对后台的URL访问链接,该URL链接对应后 端的一个执行方法,方法截取器220对该方法的上下文信息进行截取。该上下文信息包括 业务表单、调用类、调用方法名、调用方法名参数集合、业务表单操作类型。
[0110] 方法截取器220可以采用面向方面编程(Aspect Oriented Programming, Α0Ρ)的 技术来截取执行方法的上下文信息。
[0111] 根据URL拦截器210和方法截取器220传入的URL、业务表单、业务表单操作类型 参数,工作流判定器230从工作流关系匹配库430中查询是否有关联的工作流模板id存 在。如果存在关联的工作流模板id,则利用工作流模板id从工作流模板库420中查询出 来。
[0112] 工作流发起器240。根据传入的工作流模板id和业务表单,调用工作流引擎260 来发起工作流。
[0113] 调用堆栈保存器250。方法截取器220中截取的上下文信息被调用堆栈保存器250 进行处理后存入方法调用堆栈库440中。
[0114] 如图6所示,工作流处理模块包含工作流完成处理器310。
[0115] 工作流引擎260根据工作流运行实例库450中的工作流运行实例信息,将业务表 单库410中的业务表单分派给相应的节点处理人进行处理。
[0116] 如果工作流以失败结束,则从方法调用堆栈库440中删除之前存入的方法执行堆 栈,业务表单操作失败。如果工作流以成功结束,则从方法调用堆栈库440中调出之前存入 的方法执行堆栈,采用反射的方式恢复之前的运行场景并继续执行,使得业务表单操作成 功完成。
[0117] 比如,方法执行堆栈中调用类为LeaveFormService,调用方法名为 newLeaveForm,调研方法名参数集合为LeaveForm form。则采用反射方法后,将继续执行 LeaveFormService.newLeaveForm(LeaveForm form)操作。
[0118] 上述方法和装置,将业务表单和工作流分别定义和存储,应用时只需要根据需要 将二者关联起来即可,可以实现多对多的关联关系,彻底改变目前业务表单和工作流一一 绑定的方式,可以在包含有多个工作流的工作流数据库基础上,可以方便地设定多个不同 的业务表单。甚至在工作流数据库中预设有足够数量的工作流时,在此基础上程序开发员 甚至是用户可以不用特别去设计工作流,直接根据实际需要进行调用和配置即可,进而大 大提高应用程序开发效率,缩小程序编写的时间,缩短了表单在实际中应用的时间。
[0119] 以上详细描述了本发明的较佳具体实施例,应当理解,本领域的普通技术无需创 造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本【技术领域】中技术人员 依本发明构思在现有技术基础上通过逻辑分析、推理或者根据有限的实验可以得到的技术 方案,均应该在由本权利要求书所确定的保护范围之中。
【权利要求】
1. 一种无侵入式的业务表单工作流化的实现装置,其特征在于该装置包括: 业务表单数据库,用于预存多种类型的、异构结构的业务表单; 工作流模板数据库,用于预存多种工作流模板; 工作流关系匹配数据库,用于存储工作流模板与业务表单之间的匹配关系信息;以及 关联配置器,用于读取所述业务表单库和工作流模板库中数据,将其中的工作流模板 与业务表单进行两两关联,并将关联信息存入所述工作流关系匹配数据库中。
2. 根据权利要求1所述的业务表单工作流化的实现装置,其特征在于,该装置还包括: 方法调用堆栈库,用于对业务表单操作的后端操作逻辑的方法执行堆栈进行存储; URL截取器,用于截取用户对业务表单操作产生的URL访问链接; 方法截取器,用于截取URL访问链接对应后端的执行方法的上下文信息; 工作流判定器,用于根据URL拦截器和方法截取器传入的URL访问链接、业务表单、业 务表单操作类型参数,从工作流关系匹配数据库中查询是否有关联的工作流模板id存在, 如果存在关联的工作流模板id,则利用工作流模板id从工作流模板数据库中查询出来传 输给工作流发起器; 工作流发起器,用于根据传入的工作流模板id和业务表单,调用工作流引擎来发起工 作流; 工作流引擎,用于根据工作流运行实例数据库中的工作流运行实例信息,将业务表单 数据库中的业务表单分派给相应的节点处理人进行处理; 调用堆栈保存器,用于将方法截取器截取的上下文信息进行处理并存入方法调用堆栈 库中;以及 工作流完成处理器,用于处理工作流结束工作。
3. 根据权利要求2所述的业务表单工作流化的实现装置,其特征在于: 所述上下文信息包括URL访问链接、业务表单和操作类型。
4. 根据权利要求2所述的业务表单工作流化的实现装置,其特征在于,所述工作流完 成处理器处理工作流结束工作,具体是: 如工作流以失败结束,则从方法调用堆栈库中删除之前存入的方法执行堆栈,业务表 单操作失败; 如工作流以成功结束,则从方法调用堆栈库中调出之前存入的方法执行堆栈,采用反 射的方式恢复之前的运行场景并继续执行,使得业务表单操作成功完成。
5. 根据权利要求1至4任一项所述的业务表单工作流化的实现装置,其特征在于: 所述工作流关系匹配数据库的数据结构中主要包括四个字段,分别是业务表单类型、 业务表单的id、业务表单的操作类型和工作流模板id ; 所述业务表单类型,用于区分不同类型的业务表单; 所述业务表单的id,用于对同一类型的业务表单进行区分; 所述业务表单的操作类型,包括添加、修改和删除三种类型; 工作流模板id,用于唯一标识工作流程模板。
6. 根据权利要求5所述的业务表单工作流化的实现装置,其特征在于: 所述工作流关系匹配数据库的数据结构中还包括表单属性过滤表达式,用于根据当前 业务表单信息来自动进行工作流模板的选择。
7. 根据权利要求1至4任一项所述的业务表单工作流化的实现装置,其特征在于,所述 关联配置器将工作流模板与业务表单进行两两关联,具体是: 将业务表单数据库中的业务表单的标识id与工作流模板数据库中的工作流模板的标 识id建立映射关系,使得输入业务表单的标识id可以调出工作流模板的标识id或者输入 工作流模板的标识id可以调出业务表单的标识id。
8. 根据权利要求1至4任一项所述的业务表单工作流化的实现装置,其特征在于: 所述工作流模板包含工作流的节点、节点中的处理人和节点处理人的权限。
9. 一种无侵入式的业务表单工作流化的实现方法,其特征在于包括以下步骤: 将业务表单数据库中的业务表单与工作流模板数据库中的工作流模板建立两两关联 关系; 接收用户点击业务表单按钮的命令,执行后端的业务逻辑操作; 截取业务表单操作的上下文信息; 根据截取的所述上下文信息,查询该业务表单是否存在与其具有关联关系的工作流模 板; 如不存在,则业务表单操作完成; 如存在,则停止业务表单的操作,并将该操作的调用堆栈信息进行保存,并顺序执行后 续步骤; 调用工作流引擎,并根据查询到的工作流模板生成工作流实例; 利用工作流引擎根据工作流模板的定义,调度给不同的节点处理人进行工作流处理; 判断工作流是否结束,如未结束,则返回上一步循环执行;如结束,则顺序执行后续步 骤; 判断工作流是否成功结束; 如是,则丢弃之前存入方法调用堆栈中的信息,并以失败结束业务表单的操作; 如否,则获取之前存入方法调用堆栈中的信息,继续执行业务表单的操作方法,使得业 务表单的操作成功完成。
10. 根据权利要求9所述的无侵入式的业务表单工作流化的实现方法,其特征在于,所 述将业务表单数据库中的业务表单与工作流模板数据库中的工作流模板建立关联关系,具 体是: 将业务表单数据库中的业务表单的标识id与工作流模板数据库中的工作流模板的标 识id建立映射关系,使得输入业务表单的标识id可以调出工作流模板的标识id或者输入 工作流模板的标识id可以调出业务表单的标识id。
11. 根据权利要求9所述的无侵入式的业务表单工作流化的实现方法,其特征在于: 所述上下文信息包括URL访问链接、业务表单和操作类型。
【文档编号】G06F17/30GK104216912SQ201310217986
【公开日】2014年12月17日 申请日期:2013年6月4日 优先权日:2013年6月4日
【发明者】李引, 袁峰 申请人:广州中国科学院软件应用技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1