流程引擎中进行数据存取的系统的制作方法

文档序号:6378069阅读:259来源:国知局
专利名称:流程引擎中进行数据存取的系统的制作方法
技术领域
本发明属于流程引擎数据处理技术领域,具体涉及一种流程引擎中进行数据存取的系统。
背景技术
现在流程产品在流程流转过程中过于需要保存过程数据用于后续线条、节点计算的时候往往采用调用java代码、执行数据库等繁琐的方式来存储变量,在后续线条、节点上又通过上述复杂方法获取回变量值,这样的做法会大大降低开发效率,加大出错机率,并且有些时候只是开发人员只是想临时记录下某个变量值,在后续的节点上使用,并不希望将这些数据持久化。现有技术需要保存流程变量需要在流程设计器里配置相应的java、sql代码把变 量存储到数据库中,这种方法只对于需要持久化的变量有效,但是只是临时保存在下面节点或者线条使用的时候就需要存放在数据库中使用完了再删除这样的实现方法对于开发人员要求太高很容易出错。大大流程引擎的使用简易度,同时加大了流程的设计开发时间。在流程的流转中常常需要用一些变量存放一些计算信息返回的信息供下面的节点或者线条使用,怎样才能很方便的记录流程的计算信息并且在后面的节点或者线条上方便的使用这就是本专利要解决的问题。本发明因此而来。

发明内容
本发明目的在于提供一种流程引擎中进行数据存取的系统,解决了现有技术中记录流程的计算信息难以在后面的节点或者线条上方便的使用等问题。为了解决现有技术中的这些问题,本发明提供的技术方案是—种流程引擎中进行数据存取的系统,其特征在于所述系统包括数据初始化配置模块、瞬间变量处理模块、持久化变量处理模块和变量类型判断模块,所述瞬间变量处理模块用于发现瞬间变量数据,然后进行提供临时存储、获取瞬间变量数据,所述持久化变量处理模块用于发现持久化变量数据,然后进行提供临时存储、获取持久化变量数据;所述变量类型判断模块用于根据变量数据的数据特征进行判断该变量数据为瞬间变量数据还是持久化变量数据;所述数据初始化配置模块用于在流程引擎中初始化变量数据的值。优选的,所述系统还包括持久化变量数据库,当变量类型判断模块判断变量数据为持久化变量数据时,流程引擎将持久化变量数据和对应的持久化变量名存入持久化变量数据库中。本发明大大简化了变量数据的存储和取出过程,流程设计人员可以使用很简单的语句完成对流程变量的保存和获取,非专业人员页可以参与其中设计流程,大大提高了流程设计的友好度。在本发明技术方案中,可以使用这样的简单语句存取变量,例如保存方法${瞬态变量}=”提交人”;而获取方法${瞬态变量},这样可以使开发人员在流程设计的时候很方便的存取变量数据(瞬态、持久化),比起现有产品在流程设计的时候配置大量语句去实现变量的记录,数据处理大大简化。本发明技术方案中变量数据用户需要在使用前配置变量的数据类型、是否持久化。相对于现有技术中的方案,本发明的优点是本发明通过在流程设计器中配置Sql来存储流程变量,通过在流程设计器中扩展java代码来保存数据变量,通过瞬态、持久化变量处理模块的分别处理,可以使开发人员在流程设计的时候很方便的存取变量数据(瞬态、持久化)。


