掌桥专利:专业的专利平台
掌桥专利
首页

一种面向移动互联网的工作流引擎

文献发布时间:2023-06-19 10:41:48


一种面向移动互联网的工作流引擎

技术领域

本发明涉及自动化和移动互联网领域,主要是结合工作流技术和移动互联网进行系统的研发工作,具体工作包括建立流程模型、组织模型、面向移动端的用户交互和高性能服务器构建。

背景技术

企业在经营和运行过程中需要将表单、文件、信函或技术资料等信息在不同的人员和部门之间进行传递。工作流技术实现了自动化的业务处理过程,它根据业务的实际需求建立工作流模型,使图片、文档或数据按照模型中定义好的规则在参与者之间自动传递,实现人员、部门之间的协同办公。一些公司、企业将工作流技术与计算机技术相结合,建立了基于工作流的自动化办公系统。但这些系统在移动互联网的技术背景下逐渐显示出如下的不足:

(1)传统的工作流引擎,如Activiti,面向信息技术管理人员,工作流引擎为信息技术人员提供了一款流程研发框架,由技术人员依照业务人员规定的业务流程进行系统的研发,这就导致技术人员不懂业务、业务人员不懂技术。另外,这种研发框架在系统流程研发完成以后无法灵活变更,系统的维护和升级工作依赖技术人员的支持。另外,这种工作流引擎使用环境封闭,缺乏对移动互联网的支持,难以适应用户的移动办公需求;

(2)部分基于工作流的自动化办公系统,如泛微,集成了各种日常办公中的业务功能。但是,这些功能会提升用户的学习成本,分散用户注意力,增加用户认知负荷,降低用户办公效率。由于系统中集成了大量的应用,使得系统售价昂贵。另外,系统包含文件数量庞大,占用更多的系统资源,降低系统的运行效率;

(3)另一部分部分基于工作流的自动化办公系统,如钉钉,为了适应中小型企业的应用需求,也内置基于工作流的电子表单应用。但这些应用无法支持跨部门、跨部门的应用场景,即只有一个根部门,用户无法跨部门任职,流程的执行节点只能由单个用户进行处理。同时,内部电子表单使用场景比较有限,难以适应复杂的应用需求;

(4)面向移动互联网的应用,由于用户可以随时随地对系统服务进行访问,相较于传统互联网而言,服务器会承受更大的用户访问压力。传统系统后端服务实现采用同步阻塞式的后端构建方案,通过多线程的方式实现高并发处理,这种方式需要消耗大量的系统资源对阻塞线程进行维护。为了减少系统开销,适应移动互联网的并发访问需求,本发明对现有技术进行调研,研究高性能的系统实现方案。

发明内容

本发明目的在于提出了一种线性工作流模型实现了流程审批的自动化。另外,引入微信小程序实现系统对移动互联网的支持,便于用户在移动终端直接对流程进行操作。为了应对移动互联网应用背景下的服务器访问压力,本发明将通过异步非阻塞的系统构建方式实现对系统的构建。通过对用户的组织架构进行调研,对组织架构进行建模,实现跨组织、跨职能的应用支持。因此,本发明的面向移动互联网的工作流引擎工作流程包括:工作流引擎的设计与实现、移动端的用户交互、组织建模、高性能服务器构建。

本发明主要满足用户异地协同办公过程中的业务审批需求。通过工作流技术实现了自动化的业务处理过程,根据业务需求建立工作流模型,使图片、文档或数据按照流程模型定义好的规则在参与者之间自动传递,实现人员、部门之间的协同办公

工作流引擎的设计与实现:本发明所设计的工作流引擎是面向普通用户和移动终端的。工作流模型除了满足用户流程审批的业务需求,还要便于用户理解,这样才能使用户通过系统提供的终端直接对流程进行编辑。

移动端的用户交互:界面设计更应该与人们的需求相符合,界面模型的设计过程中融入心理学、设计学、美学等同人类相关的学科,以此来增强界面设计的适用性,并且还可以保证用户在对其进行应用的过程中无需记忆复杂的操作方法,最终实现界面统一性

组织建模:流程的顺利运转需要工作人员参与,需要满足跨组织、跨职能的办公模式。因此,本发明将会对用户单位的组织架构进行调研、分析和建模,使流程的组织模型能够适应跨组织、跨职能的应用场景。

异步非阻塞的系统构建:为了提高系统的资源利用率,应对移动互联网的访问压力,系统将采用异步非阻塞的实现方式对系统进行构建,减少维护阻塞线程的开销,纵向提升系统性能。

