uel表达式 字符串截取_一种基于Activiti的流程与表单交互方法及系统与流程

本发明涉及一种基于Activiti的流程与表单交互方法及系统,属于计算机领域。

背景技术:

Activiti为一种当前流行的、基于Apache许可、免费、开源的业务流程引擎,Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。

现有技术的对比文件公开了“一种基于activiti的业务事件与流程分离方法及系统”(专利申请号:CN201710178569.0)中提到了一种基于activiti的业务事件与流程分离方法,该方法包括:将activiti操作节点数据结构化,并配置到数据库中以生成不同的表单;解析业务流程的XML数据,并将所解析的配置数据写入上述步骤生成的表单中。其发明将操作节点数据在数据库中结构化,通过读取结构化的数据组成具体的表单,并将业务流程的XML数据解析后写入到上述生成的表单中,可实现业务处理与流程分离,使业务在处理过程中脱离解析activiti自定义XML的流程路线,避免每次处理业务都解析XML数据,以解决因解析XML而引起的数据混乱问题,也可避免因流程异常导致业务事务处理失败的问题,且通过更改配置数据即可实现流程的更新。

现有技术存在以下缺点:

1)采用Activiti软件可独立部署的方案,决定了Activiti本身自带的基于JAVA编程、将业务逻辑嵌入工作流执行的Listener监听器和Event事件不能用,即使想办法用起来,也不便于流程与具体业务应用程序的分离,耦合度太高,也违背我们业务模块独立开发和部署、集中式管理、模块间松耦合的设计理念;

2)Activiti软件升级困难,每次升级Activiti软件版本都必须重新部署业务逻辑相关类;

3)Activiti软件每个节点属性数量有限,难以达到与表单业务系统丰富的数据交互和业务逻辑操作控制;

4)流程变量数值的设置完全依靠表单业务系统编程实现,即使有些功能可以采用脚本,但对于不懂编程的流程设计人员也比较困难;

5)流程任务事件或各种业务逻辑只支持同步调用,不支持异步执行。若业务逻辑复杂,在高并发情况下,性能和用户体验会比较差;

6)采用activiti-explorer在线编辑流程时,对于流程变量的描述、默认值等都不能设置;而Eclipse下插件形式的流程编辑器虽然可以设置流程变量的默认值,但目前最高只支持到Activiti V5.18,不能支持Activiti V5.22等新版本新增的属性和方法。

技术实现要素:

本发明提供本发明提供了一种基于Activiti的流程与表单交互方法及系统,提出利用Activiti流程及其各人工节点的文档属性自定义操作指导、变量、方法等信息,其中可以充分利用activiti的UEL表达式;利用Activiti流程变量命名规则定义获取流程变量数值的方法;基于以上两点,让Activiti只负责流程定义,业务系统就可以统一处理流程相关页面展示和执行逻辑。

本发明的技术方案包括一种基于Activiti的流程与表单交互方法,其特征在于,该方法包括以下步骤:S1,创建并部署流程模型,具体包括根据流程变量规则创建对应的一个或多个节点的流程变量,并部署模型,生成流程定义;S2,启动流程并生成流程实例,基于流程变量规则获取流程实例一个或多个节点的流程变量值;S3,完成任务后通过交互界面对当前和/或将来运行的流程传递流程变量及其对应的数值,以控制当前和/将来运行的流程流向或任务执行者。

根据所述的基于Activiti的流程与表单交互方法,其中步骤S1具体包括:基于Activiti流程及其各人工节点的文档属性自定义流程模型的操作指导、变量及方法。

根据所述的基于Activiti的流程与表单交互方法,其中实现方式为使用Activiti的UEL表达式完成对流程模型的自定义操作说明、变量类型及操作方法。

根据所述的基于Activiti的流程与表单交互方法,其中流程变量规则将包括有一个或多个变量名称以字符串形式进行命名。根据所述的基于Activiti的流程与表单交互方法,其中步骤S2具体包括:启动流程并生成流程实例时获取流程实例的一个或多个节点的文档信息;

基于流程变量规则解析文档信息获取流程变量的流程变量信息。

根据所述的基于Activiti的流程与表单交互方法,其中步骤S3具体包括:S31,根据流程变量信息确认流程变量的操作说明、变量类型及操作方法;S32,根据所获取的操作说明在交互界面显示操作指导信息;S33,根据所获取的变量类型执行对应的操作,若为普通变量,则在交互界面通过变量控制组件的当前状态,若为流程变量,则通过变量定义规则计算流程变量的数量;S34,根据所获取的操作方法执行对应的逻辑操作方法;S35,当完成所述步骤S31-S35方法的任务后,向流程传递流程变量及数值,进而控制流程的流向或后续任务执行者。

本发明的技术方案还包括一种用于执行上述任意方法的基于Activiti的流程与表单交互系统,该系统包括:流程创建模块,用于创建并部署流程模型,具体包括根据流程变量规则创建对应的一个或多个节点的流程变量,并部署模型,生成流程定义;流程解析模块,用于启动流程并生成流程实例,基于流程变量规则获取流程实例一个或多个节点的流程变量值;流程控制模块,用于完成任务后通过交互界面对当前和/或将来运行的流程传递流程变量及其对应的数值,以控制当前和/将来运行的流程流向或任务执行者。

