《一种工作流数据持久化的方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种工作流数据持久化的方法和装置.pdf(43页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103425462 A(43)申请公布日 2013.12.04CN103425462A*CN103425462A*(21)申请号 201210149423.0(22)申请日 2012.05.14G06F 9/44(2006.01)G06Q 10/06(2012.01)(71)申请人阿里巴巴集团控股有限公司地址英属开曼群岛大开曼资本大厦一座四层847号邮箱(72)发明人章向明(74)专利代理机构北京润泽恒知识产权代理有限公司 11319代理人赵娟(54) 发明名称一种工作流数据持久化的方法和装置(57) 摘要本申请提供了一种工作流数据持久化的方法及装置,其中,所述方法包。
2、括:提取服务端配置文件中声明的服务信息;为客户端配置文件中声明的服务接口创建动态代理类,并生成所述服务接口的策略配置信息;获得需要进行持久化的目标工作流数据;调用所述工作流数据持久化服务接口获得其动态代理类,并在所述动态代理类中将所述目标工作流数据组装成事件;按照所述工作流数据持久化策略的配置信息运行所述事件,获得所述事件对应的工作流数据持久化服务信息,并按照所述工作流数据持久化服务信息对目标工作流数据进行持久化操作。本申请可以节省维护成本,增强工作流产品的扩展性。(51)Int.Cl.权利要求书6页 说明书32页 附图4页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书6页。
3、 说明书32页 附图4页(10)申请公布号 CN 103425462 ACN 103425462 A1/6页21.一种工作流数据持久化的方法,其特征在于,包括:提取服务端配置文件中声明的服务信息;其中,所述服务信息包括工作流数据持久化服务信息;为客户端配置文件中声明的服务接口创建动态代理类,并生成所述服务接口的策略配置信息;其中,所述服务接口包括工作流数据持久化服务接口,所述策略配置信息包括工作流数据持久化的策略配置信息;获得需要进行持久化的目标工作流数据;调用所述工作流数据持久化服务接口获得其动态代理类,并在所述动态代理类中将所述目标工作流数据组装成事件;按照所述工作流数据持久化策略的配置信。
4、息运行所述事件,获得所述事件对应的工作流数据持久化服务信息,并按照所述工作流数据持久化服务信息对目标工作流数据进行持久化操作。2.根据权利要求1所述的方法,其特征在于,所述工作流数据持久化服务信息包括:服务接口的实现类,服务接口实现类的地址,服务接口实现类中的方法以及方法中声明的参数类型;在所述提取服务端配置文件中声明的服务信息的步骤之后,所述的方法还包括:将所述服务信息按照预置的第一数据格式注册到服务端容器中。3.根据权利要求2所述的方法,其特征在于,所述预置的第一数据格式包括:服务容器及注册类ServiceRegistry,其中,成员变量包括:表示包含各种不同名称的服务信息集合static。
5、 Map;服务接口实现的信息ServiceInfo,其中,成员变量包括:服务接口的实现类,暴露的服务接口,服务接口实现类的地址serviceURI,服务接口实现类中的方法信息集合Map;服务接口实现类中方法的信息OperationInfo,其中,成员变量包括:方法名,方法中声明的参数信息集合List,方法返回值信息ReturnInfo returnInfo)方法异常信息集合List,方法对象(Method method);方法中声明的参数信息ParameterInfo,其中,成员变量包括:参数类型String typeName,参数类型类Class type;方法返回值信息ReturnInfo。
6、,其中,成员变量包括:返回值类型String typeName,返回值类型类Class type;方法异常信息ExceptionInfo,其中,成员变量包括:异常类型String typeName,异常类型类Class type。4.根据权利要求1所述的方法,其特征在于,在为客户端配置文件中声明的服务接口创建动态代理类的步骤之后,所述的方法还包括:将所述动态代理类注册到客户端容器中。5.根据权利要求4所述的方法,其特征在于,所述工作流数据持久化策略的配置信息包括:表示事件发生时,执行的行为动作的事件策略eventName;表示存储信息时,采用某种存储方式的存储策略storeRule;权 利 要。
7、 求 书CN 103425462 A2/6页3表示消息传递的路由机制的路由策略routeRule;表示接口实现类所在的位置的服务实现地址endpointUrl;表示事件信息的调用方式的调用策略invokeType;和/或,表示消息被消费成功后,自动回调发起方的地址的回调地址callbackUri。6.根据权利要求2或3所述的方法,其特征在于,所述事件为统一事件;所述调用工作流数据持久化服务接口获得其动态代理类,并在所述动态代理类中将目标工作流数据组装成事件的步骤包括:从所述客户端容器中调用工作流数据持久化服务接口;由所述工作流数据持久化服务接口调用对应的动态代理类;在所述动态代理类中,根据所述。
8、服务接口实现类中的方法以及方法中声明的参数类型,以及,工作流数据持久化的策略配置信息,将所述目标工作流数据按照预置的第二数据格式组装成统一事件。7.根据权利要求6所述的方法,其特征在于,所述预置的第二数据格式包括:统一事件对象UniformEvent:其中,成员变量包括:事件序列IDeventId,事件名称eventName,事件回调地址callbackUri,事件创建时间createdTime,事件发送时间sendedTime,事件上带的统一消息对象UniformMessage;统一消息对象UniformMessage:其中,成员变量包括:消息IDmessageId,消息头UniformMe。
9、ssageHeader,消息体UniformMessagePlayload,消息处理结果返回值Object response;统一消息体对象UniformMessagePlayload:其中,成员变量包括:参数列表Objectparams;统一消息头对象UniformMessageHeader:其中,成员变量包括:事件的名字eventName,事件回调地址callbackUri,消息产生的时间createdTime,消息发送时间sendedTime,服务端实现地址endpointUrl,方法名methodName,消息计划消费的时间planTime,存储规则storeRule,路由规则rout。
10、eRule,超时时间timeout,失败重试次数retry,调用方式:同步/异步invokeType。8.根据权利要求3或7所述的方法,其特征在于,所述按照工作流数据持久化策略的配置信息运行所述事件,获得所述事件对应的工作流数据持久化服务信息,并按照所述工作流数据持久化服务信息对目标工作流数据进行持久化操作的步骤包括:获取依据所述调用策略配置的事件中消息的调用方式,若为同步调用,则触发所述事件,所述事件具有事件名称;根据所述事件名称获取相应的事件监听实现类,所述事件监听实现类依据所述事件策略配置生成;在所述事件监听实现类中,根据所述路由策略,查找位于本地或远程的服务接口实现类的地址;根据所述服。
11、务接口实现类的地址,从服务端容器中找到相应的服务接口实现类;调用所述服务接口实现类,将所述目标工作流数据保存在本地或远程的工作流数据库中。权 利 要 求 书CN 103425462 A3/6页49.根据权利要求3或7所述的方法,其特征在于,在调用所述工作流数据持久化服务接口之前,所述的方法还包括:在预设的事务管理器中启动事务;所述按照工作流数据持久化策略的配置信息运行所述事件,获得所述事件对应的工作流数据持久化服务信息,并按照所述工作流数据持久化服务信息对目标工作流数据进行持久化操作的步骤包括:获取依据所述调用策略配置的事件中消息的调用方式,若为异步调用,则创建事务同步器,并在所述事务管理器中。
12、注册事务同步器;提交事务,调用事务同步器,根据所述存储策略保存事件中的消息,然后将事件加入异步队列中;异步队列监听器监听到有事件加入时,触发所述事件;根据所述事件的名称获取相应的事件监听实现类,所述事件监听实现类依据所述事件策略配置生成;在所述事件监听实现类中,根据所述路由策略,查找位于本地或远程的服务接口实现类的地址;根据所述服务接口实现类的地址,从服务端容器中找到相应的服务接口实现类;调用所述服务接口实现类,将所述目标工作流数据保存在本地或远程的工作流数据库中;若所述服务接口实现类调用成功,则根据所述存储策略,删除保存过的事件消息,然后根据所述回调地址,回调发起方通知操作成功;若所述服务接。
13、口实现类调用失败,则根据所述回调地址,回调发起方执行补偿业务操作。10.根据权利要求1所述的方法,其特征在于,所述获得需要进行持久化的目标工作流数据的步骤包括:流程实例开始流转,遇到需要保存数据的节点,将节点实例的数据保存到流程上下文中指定的有序队列中;流程实例流转结束,获取所述有序队列中的节点实例数据为需要进行持久化的目标工作流数据。11.一种工作流数据持久化的装置,其特征在于,包括:服务端配置模块,用于提取服务端配置文件中声明的服务信息;其中,所述服务信息包括工作流数据持久化服务信息;客户端配置模块,用于为客户端配置文件中声明的服务接口创建动态代理类,并生成所述服务接口的策略配置信息;其中。
14、,所述服务接口包括工作流数据持久化服务接口,所述策略配置信息包括工作流数据持久化的策略配置信息;工作流数据获取模块,用于获得需要进行持久化的目标工作流数据;代理类调用模块,用于调用所述工作流数据持久化服务接口获得其动态代理类,并在所述动态代理类中将所述目标工作流数据组装成事件;事件执行模块,用于按照所述工作流数据持久化策略的配置信息运行所述事件,获得所述事件对应的工作流数据持久化服务信息,并按照所述工作流数据持久化服务信息对目权 利 要 求 书CN 103425462 A4/6页5标工作流数据进行持久化操作。12.根据权利要求11所述的装置,其特征在于,所述工作流数据持久化服务信息包括:服务接。
15、口的实现类,服务接口实现类的地址,服务接口实现类中的方法以及方法中声明的参数类型;所述的装置还包括:服务容器注册模块,与所述服务端配置模块相连,用于将所述服务信息按照预置的第一数据格式注册到服务端容器中。13.根据权利要求12所述的装置,其特征在于,所述预置的第一数据格式包括:服务容器及注册类ServiceRegistfy,其中,成员变量包括:表示包含各种不同名称的服务信息集合static Map;服务接口实现的信息ServiceInfo,其中,成员变量包括:服务接口的实现类,暴露的服务接口,服务接口实现类的地址serviceURI,服务接口实现类中的方法信息集合Map;服务接口实现类中方法的。
16、信息OperationInfo,其中,成员变量包括:方法名,方法中声明的参数信息集合List,方法返回值信息ReturnInfo returnInfo)方法异常信息集合List,方法对象(Method method);方法中声明的参数信息ParameterInfo,其中,成员变量包括:参数类型String typeName,参数类型类Class type;方法返回值信息ReturnInfo,其中,成员变量包括:返回值类型String typeName,返回值类型类Class type;方法异常信息ExceptionInfo,其中,成员变量包括:异常类型String typeName,异常类型类。
17、Class type。14.根据权利要求11所述的装置,其特征在于,还包括:客户端容器注册模块,与所述客户端配置模块相连,用于将所述动态代理类注册到客户端容器中。15.根据权利要求14所述的装置,其特征在于,所述工作流数据持久化策略的配置信息包括:表示事件发生时,执行的行为动作的事件策略eventName;表示存储信息时,采用某种存储方式的存储策略storeRule;表示消息传递的路由机制的路由策略routeRule;表示接口实现类所在的位置的服务实现地址endpointUrl;表示事件信息的调用方式的调用策略invokeType;和/或,表示消息被消费成功后,自动回调发起方的地址的回调地址c。
18、allbackUri。16.根据权利要求12或13所述的装置,其特征在于,所述事件为统一事件;所述代理类调用模块包括:服务接口调用子模块,用于从所述客户端容器中调用工作流数据持久化服务接口;动态代理类提取子模块,用于由所述工作流数据持久化服务接口调用对应的动态代理类;权 利 要 求 书CN 103425462 A5/6页6事件组装子模块,用于在所述动态代理类中,根据所述服务接口实现类中的方法以及方法中声明的参数类型,以及,工作流数据持久化的策略配置信息,将所述目标工作流数据按照预置的第二数据格式组装成统一事件。17.根据权利要求16所述的装置,其特征在于,所述预置的第二数据格式包括:统一事件对。
19、象UniformEvent:其中,成员变量包括:事件序列ID eventId,事件名称eventName,事件回调地址callbackUri,事件创建时间createdTime,事件发送时间sendedTime,事件上带的统一消息对象UniformMessage;统一消息对象UniformMessage:其中,成员变量包括:消息ID messageId,消息头UniformMessageHeader,消息体UniformMessagePlayload,消息处理结果返回值Object response;统一消息体对象UniformMessagePlayload:其中,成员变量包括:参数列表Obj。
20、ectparams;统一消息头对象UniformMessageHeader:其中,成员变量包括:事件的名字eventName,事件回调地址callbackUri,消息产生的时间createdTime,消息发送时间sendedTime,服务端实现地址endpointUrl,方法名methodName,消息计划消费的时间planTime,存储规则storeRule,路由规则routeRule,超时时间timeout,失败重试次数retry,调用方式:同步/异步invokeType。18.根据权利要求13或17所述的装置,其特征在于,所述事件执行模块包括:第一事件触发子模块,用于获取依据所述调用策略。
21、配置的事件中消息的调用方式,若为同步调用,则触发所述事件,所述事件具有事件名称;事件监听子模块,用于根据所述事件名称获取相应的事件监听实现类,所述事件监听实现类依据所述事件策略配置生成;路由子模块,用于在所述事件监听实现类中,根据所述路由策略,查找位于本地或远程的服务接口实现类的地址;实现类定位子模块,用于根据所述服务接口实现类的地址,从服务端容器中找到相应的服务接口实现类;持久化操作子模块,用于调用所述服务接口实现类,将所述目标工作流数据保存在本地或远程的工作流数据库中。19.根据权利要求13或17所述的装置,其特征在于,还包括:事务启动模块,用于在预设的事务管理器中启动事务;所述事件执行模。
22、块包括:事务同步器创建子模块,用于获取依据所述调用策略配置的事件中消息的调用方式,若为异步调用,则创建事务同步器,并在所述事务管理器中注册事务同步器;事务提交处理子模块,用于提交事务,调用事务同步器,根据所述存储策略保存事件中的消息,然后将事件加入异步队列中;第二事件触发子模块,用于异步队列监听器监听到有事件加入时,触发所述事件;事件监听子模块,用于根据所述事件的名称获取相应的事件监听实现类,所述事件监听实现类依据所述事件策略配置生成;路由子模块,用于在所述事件监听实现类中,根据所述路由策略,查找位于本地或远程权 利 要 求 书CN 103425462 A6/6页7的服务接口实现类的地址;实现。
23、类定位子模块,用于根据所述服务接口实现类的地址,从服务端容器中找到相应的服务接口实现类;持久化操作子模块,用于调用所述服务接口实现类,将所述目标工作流数据保存在本地或远程的工作流数据库中;调用成功处理子模块,用于在所述服务接口实现类调用成功时,则根据所述存储策略,删除保存过的事件消息,然后根据所述回调地址,回调发起方通知操作成功;调用失败处理子模块,用于在所述服务接口实现类调用失败,则根据所述回调地址,回调发起方执行补偿业务操作。20.根据权利要求11所述的装置,其特征在于,所述工作流数据获取模块包括:数据生成子模块,用于流程实例开始流转,遇到需要保存数据的节点,将节点实例的数据保存到流程上下。
24、文中指定的有序队列中;数据提取子模块,用于流程实例流转结束,获取所述有序队列中的节点实例数据为需要进行持久化的目标工作流数据。权 利 要 求 书CN 103425462 A1/32页8一种工作流数据持久化的方法和装置技术领域0001 本申请涉及工作流数据处理的技术领域,特别是涉及一种工作流数据持久化的方法和一种工作流数据持久化的装置。背景技术0002 工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递。
25、文档、信息或者任务。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。将整个业务过程看作是一条河,其中流过的河水就是工作流。0003 工作流属于计算机支持的协同工作(Computer Supported Cooperative Work,CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。0004 许多公司采用纸张表单,手工传递的方式,一级一级审批签字,工作效率非常低下,对于统计报表功能则不能实现。而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印。
26、等,大大提高了效率。0005 工作流数据的持久化是一个工作流产品必不可少的组成部分,传统工作流产品的数据持久化实现方式,无法灵活无侵入的满足各种持久化需求,以现有技术中常用的JBPM3、JBPM4(Java Business Process Management,业务流程管理)等产品为例,其实现了一种同步持久化工作流数据的方式,基于所述JBPM3、JBPM4等产品,现有技术还提出了一种改进的工作流数据的持久化方式,具体包括如下步骤:0006 步骤一:找到工作流持久化数据的代码,在里面增加一个判断机制。0007 如果发现流程上下文中存在异步标志,则调用异步队列,做异步持久化数据操作。如果同步,则。
27、直接调用同步方法。0008 步骤二:当有一个新的持久化需求时,例如:需要根据一个指定的路由,调用远程服务器异步持久化流程数据。这个时候再次改动代码,增加判断和相应的标识符。0009 可以看出,现有技术的方案是基于硬编码的形式实现,每当增加一种持久化方式时,都需要修改代码。增加了维护的成本,不利于业务的扩展。0010 因此,目前本领域技术人员迫切需要解决的一个技术问题在于。如何创造性的提出一种工作流数据持久化的机制,用以节省维护成本,增强工作流产品的扩展性。发明内容0011 本申请的目的是提供一种工作流数据持久化的方法和装置,用以提高计算机和各种用户终端应用的安全性,成为本领域技术人员迫切需要解。
28、决的问题。0012 为了解决上述问题,本申请公开了一种工作流数据持久化的方法,包括:0013 提取服务端配置文件中声明的服务信息;其中,所述服务信息包括工作流数据持说 明 书CN 103425462 A2/32页9久化服务信息;0014 为客户端配置文件中声明的服务接口创建动态代理类,并生成所述服务接口的策略配置信息;其中,所述服务接口包括工作流数据持久化服务接口,所述策略配置信息包括工作流数据持久化的策略配置信息;0015 获得需要进行持久化的目标工作流数据;0016 调用所述工作流数据持久化服务接口获得其动态代理类,并在所述动态代理类中将所述目标工作流数据组装成事件;0017 按照所述工作。
29、流数据持久化策略的配置信息运行所述事件,获得所述事件对应的工作流数据持久化服务信息,并按照所述工作流数据持久化服务信息对目标工作流数据进行持久化操作。0018 优选的是,所述工作流数据持久化服务信息包括:服务接口的实现类,服务接口实现类的地址,服务接口实现类中的方法以及方法中声明的参数类型;0019 在所述提取服务端配置文件中声明的服务信息的步骤之后,所述的方法还包括:0020 将所述服务信息按照预置的第一数据格式注册到服务端容器中。0021 优选的是,所述预置的第一数据格式包括:0022 服务容器及注册类ServiceRegistry,其中,成员变量包括:表示包含各种不同名称的服务信息集合s。
30、tatic Map;0023 服务接口实现的信息ServiceInfo,其中,成员变量包括:服务接口的实现类,暴露的服务接口,服务接口实现类的地址serviceURI,服务接口实现类中的方法信息集合Map;0024 服务接口实现类中方法的信息OperationInfo,其中,成员变量包括:方法名,方法中声明的参数信息集合List,方法返回值信息ReturnInfo returnInfo)方法异常信息集合List,方法对象(Method method);0025 方法中声明的参数信息ParameterInfo,其中,成员变量包括:参数类型String typeName,参数类型类Class ty。
31、pe;0026 方法返回值信息ReturnInfo,其中,成员变量包括:返回值类型String typeName,返回值类型类Class type;0027 方法异常信息ExceptionInfo,其中,成员变量包括:异常类型String typeName,异常类型类Class type。0028 优选的是,在为客户端配置文件中声明的服务接口创建动态代理类的步骤之后,所述的方法还包括:0029 将所述动态代理类注册到客户端容器中。0030 优选的是,所述工作流数据持久化策略的配置信息包括:0031 表示事件发生时,执行的行为动作的事件策略eventName;0032 表示存储信息时,采用某种存。
32、储方式的存储策略storeRule;0033 表示消息传递的路由机制的路由策略routeRule;0034 表示接口实现类所在的位置的服务实现地址endpointUrl;0035 表示事件信息的调用方式的调用策略invokeType;0036 和/或,说 明 书CN 103425462 A3/32页100037 表示消息被消费成功后,自动回调发起方的地址的回调地址callbackUri。0038 优选的是,所述事件为统一事件;所述调用工作流数据持久化服务接口获得其动态代理类,并在所述动态代理类中将目标工作流数据组装成事件的步骤包括:0039 从所述客户端容器中调用工作流数据持久化服务接口;00。
33、40 由所述工作流数据持久化服务接口调用对应的动态代理类;0041 在所述动态代理类中,根据所述服务接口实现类中的方法以及方法中声明的参数类型,以及,工作流数据持久化的策略配置信息,将所述目标工作流数据按照预置的第二数据格式组装成统一事件。0042 优选的是,所述预置的第二数据格式包括:0043 统一事件对象UniformEvent:其中,成员变量包括:事件序列IDeventId,事件名称eventName,事件回调地址callbackUri,事件创建时间createdTime,事件发送时间sendedTime,事件上带的统一消息对象UniformMessage;0044 统一消息对象Unif。
34、ormMessage:其中,成员变量包括:消息IDmessageId,消息头UniformMessageHeader,消息体UniformMessagePlayload,消息处理结果返回值Object response;0045 统一消息体对象UniformMessagePlayload:其中,成员变量包括:参数列表Objectparams;0046 统一消息头对象UniformMessageHeader:其中,成员变量包括:事件的名字eventName,事件回调地址callbackUri,消息产生的时间createdTime,消息发送时间sendedTime,服务端实现地址endpointU。
35、rl,方法名methodName,消息计划消费的时间planTime,存储规则storeRule,路由规则routeRule,超时时间timeout,失败重试次数retry,调用方式:同步/异步invokeType。0047 优选的是,所述按照工作流数据持久化策略的配置信息运行所述事件,获得所述事件对应的工作流数据持久化服务信息,并按照所述工作流数据持久化服务信息对目标工作流数据进行持久化操作的步骤包括:0048 获取依据所述调用策略配置的事件中消息的调用方式,若为同步调用,则触发所述事件,所述事件具有事件名称;0049 根据所述事件名称获取相应的事件监听实现类,所述事件监听实现类依据所述事件。
36、策略配置生成;0050 在所述事件监听实现类中,根据所述路由策略,查找位于本地或远程的服务接口实现类的地址;0051 根据所述服务接口实现类的地址,从服务端容器中找到相应的服务接口实现类;0052 调用所述服务接口实现类,将所述目标工作流数据保存在本地或远程的工作流数据库中。0053 优选的是,在调用所述工作流数据持久化服务接口之前,所述的方法还包括:0054 在预设的事务管理器中启动事务;0055 所述按照工作流数据持久化策略的配置信息运行所述事件,获得所述事件对应的工作流数据持久化服务信息,并按照所述工作流数据持久化服务信息对目标工作流数据进行持久化操作的步骤包括:说 明 书CN 103425462 A10。