本发明设计并实现了一种面向移动互联网的工作流引擎。通过工作流技术实现文件、图片和资料按序传输,实现办公审批流程的自动化,提高工作人员办公的效率。另外,研发面向用户移动终端的图形化操作界面,便于用户直接对流程进行设计,将引擎实现与业务分析解耦,减少信息管理人员对业务流程的介入。

在工作流引擎的研发过程中,需要建立工作流程模型驱动引擎的运转。由于引擎面向用户终端,因此流程模型需要简单、稳定,便于用户理解和操作。本发明通过对日常工作的审批流程进行调研,提出一种线性的工作流模型,在计算机中通过JSONArray进行形式化描述,流程的自动化运转通过对JSONArray的顺序遍历进行实现。通过JSONArray中的对象下标指针记录流程当前的执行位置,可以通过改变指针对流程进行“回退”、“指定回退”等操作。也可以通过向JSONArray中添加对象的方式,为流程增加执行节点。另外,流程的正常运转离不开“人”的参与。本发明通过对应用单位的人员、组织形式进行调研,并建立计算机模型,使工作流引擎能够支持跨职能、跨部门的应用场景。

现在的工作人员迫切渴望摆脱时间、地点对工作的束缚,因此本发明将结合移动互联网与工作流技术,研发面向移动互联网的工作流引擎,实现办公人员对移动办公的需求。通过微信小程序实现工作流引擎对移动端的支持,用户通过移动智能终端对流程进行编辑,依照业务需求对流程进行修改。移动端流程操作界面的研发需要考虑小屏幕、手指操作等特点,进行移动端交互界面的研发。移动互联网时代,由于用户可以随时随地通过移动终端对服务器进行访问,这必然会让服务器产生巨大的访问压力。针对服务器的性能瓶颈,本发明通过采用异步非阻塞的方式对系统服务进行实现,这种方式可以有效的提升系统资源利用效率,改善系统的性能。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图(1)是本发明实施例流程模型图;

图(2)是本发明实施例工作流的形式化描述;

图(3)是本发明实施例模板解析形式化描述;

图(4)是本发明实施例include属性形式化描述;

图(5)是本发明实施例刷数据获取图;

图(6)是本发明实施例流程执行流程图;

图(7)是本发明实施例用户交互界面;

图(8)是本发明实施例组织构建架构图;

图(9)是本发明实施例反应器模式图;

图(10)Vert.x工作模式图。

具体实施方式

1.工作流引擎的实现:

传统的工作流模型有:基于有向图模型、基于事务模型的、协调理论模型、Petir网模型等。工作流引擎也会基于这些模型进行构建。但是基于这些模型实现的工作流系统只是通过一些简单的案例进行有效性验证,没有在大规模工作流网实例上进行测试,其可靠性和正确性没有得到全面的检验。本发明将会通过一种线性的模型对工作流进行建模和实现,这种模型的运行状态稳定、可靠。另外,模型简单易懂,便于用户快速的理解和操作。

(1)流程建模和形式化描述:

本发明所研发的工作流引擎通过将流程抽象成一个线性的数组,流程的执行节点抽象成数组中的对象进行实现,如图(1)所示。通过指针(step)记录流程当前的执行位置。数组中的对象则记录了当前节点的属性(p),包括名称、执行人等信息和节点的执行条件(t),通过t,可以确定流程的下一个执行节点。为了使模型能够被计算机识别和运行,系统通过JSON格式对流程模型进行形式化描述,将数组表示为JSONArray数组,数组中的对象通过JSONObject进行表示。JSONObject对象中具体信息如表(1)所示。形式化描述包括两张图,如图(2)和图(3),两张图的区别是因为本发明针对跨组织、跨职能的应用场景,相同审批流程的参与角色(即用户在单位中的任职)是一样的,但是在跨组织的应用场景下,任职这些角色的具体用户却不一样。因此,图(2)定义了流程节点中的节点参与角色,图(3)依据流程实例所属的部门将这些角色解析成了具体的参与人员。流程引擎的运转通过遍历形式化数组实现的,在此过程中会记录当前执行节点下标(step,即数组中执行节点的下标),节点的执行条件将会在下文中介绍。然后,依据执行节点中的信息将电子表单转发给当前执行节点的处理人(checker)。用户也可以进行“回退”操作,即反向遍历数组,寻找上一个执行节点。也可以“指定回退”,直接设置step的值。“添加执行节点”则是在数组中创建新的对象,创建过程包括选择节点的处理人员、创建节点执行条件和节点的处理模式。其它流程操作如表(4)所示。

表(1)工作流属性解释表

表(4)流程操作说明表

(2)流程的条件执行:

流程执行节点是依据用户填写的电子表单内容进行筛选的,流程会与业务数据表绑定(table_name),在本发明中是基于include属性的数据实现的,如图(3)所示,表(2)中记录了include对象中的属性说明。流程需要与电子表单对应的用户数据相关联,便于流程查询电子表单中的数据,并基于该数据进行执行节点的筛选。通过MySQL可以查询到用户数据表的详细设计信息,包括:列名(column)、数据类型(columnType)、列注释等信息(columnComment)。可以将列注释作为用户所看到的筛选条件,例如列名是“name”,注释可以用“姓名”,数据类型为“varchar”。依据数据类型,可以创建数据的执行规则,例如varchar类型的字符串数据可以采用“包含”(contains)规则,其他规则如表(3)所示。用户最后还需要输入一个参照值,例如:varchar类型的“XXX0”(末尾的0、1是区分作用,没有实际意义)。这样用户前端看到的信息就会是“姓名-包含-XXX0”。而计算机进行处理时会依据数据的id(也称为data-id)在,数据表名称(table_name)和数据所属的列(column)在数据库中查找到数据的具体值,如图(4)所示。例如“select user_name from table_namewhere id=201***21”,查询到的数据为“XXX1”,在后端组装成“XXX1”.contains(“XXX0”)。由于String类型数据无法判断逻辑真假,因此,需要将拼装好的字符串传入脚本引擎中,脚本引擎会返回“True”或“False”,“True”则表示执行该节点,将表单发送给节点的执行人。“False”则表示跳过该节点,并遍历下一个节点,查看是否符合执行条件。

表(2)include属性解释表

表(3)数据匹配规则表

(3)流程节点执行方式:

本发明所设计的工作流在运行时支持一个运行节点同时有多个角色参与节点审批活动。实现了“或签”和“与签”的功能,“或签”是节点多个处理人中只要有一个人“同意”该操作,就将流程继续推进,执行先一个节点。“与签”需要所有的节点执行人都进行“同意”操作以后才继续执行流程的下一个节点。“与签”的实现方式是,系统会记录当前节点所有的待审批人员id,如果这些人中有人进行了审批操作,则将该人员id从待审批人员中去除,当没有待审批人员时则表示当前节点所有处理人员都进行了审批操作。

(4)流程的实现方式

流程的运转需要将电子表单与流程模板相关联,这是系统在开发时由信息技术开发人员依照预定的业务规则将流程与电子表单进行绑定的,用户可以通过系统提供的用户接口实现对流程的编辑。流程在运行过程中主要实现以下三个功能:

模板解析:模板解析的主要功能是将业务表单对应的模板形式化描述进行解析,将模板中的参与流程的角色解析成具体的人员id,便于流程运转时使用。角色解析的过程可以通过根组织编号(rootID)、部门的编号(departmentID)和职位(position)查询人员的具体信息。并将checker属性中原本的参与角色替换为查询到的人员ID;

流程运转:流程的运转的主要功能是用户提交业务申请以后,系统生成相应的流程实例,并依据业务相应的工作流模型寻找流程中的执行节点,并按照节点的执行规则将电子表单转发给相应处理人员;

流程审批:用户收到需要处理的电子表单以后进行表单的审批操作。用户审批完成以后,会继续执行流程的运转过程。

具体过程如图(6)所示:

1)有用户填写电子表单,同时系统会查询表单所对应的流程模板;

2)用户填写完电子表单以后,系统会将流程模板中的参与角色依照用户所属的部门进行解析,形成对应的处理用户;

3)引擎遍历解析后的数组,查看当前节点后面是否存在未执行的节点,如果存在该节点,则查看节点中的“include”属性,并依据流程执行条件判断是否执行该节点,如果执行该节点,则记录该节点下标、处理用户id和处理模式,等待用户审批,如果不满足执行条件则继续遍历下一个节点。当流程数组中不存在未遍历的对象时,则表示流程中不存在未执行的节点,流程结束;

4)节点处理用户登陆系统对电子表单进行审批,可以进行“同意”和“驳回”操作。如果“同意”则引擎会遍历下一个节点,寻找下一位审批用户;如果电子表单被“驳回”,则系统会停止当前流程实例,流程结束。

2.移动端的用户交互:智能手机的人机交互是由用户通过手指触摸操作实现的,相较于PC端的鼠标操作,手指操作不够精确,通过手指操作难以选中连线,无法实现对传统工作流界面中节点之间连接弧的选中操作。另外,由于受到智能移动终端的屏幕大小的限制,没有充足的空间实现摆放各种流程元素图标,节点的拖拽操作也会收到屏幕空间的限制。所以本发明在用户交互界面的研发过程中去掉了节点之间的连接弧,交互界面也没有多样工作流元素,各个执行节点在设置完毕以后就可以直接生成在相应的位置,无需进行拖拽操作。这种用户交互界面能够更加直观的与模型映射,方便用户理解和使用,系统交互界面如图(7)所示。用户点击添加节点的按钮时会进入人员选择界面,选择节点的执行人员,人员选择完成以后会自动生成流程节点;点击条件编辑按钮时,会进入节点执行条件编辑界面,进行节点执行条件的编辑;处理模式按钮可以切换当前节点的审批模式,所有人审批通过或者任一用户审批通过。

