首页> 中国专利> 一种面向政务的工作流管理系统及其分库分表方法

一种面向政务的工作流管理系统及其分库分表方法

摘要

本发明实施例提供一种面向政务的工作流管理系统及其分库分表方法,其包括:数据存储层,用于存储流程数据及流程配置数据;流程引擎,用于提供流程资源管理、任务调度、历史数据查询中的任意多个服务;统一接口层,用于提供多个统一接口;业务流程扩展模块,用于提供面向政务的工作流管理功能;流程设计器,用于绘制流程模型,以及配置流程节点的相关信息;展现层,用于管理流程配置信息。本发明实施例提供一种面向政务的工作流管理系统,其基于工作流引擎,提供业务流程的设计建模、调试、部署、运行、监控等功能。支持引擎的高并发访问;通过封装简化工作流引擎服务接口,对开发人员提供统一API,降低开发人员的流程门槛。

著录项

  • 公开/公告号CN113298503A

    专利类型发明专利

  • 公开/公告日2021-08-24

    原文格式PDF

  • 申请/专利权人 中国建设银行股份有限公司;

    申请/专利号CN202110659214.X

  • 发明设计人 侯远;

    申请日2021-06-15

  • 分类号G06Q10/10(20120101);G06F9/448(20180101);G06F8/38(20180101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人贾磊;李辉

  • 地址 100033 北京市西城区金融大街25号

  • 入库时间 2023-06-19 12:19:35

说明书

技术领域

本发明涉及工作流,具体涉及一种面向政务的工作流管理系统及其分库分表方法。

背景技术

工作流是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流管理系统要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。在智慧政务服务场景下对工作流管理系统提出了“一件事”网上办、场景化、特色化主题办事,重塑办事流程,联通多个部门间办事系统,实现并联办事,提高效率的要求。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

传统工作流管理系统一般是基于工作流引擎,使用流程模型设计器或者手动编写XML文件定义流程模型,开发人员通过调用流程引擎服务或实现相关的事件监听接口控制的流程启停、流转等操作,通常要求开发人员熟悉众多的流程引擎服务接口;不具备政务场景所需的选人模式、自定义待办/已办查询、流程监控等业务扩展功能;不适合大数据量大并发场景。

发明内容

有鉴于此,本发明实施例的目的在于提供一种面向政务的工作流管理系统及其分库分表方法,解决上述的至少一个技术问题。

第一方面,本发明实施例提供了一种面向政务的工作流管理系统,其包括:

数据存储层,用于存储流程数据及流程配置数据;

流程引擎,用于提供流程资源管理、任务调度、历史数据查询中的任意多个服务;

统一接口层,用于提供多个接口;例如,包括工作流接口、事件监听接口及组织机构接口中的任意多个;

业务流程扩展模块,用于提供面向政务的工作流管理功能;

流程设计器,用于绘制流程模型,配置流程节点的相关信息;

展现层,用于管理流程配置信息。

在一些可能的实施方式中,所述数据存储层包括如下中的任意一个或任意多个:Mysql集群、对象存储、Redis缓存。

在一些可能的实施方式中,所述流程引擎,用于提供如下中的任意一个或任意多个服务:运行时服务、任务服务、资源服务、历史服务、调度服务。

所述运行时服务,用于处理正在运行状态的流程实例和任务;

所述任务服务,用于管理和查询任务信息,例如,签收、办理、转办等;

所述资源服务,用于管理流程资源,例如,部署、删除、读取流程图片和流程模型文件;

所述历史服务,用于查询流程历史信息,例如,流程实例、任务、活动、变量等;

所述调度服务,用于流程启动后流程节点的驱动,例如,启动流程、终止流程、转办流程。

在一些可能的实施方式中,所述统一接口层包括如下中的任意一个或任意多个接口:

工作流接口,用于执行流程管理、流程调度、和流程查询;

事件监听接口,用于对流程启动前后、任务提交前后、以及流程完成前后的事件进行监听回调;

组织机构接口,用于为流程节点处理人设置默认的自有组织机构信息,或者,为流程节点处理人设置从第三方业务应用系统调用到的第三方组织机构信息。

在一些可能的实施方式中,所述业务流程扩展模块,包括如下任意一个或多个模块:

离岗移交模块,用于通过设置包括离岗开关、交接人和离岗时间在内的信息,将离岗期间的审批任务自动转办为预设定交接人;

子流程调用模块,用于通过http远程调用及回调函数实现跨部门间协同审批;

待办扩展模块,用于流程绘制时或绘制前设置流程查询待办列表所需的业务字段键值作为查询条件,流程启动时传入预先设置的待办扩展字段值,将流程Id、当前任务Id、当前处理人及扩展字段关联存储,在进行待办任务查询时通过所述自定义扩展字段查询待办;

已办扩展模块,用于通过已办扩展表将流程Id、任务Id、处理人及扩展字段关联,使得用户能够自定义业务所需的扩展字段,在进行流程查询时通过自定义扩展字段查询已办;

流程跟踪模块,用于根据流程实例Id查询流程所有节点的状态信息,所述状态信息包括已办节点和待办节点,并根据流程模型对已办节点和待办节点进行不同着色,绘制出流程轨迹图;

选人模式扩展模块,用于支持用户审批通过当前节点后,使得用户能够在流程配置的候选人列表里选择下一节点处理人;

效率分析模块,用于通过历史服务查询所有流程历史数据、任务办理开始时间、任务办理结束时间、以及组织机构信息,按部门和/或按员工,展示流程处理数量和/或平均时间,获得流程处理效率;

性能分析模块,用于分析所述流程引擎每个预设时长内(例如每分钟内)的请求平均响应时间和/或请求数量;

在一些可能的实施方式中,所述流程设计器,用于使用Angular Web前端框架提供可拖拽的流程建模功能;所述流程设计器包括:流程建模模块和控件支撑模块;

所述流程建模模块,包括如下任意一个或多个子模块:流程绘制子模块、流程导入子模块、流程导出子模块、流程发布子模块、流程上传子模块;

所述流程绘制子模块,用于浏览器端可视化拖拽控件绘制流程图;

所述流程导入子模块,用于将现有流程模型文件导入自动生成流程图;

所述流程导出子模块,用于将绘制完成的流程图导出为流程模型文件;

所述流程发布子模块,用于使绘制的流程图生效;

所述流程上传子模块,用于将绘制的流程图上传到对象存储供其他应用读取;

所述控件支撑模块,包括如下任意一个或多个子模块:用户任务子模块、服务任务子模块、网关子模块、子流程子模块、边界事件子模块。

所述用户任务子模块,用于建模需要人工执行的任务;

所述服务任务子模块,用于执行外部的Java类;所述服务任务子模块,具体用于执行不需要人工干预的自动任务,通过编写外部的Java处理类实现自动审核处理;

所述网关子模块,用于控制流程走向,例如流程中当前节点处理完成后存在多个分支,根据流程配置的业务规则执行一个或多个分支;

所述子流程子模块,用于流程中嵌套子流程,子流程中可包含其他的用户任务、网关等的子模块;

所述边界事件子模块,用于标识流程的起始节点和结束节点。

在一些可能的实施方式中,所述展现层,用于提供流程配置信息的管理,具体包括提供用户、租户、菜单、权限、流程分类等流程配置信息的管理。所述展现层包括如下任意一个或多个功能模块:

用户管理模块,用于新增用户、删除用户、以及修改用户;

流程分类管理模块,用于新增流程分类、删除流程分类、以及修改流程分类,对所有流程按照分类编码进行分类;

租户管理模块,用于新增租户、删除租户、以及修改租户,隔离不同租户下的流程数据;

菜单管理模块,用于新增用户菜单、删除用户菜单、以及修改用户菜单;

权限管理模块,用于新增用户权限、删除用户权限、以及修改用户权限。

在一些可能的实施方式中,所述工作流管理系统的所述流程引擎和所述统一接口作为jar包半嵌入方式集成到第三方业务应用系统。

在一些可能的实施方式中,所述流程引擎基于Activiti工作流引擎,采用SpringBoot微服务框架。

在一些可能的实施方式中,所述流程引擎,还用于基于Mybatis插件机制,根据设置的需要分库的表以及需要校验分库条件的方法对操作流程数据的sql语句进行拦截,拦截后修改sql语句进行分库分表。

第二方面,本发明实施例提供一种面向政务的工作流管理系统的分库分表方法,其包括如下步骤:

在流程配置数据中定义分库分表开关、需要校验分库分表条件的方法调用名称列表、需分库分表的表名列表及分库分表字段;

使用Spring切面定义工作流操作切面服务类,对工作流接口中的所有方法调用进行拦截,获取方法调用名称,判断方法调用名称是否在流程配置数据中定义的需要校验分库分表条件的方法调用名称列表中,如果不存在则放行,如果存在则继续执行下一步;

使用Mybatis插件对SQL语法构建器的prepare()方法进行拦截,获取SQL要操作的表名,判断表名是否在流程配置数据中定义的需分库分表的表名列表中,如果不存在则放行,如果存在则继续执行下一步;

对需要进行分库分表操作的SQL拦截后增加流程配置数据中定义的分库分表字段。

上述技术方案具有如下有益效果:

本发明实施例提供一种面向政务的工作流管理系统,其包括数据存储层、流程引擎、统一接口层、流程设计器和展现层,从而基于工作流引擎,不要求开发人员熟悉众多的流程引擎服务接口;具备政务场景所需的选人模式、自定义待办/已办查询、流程监控等业务扩展功能;适合大数据量大并发场景,满足政务场景复杂的流程审批需求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的工作流管理系统框架图;

图2是本发明实施例的工作流与第三方业务应用系统半嵌入式集成示意图;

图3是本发明实施例的工作流管理系统的分库分表方法的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种面向政务的工作流管理系统,其基于工作流引擎,提供业务流程的设计建模、调试、部署、运行、监控等功能。支持引擎的高并发访问;通过封装简化工作流引擎服务接口,对开发人员提供统一API(Application Programming Interface,应用程序接口),降低开发人员的流程门槛;具备配置节点的人工和自动处理的柔性特点,满足复杂的流程审批需求;提出了工作流管理系统与第三方业务应用系统进行半嵌入式集成方案,可以有效解决全嵌入方式集成造成第三方业务应用系统与工作流管理系统高度耦合的弊端以及分别独立部署方式可能造成数据库事务全局不一致的重大隐患。

本发明实施例的面向政务服务的工作流管理系统基于工作流引擎进行二次开发,对开发人员提供统一API,提高开发效率;流程引擎支持大数据、高并发;在传统工作流功能基础上提供业务扩展、选人模式扩展、待办已办扩展、流程监控等功能;提出了一种与第三方业务应用系统半嵌入方式的集成方案,可以有效避免传统集成方案的弊端。

图1是本发明实施例的工作流管理系统框架图。如图1所示,本发明实施例的面向政务服务的工作流管理系统可以基于Activiti工作流引擎,采用Spring Boot微服务框架,Mybatis持久化框架,MySql传统关系型数据库、Redis非关系型数据库、对象存储等支撑数据存取。工作流管理系统通过Mybatis插件机制根据开发人员设置的需要分库的表以及需要校验分库条件的方法对操作流程数据的sql语句进行拦截,拦截后修改sql语句进行分库分表,进而支撑大数据量高并发访问。业务人员通过Web端的流程设计器绘制流程模型,配置流程节点处理人、抄送人、会签属性、表单等信息,保存、导入、导出工作流。上述Mybatis插件用于数据存储层中。

数据存储层,用于存储流程数据及流程配置数据。该数据存储层可以包括如下中的任意一个或任意多个:Mysql集群、对象存储、Redis缓存。其中,上述流程配置数据可以包括:待办扩展字段、分库分表等配置数据。

流程引擎层,用于提供多个服务。该多个服务可以包括:流程资源管理、任务调度、历史数据查询等中的任意多个服务。流程引擎层包括如下中的任意一个或任意多个:运行时服务、任务服务、资源服务、历史服务,调度服务,各模块的功能分别是:运行时服务用于处理正在运行状态的流程实例和任务;任务服务用于管理和查询任务信息,例如,签收、办理、转办等;资源服务用于管理流程资源,例如,部署、删除、读取流程图片和流程模型文件;历史服务用于查询流程历史信息,例如,流程实例、任务、活动、变量等;调度服务用于流程启动后流程节点的驱动,例如,启动流程、终止流程、转办流程。

面向政务服务的工作流管理系统通过封装Activiti工作流引擎API提供统一接口层,其可以包括工作流接口、事件监听接口及组织机构接口中的任意多个。工作流接口用于负责流程管理、流程调度、流程查询等基本功能。事件监听接口用于负责流程启动前后、任务提交前后、流程完成前后等事件的监听回调功能。组织机构接口用于负责流程节点处理人设置所需的用户、角色、机构、部门信息,该工作流管理系统默认使用自有组织机构信息。用户通过展现层用户管理模块设定本系统组织机构信息,同时系统提供扩展能力,可由第三方业务应用系统实现组织机构具体逻辑,流程建模时将自动调用第三方组织机构信息。上述任务在工作流里指的是流程启动后到达某一个节点便产生了对应用户的一个待办任务。

业务层包括:业务流程扩展模块和流程设计器。业务流程扩展模块提供了面向政务的工作流管理特色功能。例如,支持根据自定义业务字段查询待办列表和已办列表的待办扩展和已办扩展模块,支持多部门协同并联审批的子流程模块,支持历史流程办理效率统计分析的效率分析模块。

业务流程扩展模块,包括如下任意一个或多个模块:

离岗移交模块,用于通过设置离岗开关,交接人,离岗时间等信息将离岗期间的审批任务自动转办为预设定交接人。

子流程调用模块,用于通过http远程调用及回调函数实现跨部门间协同审批。

待办扩展模块,用于待办扩展模块,用于根据自定义的业务字段,例如合同号,查询用户的待办任务列表,处理方法如下:流程绘制时或绘制前设置该流程查询待办列表所需的业务字段键值作为查询条件,即待办扩展字段,可设置一个或多个,流程启动时传入预先设置的待办扩展字段值,将流程Id、当前任务Id、当前处理人及扩展字段关联存储,在进行待办任务查询时通过所述自定义扩展字段查询待办。

已办扩展模块,用于通过已办扩展表将流程标识Id、任务标识Id、处理人及扩展字段关联,用户可自定义业务所需的扩展字段,在进行流程查询时通过自定义扩展字段查询已办。

流程跟踪模块,用于根据流程实例Id查询流程所有节点的状态信息,所述状态信息包括:已办节点和待办节点,并绘制流程轨迹图,同时可进行效率分析和性能分析。

效率分析模块,用于通过历史服务查询所有流程历史数据、任务办理开始时间、任务办理结束时间、以及组织机构信息,按部门和/或按员工,展示流程处理数量和/或平均时间,获得流程处理效率。

性能分析模块,用于分析流程引擎每个预设时长内例如每分钟内的请求平均响应时间和/或请求数量。

选人模式扩展模块,用于支持用户审批通过当前节点后,使得用户能够在流程配置的候选人列表里选择下一节点处理人。

流程设计器可以使用例如Angular Web前端框架提供可拖拽的流程建模功能。

流程建模模块,包括如下任意一个或多个子模块:流程绘制子模块、流程导入子模块、流程导出子模块、流程发布子模块、流程上传子模块。上述各功能模块的功能分别是:流程绘制子模块,用于浏览器端可视化拖拽控件绘制流程图;流程导入子模块,用于将现有流程模型文件导入自动生成流程图;流程导出子模块,用于将绘制完成的流程图导出为流程模型文件;流程发布子模块,用于使绘制的流程图生效;流程上传子模块,用于将绘制的流程图上传到对象存储供其他应用读取。

控件支撑模块,包括如下任意一个或多个子模块:用户任务子模块、服务任务子模块、网关子模块、子流程子模块、边界事件子模块。上述各功能模块的功能分别是:用户任务子模块,用于建模需要人工执行的任务;服务任务子模块,用于执行外部的Java类,即用于执行不需要人工干预的自动任务,通过编写外部的Java处理类实现自动审核处理;网关子模块,用于控制流程走向,例如流程中当前节点处理完成后存在多个分支,根据流程配置的业务规则执行一个或多个分支;子流程子模块,用于在流程中嵌套子流程,子流程中可包含其他的用户任务、网关等的子模块;边界事件子模块,用于标识流程的起始节点和结束节点。

展现层,用于提供用户、租户、菜单、权限、流程分类等流程配置信息的管理。该展示层包括如下任意一个或多个功能模块:用户管理模块,用于新增用户、删除用户、以及修改用户;流程分类管理模块,用于新增流程分类、删除流程分类、以及修改流程分类,对所有流程按照分类编码进行分类;租户管理模块,用于新增租户、删除租户、以及修改租户,隔离不同租户下的流程数据;菜单管理模块,用于新增用户菜单、删除用户菜单、以及修改用户菜单;权限管理模块,用于执行新增用户权限、删除用户权限、以及修改用户权限中的至少一个。其中,租户相当于对用户的一个分组,不同租户下的不同用户是隔离的。

发明人发现现有技术在与第三方业务应用系统集成方式上存在耦合度高或者全局事务不一致的重大隐患。为解决该技术问题,本发明实施例的工作流管理系统的流程引擎和统一接口可作为jar包半嵌入方式集成到第三方业务应用系统,避免独立部署通过远程调用导致数据库事务问题全局流程状态不一致。图2是本发明实施例的工作流与第三方业务应用系统半嵌入式集成示意图。如图2所示,包括如下步骤:

S1:第三方业务应用系统通过URL跳转到工作流管理系统流程建模页面进行流程设计,保存并上传流程BPM文件(业务流程建模与标注文件)到对象存储。具体地,BPM文件是流程模型文件,具体是xxx.bpm文件,其是流程图绘制后得到的文件,该文件包含了流程的全部信息,可以导出并导入到其他工作流系统。

S2:工作流管理系统返回BPM文件地址到第三方业务应用系统。具体地,流程图绘制完成后得到上述BPM文件地址。

S3:第三方业务应用系统内部引入工作流系统统一接口层和工作流引擎jar包,通过API导入相应的流程BPM文件,然后进行流程启停、流转等操作。具体地,在软件领域,JAR文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。

本发明实施例基于Activiti工作流引擎进行的统一接口封装,抽象出工作流接口、事件监听接口、组织结构接口,并且组织机构接口可由第三方业务应用系统实现。

本发明实施例与第三方业务应用系统半嵌入式集成方案,通过工作流管理系统的流程设计器模块导出BPM文件到对象存储,第三方业务应用系统通过引入工作流统一接口层和流程引擎模块导入流程BPM文件进一步调度流程。

本发明实施例的流程引擎分库分表方法,基于Mybatis插件机制,根据开发人员设置的需要分库的表以及需要校验分库条件的方法对操作流程数据的sql语句进行拦截,拦截后修改sql语句进行分库分表,分库分表逻辑为只针对流程运行时的数据表和历史表进行分库分表,其他表视为配置表作为复制表存在,如图3所示,该方法包括如下步骤:

S110:在流程配置数据中定义分库分表开关、需要校验分库分表条件的方法调用名称列表、需分库分表的表名列表及分库分表字段。

S120:使用Spring切面定义工作流操作切面服务类,对工作流接口中的所有方法调用进行拦截,获取方法调用名称,判断方法调用名称是否在流程配置数据中定义的需要校验分库分表条件的方法调用名称列表中,不存在则放行,存在则继续执行下一步。

S130:使用Mybatis插件对SQL语法构建器的prepare()方法进行拦截,获取SQL要操作的表名,判断表名是否在流程配置数据中定义的需分库分表的表名列表中,不存在则放行,存在则继续执行下一步。

S140:对需要进行分库分表操作的SQL拦截后增加流程配置数据中定义的分库分表字段。

本发明实施例的上述技术方案的优点包括:

传统工作流管理系统通常要求开发人员熟悉众多工作流引擎API,进行功能扩展的二次开发要求高,对于待办已办任务查询只支持通过待办人为条件进行查询,不利于与第三方业务应用系统集成。本发明实施例的系统对Activiti工作流引擎进行高度抽象,提供简单易用的接口,简化了开发人员的开发难度;提出了根据用户自定义条件查询待办已办的扩展方案;方便与第三方业务应用系统集成,且通过半嵌入方式集成能够保证事务的全局一致性;通过分库分表使本发明实施例的系统具备接受高并发大数据的能力。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号