本发明的有益效果为:业务系统与Activiti工作流软件只需通过activiti-rest Web应用的Restful Web API方法进行通讯和数据交互;Activiti软件可独立部署到不同的服务器;Activiti工作流与业务系统的各种业务实现分离得更加彻底,对于Activiti工作流软件的升级替换将非常容易;业务模块可以独立开发和部署、集中式管理,实现与工作流模块间的松耦合;对于即使完全不懂编程的流程设计人员来说,也可以通过图形化的流程编辑和配置,实现复杂、灵活的流程定义、表单UI控制和各种场景下的业务逻辑执行;异步业务逻辑的引入将大大提高系统的并发能力和用户体验;最大程度地降低Activiti工作流软件升级对系统的变动影响;流程相关UI界面不依赖于流程表单定义,可以通过Web前后端分离技术、流行的界面设计工具等实现,界面可以更加丰富、便捷和友好。

附图说明

图1所示为根据本发明的总体流程图;

图2所示为根据本发明的系统框图;

图3所示为根据本发明实施方式的通过流程变量名称解析执行相关逻辑流程图;

图4所示为根据本发明实施方式的流程及其节点的文档属性内容规范流程图;

图5所示为根据本发明实施方式的服务器、WEB端及其他模块的连接关系图。

具体实施方式

以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。

需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

图1所示为根据本发明的总体流程图。具体包括:S1,创建并部署流程模型,具体包括根据流程变量规则创建对应的一个或多个节点的流程变量,并部署模型,生成流程定义;S2,启动流程并生成流程实例,基于流程变量规则获取流程实例一个或多个节点的流程变量值;S3,完成任务后通过交互界面对当前和/或将来运行的流程传递流程变量及其对应的数值,以控制当前和/将来运行的流程流向或任务执行者。

图2所示为根据本发明的系统框图。其具体包括:流程创建模块,用于创建并部署流程模型,具体包括根据流程变量规则创建对应的一个或多个节点的流程变量,并部署模型,生成流程定义;流程解析模块,用于启动流程并生成流程实例,基于流程变量规则获取流程实例一个或多个节点的流程变量值;流程控制模块,用于完成任务后通过交互界面对当前和/或将来运行的流程传递流程变量及其对应的数值,以控制当前和/将来运行的流程流向或任务执行者。

图3所示为根据本发明实施方式的通过流程变量名称解析执行相关逻辑流程图。在Activiti流程编辑器中的流程变量命名方面,我们定义了一套规约,这样,可以通过变量名字符串的解析,在业务系统软件中调用对应的方法来获取变量值,Activiti支持的流程变量名字符串长度最大为255个字节,变量名的命名包括将变量所要执行的行为的对应以字符串形式,如:变量名=“获取对象ID”+“执行者的用户标识码”+“权限等级”。

图4所示为根据本发明实施方式的流程及其节点的文档属性内容规范流程图。如图4所示,其具体包括:

为了让VWF-explorer中的两种流程设计器也能方便地开发我们想要的流程(主要是实现类似为流程变量赋值等功能)、丰富流程及其节点的各种扩展属性、填写操作说明、减少提交等操作的后台操作步骤和时间、实现未来流程的功能扩展,鉴于每个用户任务实例的创建都会自动复制任务节点的文档属性内容,我们需要在流程设计时,对用户任务的文档属性内容进行规范(采用BNF规范)和格式化。

1)VWFVar类型的流程变量要求在流程的表格和文档中同时存在,它是工单向流程方向流转的流程变量,应该配置在任务节点的表格下,在Document中也配置一份是由于其参数无法在表格中定义。

2)文档中可以引用其它流程变量,语法同Activiti的表达式语法。除流程变量之外,应可以引用工单的上下文信息,例如工单代码等工单主表信息。

3)方法用来定义工单处理过程中要执行的业务逻辑,接口统一,除了自带的相关参数外,还可以通过params扩展新的参数;

4)对于流程节点,若定义了BeforeEvent和AfterEvent方法,相当于流程节点的前后触发事件,无terminateEvent方法;

5)对于流程的文档属性,若定义了BeforeEvent和AfterEvent方法,相当于流程启动和结束的触发事件;

6)对于流程的文档属性,若定义了terminateEvent方法,表示流程终止事件;

7)若type为空(即:””)或不设置,仅表示在对应流程节点要执行的业务逻辑,待阅等;

8)Params中可以包含流程变量的值,定义方法参考activiti的UEL表达式;

9)“Async”:{True|False},没定义或默认为False,即同步执行。

10)变量的“描述”属性可以没有。

图5所示为根据本发明实施方式的服务器、WEB端及其他模块的连接关系图。其具体流程步骤说明如下:客户流程定义人员通过Web浏览器访问可视化流程编辑和调试器网站进行流程编辑、调试和部署;系统或流程管理员在业务系统网站将新定义的流程配置为指定单据审批流转所对应的流程;单据录入人员在业务系统网站录入单据并发起审批流程;业务系统网站后台服务调用流程的REST Web API接口,实现单据与流程的数据交互。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文步骤的指令或程序时,本文的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本文的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

以上,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

你可能感兴趣的:(uel表达式,字符串截取)