3.组织建模:为了适应跨组织、跨职能的应用场景,系统在进行组织建模时采用森林模型对系统的组织架构进行模拟,森林中的每一棵树代表一个分支机构组织。每棵树都有一个根编号(rootId),通过departmentId(部门编号,当前节点)和parentId(父部门编号,parentId会指向当前节点的父节点),实现组织的树状建模。用户与分支机构是一对多的关系,即一个用户可以在多个分支机构中任职,系统可以通过机构和职位查询到任职人员的具体信息。系统实施例中通过人员关系表记录人员与组织部门的映射信息,关系表中记录了人员ID、部门ID(departmentID)根组织ID(rootID)和职位(position)。系统组织机构的模型如图(8)所示。系统可以依据根组织编号、部门编号和职位信息查询相关用户的详细信息。

4.异步非阻塞的服务器构建:

由于I/O读写速度远低于CPU的运算速度,在访问数据库时服务器的性能很大程度上会受到I/O的影响,造成阻塞导致服务器的效率低下。为了服务器的性能,满足移动互联网应用场景下的高并发性的需求,本发明将通过异步非阻塞的方式对系统进行实现。

非阻塞I/O在程序执行过程中,I/O操作不会阻塞程序的执行,即在I/O操作的同时,继续执行其他代码,这种I/O模型(非阻塞I/O)为程序带来的性能上的提高是非常可观的。应用程序提交I/O异步调用请求,操作系统处理响应的I/O操作,同时应用程序无需等待操作系统返回结果,就开始执行其他处理操作(应用程序没有被I/O操作所阻塞)。当操作系统执行完毕并返回读取的数据,就会产生一个信号或执行一个基于线程的回调函数来完成这次I/O的后续处理。异步非阻塞的系统构建方式,没有线程的阻塞等待时间,可以减少系统对阻塞线程进行资源维护的开销,提升系统性能。

本发明通过基于Netty的Vert.x进行异步非阻塞系统的要研发,Vert.x采用反应器模式处理用户的请求,如图(9)所示。通过非阻塞的Eventloop将接收到的事件发送到相应的Handler(处理器)中进行处理。这种模式可以充分的利用计算机的线程资源,减少了机器维护阻塞线程的资源消耗。在Vert.x中,Eventloop是一个事件的循环,黄金原则是不阻塞Eventloop线程。在一个Vert.x生命周期内,需要Eventloop不断轮询事件是否发生,并将发生的事件交给Handler予以处理,此过程将会无限调度循环,这样可以把一些I/O操作频繁的事件及时从CPU上剥离开来,最后通过注册一个回调Handler来处理所有的事件回调

Verticle是由Vert.x部署和运行的代码块,一般的业务代码都是在Verticle中实现的。本发明实施例中使用的Verticle主要有以下两类:

Stardand Verticle:这是最常用的一类Verticle,运行在EventLoop线程上。Vert.x保证同一个普通Verticle内部的所有处理器都只会由同一个EventLoop线程调用,由此保证Verticle内部的线程安全。

Worker Verticle:这类Verticle会运行在Worker Pool中的线程上。一个实例绝对不会被多个线程同时执行。Worker verticle主要是为调用阻塞代码而设计的,所以它并不会阻塞事件循环线程(event loop)。

使用Stardand Verticle进行非阻塞业务的实现,通过Worker Verticle进行阻塞任务的实现,通过EventBus进行Verticles之间的信息交互。在Vert.x调用JDBC接口进行数据看的访问时,Vert.x委托给一个Worker线程。由Worker线程进行阻塞任务的处理,当Worker完成数据访问任务后会通知Stardand Verticle通过回调函数的形式进行后续数据的处理。如图(10)所示。

参考文献

[1]汪涛,黄力芹,计算机工程与科学吴J.工作流管理的发展历程和趋势[J].2001,23(1):97-100.

[2]罗军舟,吴文甲,计算机学报杨J.移动互联网:终端、网络与服务[J].2011,34(11):2029-51.

[3]邢恺.人机交互设计在手机产品上的有效应用%J电视指南[J].2018,13):294.

[4]姜婷婷.浅析认知能力在手机交互界面中信息可视化设计的应用%J工业设计[J].2017,08):107-8.

相关技术
  • 一种面向移动互联网的工作流引擎
  • 一种面向移动互联网的安全审计系统和方法
技术分类

06120112641344