下面结合附图及实施例对本发明作进一步描述
图I为本发明流程引擎中进行数据存取的系统进行数据存取的流程原理图。
具体实施例方式以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。实施例如图I所示,本实施例流程引擎中进行数据存取的系统,包括数据初始化配置模块、瞬间变量处理模块、持久化变量处理模块和变量类型判断模块,所述瞬间变量处理模块用于发现瞬间变量数据,然后进行提供临时存储、获取瞬间变量数据,所述持久化变量处理模块用于发现持久化变量数据,然后进行提供临时存储、获取持久化变量数据;所述变量类型判断模块用于根据变量数据的数据特征进行判断该变量数据为瞬间变量数据还是持久化变量数据;所述数据初始化配置模块用于在流程引擎中初始化变量数据的值。为了能够方便的使用流程变量,首先需要配置变量瞬态变量
<fixflow:DataVariable id=”瞬态变量” dataTy.pe=”java.iang,String” ><fix flow: exp res s ion xsi: type=" fixfiow: Expression " name="瞬态变量” >默认值 </fixflo w: expression〉
<fixf Io>v: documentationxsi:type=”fixflow:Dociime!Uation”>^ 明文档 </11\[10、' :(10<11111611|3 0011>
</fixflow:Data¥ariable>持久变量<fixfIow: Data Variable id="持久变量” dataType=”java.lang.String”is Persisten ce=" tr ii e">
<fixf!ow: express ion xsi: type=" fixflovv: Expression " name=” 持久变量”>默认值〈/fixflow: expression〉
<fi\flow: documentationxsi:type=,,fixflow:Documentation">i^ 明文档 </fixflow: documentation〉
</fi\flovv:DataVariable>以上是数据变量XML格式在定义数据变量的时候需要注明是否可以持久化。定义好名称之后就可以在流程引擎中使用变量了。瞬态变量实现过程 I.在流程中对数据变量做出更改执行表达式${瞬态变量}=12.这时变量引擎发现$ {瞬态变量}这个变量发生更改便将$ {瞬态变量}的值记录在变量引擎3.在后面的线条或者节点上通过$ {瞬态变量}表达式取值.4.变量引擎发现流程在通过${瞬态变量}取值的时候,发现是瞬态变量则直接到变量引擎的环境中去获取值,当发现变量引擎中如果没有注册过${瞬态变量}则会去从配置文件获取默认值配置的值。持久化变量实现过程在流程中对数据变量做出更改执行表达式${持久变量} =22.这时变量引擎发现$ {持久变量}这个变量发生更改便将$ {瞬态变量}的值记录在变量引擎3.瞬态变量和持久化变量在赋值的时候都是将值放在变量引擎中存储,并不是直接存储到数据库。4.在后面的线条或者节点上通过$ {持久变量}表达式取值.5.变量引擎发现流程在通过${持久变量}取值的时候,发现是持久变量则直接到变量引擎的环境中去获取值,如果没在变量引擎中获取到值的时候则直接去数据库查找,如果数据也没有则直接通过配置的默认值获取值。6.持久化变量在流程实例保存的时候才会最终保存到数据中,瞬态变量在这次操作结束后则直接释放不存储。本实施例中流程引擎容器其实是一个java中的线程副本,里边可以存储这一次请求中的数据,在线程副本中我们存放了变量的Map用来存取数据变量。当请求结束的时候持久化变量会从Map中被保存到数据库,瞬态的直接被系统清空掉。持久化变量通过JAVA对象序列化技术存储在数据库FIXFL0W_RUN_VARIABLE表中表的格式如下PR0CESSINSTANCE_ID VARCHAR2(64BYTE);VARIABLE_KEY VARCHAR2(64BYTE); VARIABLE_VALUE BLOB (这个字段用来存储变量值);
VARIABLE_CLASSNAME VARCHAR2(64BYTE);TASKINSTANCE_IDVARCHAR2(64BYTE);T0KEN_ID VARCHAR2(64BYTE);N0DE_ID VARCHAR2(512BYTE) 瞬态变量的存取是通过表达式引擎实现的,当对变量$ {瞬态变量}进行赋值的时候,例如${瞬态变量}=1,则就将向流程容器中注册一个名字叫做“瞬态变量”的变量记录他的值为“I”。这个变量实际是 存储在一个javaMap对象中,Key为瞬态变量;Value为“1”,取出的过程就是使用${瞬态变量},当系统发现在使用${}时会去瞬态变量的Map中查找Key为”瞬态变量”的值。而整个过程都是在一次请求的环境中(java线程副本)完成的当这次请求结束之后数据也将自动消失。持久化变量的使用存取过程是跟瞬态变量一致的,只是持久化变量在流程引擎这次请求结束后保存到数据库,过程是这样的跟瞬态变量一致,持久化变量在赋值之后也先会被存储在Map中当这次流程请求结束后,引擎会遍历一个持久化变量的维护数据并通过定义在维护数据中的变量Key去Map中寻找数据找到的话则将他保存到数据库中。在获取的时候先会去Map中寻找是否有值,没有的话则直接去数据中寻找找到的话放置在Map中。人工任务是工作流中的一个节点流程图中所展现的是人工任务完成之后对变量做的一个操作过程。在使用变量前,先需要对变量进行一个创建配置过程,要先定义变量的名称、类型、是否需要持久化、以及变量的默认值。配置好了这些值变量才能使用。名称为变量使用时的名字,类型标识这个变量的数据类型,是否需要持久化定义了变量是否是一个可持久化的变量,默认值定义了变量在第一次使用的时候里边的值。在流程的表达式配置框中,可以使用如下语句获取变量${数据变量};赋值变量$ {数据变量} =1、$ {数据变量}=,,测试数据”。在定义文件中有一个交isPersistence的属性标识了变量是否需要持久化。〈fixflow:DataVa;riable id=〃 持久变量 〃dataType=〃java. lang.String〃isPersistence=〃true〃>。瞬态变量处理模块会判断语句中是是否使用了变量操作,如果有则将变量赋值或者从流程容器中获取变量的值,同时管理者所有的瞬态变量。持久化变量处理模块也会判断语句中是否使用了变量操作,如果有则将变量赋值或者从流程容器中获取变量的值,与瞬态模块不同持久模块会在线程副本将要结束的时候(这次流程请求结束)会将流程容器里的持久化变量获取出来保存到数据库供下次使用。通过设置瞬态变量和持久化变量分别进行获取和存储,可以使用很简单的语句就可以保存数据、获取数据,大大降低了开发难度,降低了错误率。上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
权利要求
1.一种流程引擎中进行数据存取的系统,其特征在于所述系统包括数据初始化配置模块、瞬间变量处理模块、持久化变量处理模块和变量类型判断模块,所述瞬间变量处理模块用于发现瞬间变量数据,然后进行提供临时存储、获取瞬间变量数据,所述持久化变量处理模块用于发现持久化变量数据,然后进行提供临时存储、获取持久化变量数据;所述变量类型判断模块用于根据变量数据的数据特征进行判断该变量数据为瞬间变量数据还是持久化变量数据;所述数据初始化配置模块用于在流程引擎中初始化变量数据的值。
2.根据权利要求I所述的流程引擎中进行数据存取的系统,其特征在于所述系统还包括持久化变量数据库,当变量类型判断模块判断变量数据为持久化变量数据时,流程引擎将持久化变量数据和对应的持久化变量名存入持久化变量数据库中。
全文摘要
本发明公开了一种流程引擎中进行数据存取的系统,其特征在于所述系统包括数据初始化配置模块、瞬间变量处理模块、持久化变量处理模块和变量类型判断模块,所述瞬间变量处理模块用于发现瞬间变量数据,然后进行提供临时存储、获取瞬间变量数据,所述持久化变量处理模块用于发现持久化变量数据,然后进行提供临时存储、获取持久化变量数据;所述变量类型判断模块用于根据变量数据的数据特征进行判断该变量数据为瞬间变量数据还是持久化变量数据;所述数据初始化配置模块用于在流程引擎中初始化变量数据的值。该系统通过瞬态、持久化变量处理模块的分别处理,可以使开发人员在流程设计的时候很方便的存取变量数据(瞬态、持久化)。
文档编号G06F17/30GK102880472SQ20121037140
公开日2013年1月16日 申请日期2012年9月28日 优先权日2012年9月28日
发明者姜楠, 夏帮国 申请人:方正国际软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1