CN114296983B - 基于触发器运转记录的流程异常处理方法及存储介质 - Google Patents

基于触发器运转记录的流程异常处理方法及存储介质 Download PDF

Info

Publication number
CN114296983B
CN114296983B CN202111645711.0A CN202111645711A CN114296983B CN 114296983 B CN114296983 B CN 114296983B CN 202111645711 A CN202111645711 A CN 202111645711A CN 114296983 B CN114296983 B CN 114296983B
Authority
CN
China
Prior art keywords
node
trigger
data
exception
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111645711.0A
Other languages
English (en)
Other versions
CN114296983A (zh
Inventor
张剑卿
罗义
曹中余
黎风顺
吴迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing Yunfeng Technology Co ltd
Original Assignee
Chongqing Yuncheng Internet Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing Yuncheng Internet Technology Co Ltd filed Critical Chongqing Yuncheng Internet Technology Co Ltd
Priority to CN202111645711.0A priority Critical patent/CN114296983B/zh
Publication of CN114296983A publication Critical patent/CN114296983A/zh
Application granted granted Critical
Publication of CN114296983B publication Critical patent/CN114296983B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种基于触发器运转记录的流程异常处理方法及存储介质,包括:触发器被触发时生成触发器运行日志;顺序执行触发器各节点的动作;判断正在执行的节点是否出现执行异常,如果出现执行异常,则执行异常处理机制,所述异常处理机制包括中止运行机制和继续运行机制;如果未出现执行异常,则记录该节点的运行数据,并写入触发器运行日志。本发明中,通过设置异常处理机制和中止运行机制,企业管理员可自行监控触发器运行情况,方便进行触发器配置时调试,以及在后续问题的排查,中止后可重跑,可减少由于各类系统或者业务异常对客户数据的影响,尽可能保证功能的完整和数据的一致性。

Description

基于触发器运转记录的流程异常处理方法及存储介质
技术领域
本发明属于工业互联网技术领域,涉及一种基于触发器运转记录的流程异常处理方法及存储介质。
背景技术
工业互联网平台就是把设备、生产线、工厂、供应商、产品和客户紧密地连接融合起来,帮助企业优化业务流程或者管理流程。在工业互联网平台向客户提供服务时,往往需要贯通企业的多种单据、流程、硬件、外部软件系统。当这样的贯通过程在传统开发模式下往往需要编写大量的业务代码来实现,但作为提供服务的Saas平台来说,在面对不同行业、不同规模的企业时,这样的诉求往往都具有差异,因此支持从页面上进行数据流转配置和业务编排的触发器应运而生。
在传统开发方式下,代码的运行过程会通过添加大量的日志来记录,在出现问题时需要对日志进行相应的排查,并且无法对失败的业务流转再次进行的处理。通过采用基于节点的可视化配置方式可以实现用户自行配置触发器,而在用户自行配置的触发器中,同样需要支持用户对于运行过程进行详细监控,并且在出现问题时能够及时通知到系统管理员或其他相关人员,能够对数据或者触发器进行处理,使失败的流程可以再次进行运转。
发明内容
有鉴于此,本发明的目的在于提供一种能够减少异常的持续时间及对终端用户影响的基于触发器运转记录的流程异常处理方法及存储介质。
为达到上述目的,本发明提供如下技术方案:
一种基于触发器运转记录的流程异常处理方法,所述触发器由多个执行预置动作的节点以可视化方式按照父子关系逐级指向配置而成,所述流程异常处理方法包括以下步骤:
S1、检测触发器的触发动作,基于触发动作生成触发器运行日志,并按照所述父子关系顺序执行触发器各节点的动作;
S2、判断正在执行的节点是否出现执行异常;
S3、若出现执行异常,则执行异常处理机制;其中,所述异常处理机制包括中止运行机制和继续运行机制;所述继续运行机制用于当节点出现执行异常时,结束当前节点的动作并继续运行触发器的下一节点;所述中止运行机制用于当节点出现执行异常时,将内存中的节点运行数据存入数据库中,根据需要执行重跑机制;并将异常数据写入所述触发器运行日志中;
S4、若未出现执行异常,则视为该节点执行成功,在内存中记录该节点的运行数据,并在触发器运行日志中写入该节点的节点日志。
进一步的,所述触发器运行日志包括生成触发器时为触发器分配的触发器ID、本次触发的开始时间、本次触发的结束时间、本次触发器所属的租户ID、产生本次触发的租户下的用户id、触发器运行结果、异常原因以及触发过程中各节点的节点日志;
所述节点日志包括生成触发器时为节点分配的节点ID、生成触发器时为节点设置的节点名称、节点执行情况、节点类型、开始执行该节点的时间、停止执行该节点的时间和该节点的运行数据。
进一步的,所述触发器的每一个节点均设置有独立的节点ID,在触发器被触发时,在内存中创建一个list用于记录每一被执行节点的运行数据,在触发器运行过程中,每执行一个节点,均将所述节点的运行数据写入list中,并将list中新增的所述运行数据写入触发器运行日志;list中每个节点的数据是一个key-value结构的map,其中key是对应节点的节点ID,value为该节点的运行数据,当触发器的运行结束时,对应的list自动删除。
进一步的,在S3步骤中,所述中止运行机制还用于执行以下步骤:
S301、在数据库新建一个触发器运行时上下文,将list中的节点运行数据写入触发器运行时上下文;
S302、停止触发器的运行,并从内存中删除触发器对应的list;
S303、根据需求确定是否需要从中止的节点继续运行触发器,若需要从中止的节点继续运行触发器,则在内存中新建一个list,将触发器运行时上下文的数据写入list中,并从中止的节点开始继续运行触发器。
进一步的,在执行所述S2步骤之前,先执行以下步骤:
S2'、判断正在执行的节点是否为被允许的正常中止状态,如果是被允许的正常中止状态,则执行S301~S303步骤;否则,执行S2步骤。
进一步的,所述S2步骤中:
所述执行异常包括触发器全局执行异常和各节点类型的节点执行异常;
所述S3步骤中:
所述异常处理机制包括全局异常处理机制和各节点的节点异常处理机制;当出现触发器全局执行异常时,执行全局异常处理机制;当出现节点执行异常时,执行该节点的节点异常处理机制。
进一步的,所述全局异常处理机制包括:
中止运行机制;
继续运行机制;
节点重复执行机制,基于预先配置的重复执行次数,重复执行所述节点;若重复执行次数到达预设的重复执行次数时且仍然处于全局执行异常状态时,根据需求转入所述中止运行机制或者继续运行机制;
异常通知机制,用于当执行中止运行机制时,根据需求发送异常通知,其中,所述异常通知按照预先设定的通知对象、异常通知内容、异常通知方式发送至异常通知对象。
进一步的,所述节点异常处理机制包括:
中止运行机制;
继续运行机制;
自定义的运行机制,用于在出现节点异常后先执行自定义的动作,之后再重新执行该节点;
异常通知机制,用于当执行中止运行机制时,根据需求发送异常通知,其中,所述异常通知按照预先设定的通知对象、异常通知内容、异常通知方式发送至异常通知对象。
进一步的,还包括S5、对所述触发器运行日志进行解析,并以可视化的方式展示触发器运行情况和各节点的运行数据,本步骤包括以下子步骤:
S501、根据触发器运行日志中的触发器ID获取对应触发器的详细配置,并以可视化的方式在画布上展示该触发器的节点配置;
S502、从触发器运行日志中依次取出各节点的运行数据,并将各节点的数据通过节点ID匹配到画布上对应的节点中;
S503、当鼠标hover到可视画布的节点时,根据节点的数据判断该节点在触发器运行时是否运行成功,如果该节点运行成功在节点上层浮现弹窗,根据节点的数据在弹窗中展示该节点触发的详细情况;如果判断该节点未运行成功,或是该节点没有数据,则不作响应。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现基于触发器运转记录的流程异常处理方法。
本发明中,通过以可视化的方式配置触发器,在内存中存储触发器各节点的运行数据,在数据库中生成触发器运行日志记录触发器的运行情况,并设置异常处理机制和中止运行机制,不仅异常情况的处理方式灵活,而且能够在触发器运行异常时将内存中存储的数据转存至数据库并中止运行,之后可根据触发器运行日志记录以可视化的方式显示各节点的运行情况,便于进行异常原因排除,企业管理员可自行监控触发器运行情况,方便进行触发器配置时调试,以及在后续问题的排查及处置;中止后可重跑(即从中止的节点开始继续运行),可减少由于各类系统或者业务异常对客户数据的影响,尽可能保证功能的完整和数据的一致性。通过采用良好的异常处理机制减少异常的持续时间及对终端用户的影响。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为通过可视化方式配置触发器的示意图。
图2为本发明基于触发器运转记录的流程异常处理方法的一个优选实施例的流程图。
图3为以中止运行的方式处理异常情况的流程图。
图4为节点运行数据以list的形式存储内存中的示意图。
图5为触发器执行异常处理机制的流程图。
图6为设置全局异常处理机制的界面示意图。
图7为触发器执行中止运行机制的流程图。
图中:101.触发节点,102.增加节点操作符,103.删除操作符,104.独立动作节点,105.分支操作节点,106.分支组合节点,107.分支节点,108.结束节点。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
本发明公开了一种基于触发器运转记录的流程异常处理方法,通过以可视化的方式配置触发器,在内存中存储触发器各节点的运行数据,在数据库中生成触发器运行日志记录触发器的运行情况,并引入异常处理机制和中止继续机制,能够在触发器运行异常时将内存中存储的数据转存至数据库并中止运行,之后可根据触发器运行日志记录以可视化的方式显示各节点的运行情况,便于进行异常原因排除,之后,可将各节点的运行数据恢复至内存从中止的节点处继续运行,从而在触发器发生异常时能够方便地进行处置。
如图1所示,所述触发器由多个执行预置动作的节点以可视化方式按照父子关系逐级指向配置而成,其具体配置方法包括以下步骤:
SA、创建触发器可视化配置画布,以便于在可视化配置画布以可视的方式配置触发器的执行流程。
本步骤中,所述可视化配置画布作为提供一个供配置用户配置触发器的可视化界面而存在,配置用户可在配置触发器时实时掌控、操作触发器配置事项。所述配置用户可以企业管理人员,本优选实施例中,将配置权限由云端侧下放至用户侧,配置用户根据自身需要配置所需的触发器,配置用户能够根据自身习惯、企业数据种类、数据实参、常用应用场景等配置适用于他自身的、贴合度及灵活度更高的触发器触发过程,便于后期应用层触发时,能够根据配置的触发器生成一系列的执行动作,实现由首至尾的完整执行链。
SB、于所述可视化配置画布中生成触发节点101和结束节点108,并在触发节点101设置触发器的触发条件。
所述触发条件是指:在用户应用层面,用户开启或触发所述触发器的开关。例如在指定表单中新增数据、在指定表单中修改数据、达到预设的时间等等。当以新增数据作为触发条件时,当检测到某一表单具有用户新增数据时,则触发对应的触发器,当触发器被触发后,则基于配置的对应触发器执行流程由首至尾执行,直至该对应触发器的所有执行流程全部被执行。当以修改数据作为触发条件时,当检测到某一表单数据被修改时,则触发对应的触发器。应当理解的,所述触发条件可以根据不同配置用户的实际需求而设定,上述仅作为示例性描述,不用于限制触发条件的范围。
SC、根据所述触发条件于所述触发节点101和所述结束节点108之间配置具有对应执行动作的子节点,由此形成由触发节点101经所述子节点至所述结束节点108的触发器执行流程,据此生成触发器。本申请中以触发节点101和结束节点108之间配置的所有节点均作为子节点的状态进行详述,当它具有下级节点时,它又作为下级节点的父节点。所述子节点优选为包括独立动作节点104以及并行分支节点,所述并行分支节点包括两个或两个以上分支,每一分支中均设置有分支节点107和具有对应的执行动作的独立动作节点104。在一种实施例中,在所述触发节点101和结束节点108之间并行设置多个子节点,所述多个子节点均为所述触发节点101的同一级子节点。在另一种实施例中,以所述触发节点101作为父节点或者根节点,以结束节点108作为终节点,使多个子节点由父节点至终节点方向、由首至尾逐渐设置于所述父节点与终节点之间。具体结合实例,假设子节点为五个,即子节点1、子节点2、子节点3、子节点4、子节点5,使子节点1接于所述触发节点101的下一级,使子节点2接于所述子节点1的下一级,使子节点3接于子节点2的下一级,使子节点4接于子节点3的下一级,使子节点5接于子节点4与所述结束节点108之间。
配置用户可基于需求配置一个或多个并行或串行独立动作节点104作为触发器执行流程,也可基于需求配置一个或多个并行分支节点作为触发器执行流程。所述独立动作节点104和并行分支节点的配置无先后顺序,也即,配置用户可基于需求优先配置独立动作节点104或优先配置并行分支节点,也可在串行的两独立动作节点104之间配置并行分支节点,还可在并行分支节点中的某一个分支节点107下方再次配置并行分支节点等等。综上,当需要依次执独立动作时,可配置独立动作节点104,当需要多个动作并行执行时,可配置并行分支节点,然后在每一分支中分别配置分支节点107。在添加独立动作节点104和并行分支节点后,还可为独立动作节点104和并行分支节点设置一个容易理解的名称,并设置相应的参数。
为在满足系统的不同触发流程需求,本实施例设置了多个独立动作节点104,通过组合能够满足工业互联网协同平台系统的各种触发流程需求。具体结合实例,独立动作节点104包括:新增数据节点、编辑数据节点、获取数据节点、删除数据节点、填写节点和app通知节点等多个不同节点。各独立动作节点104的功能及参数设置如下:
获取数据节点:用于从指定的表单(即一个数据表,每一数据表都有一个独立的ID号,可通过数据表的ID号指定表单,也可根据数据表的名称指定表单)获取满足筛选条件的一条或多条数据;配置的参数包括获取数据的表单名称和数据的筛选条件。
新增数据节点:用于在指定的表单中新增一条数据;配置的参数包括新增数据的表单、字段(表单中一列单元格的列标题为这一列单元格的字段名称;每一单元格还分配有一个独立的字段ID号,可通过数据表的字段名称来指定表单的一列单元格,也可通过字段ID指定表单的一个单元格)和新增数据的赋值规则。
编辑数据节点:用于对指定表单中指定字段的数据进行编辑修改;配置的参数包括待编辑数据的表单、字段和编辑数据的赋值规则。
删除数据节点:用于删除指定表单的数据;配置的参数包括删除数据的表单名称。
填写节点:用于通过人工方式对指定表单中的数据进行填写;配置的参数包括填写数据的表单名称和有填写权限的用户名称。
app通知节点:用于通过app发送通知给指定的对象;配置的参数包括接收通知的对象名称。
当然,独立动作节点104还可设置其他功能的节点,在此只是以常用节点进行举例说明。
根据本发明的一方面,所述SC步骤具体包括:
SC1、以所述触发节点101作为父节点、结束节点108作为终节点,于可视化配置画布中设置附属于所述父节点之下的子节点,所述子节点位于所述触发节点101与所述结束节点108之间。
本步骤中,以触发节点101作为父节点增加的子节点,该子节点为触发节点101的子节点;在某一子节点的下一级增加的另一子节点,则增加的子节点为作为上一级子节点的子节点;从而形成父子关系。所述独立动作节点104以及所述并行分支节点中的每一分支节点107均与其父节点连接,所述独立动作节点104及所述并行分支节点中的每一分支节点107均与其子节点连接。
为便于进行增加或删除子节点的操作,增加触发器配置的灵活性、可操作性及兼容性,还可在每一子节点与其父节点之间及每一子节点与其子节点之间均具有供配置用户增加子节点的增加节点操作符102,每一子节点上均具有供配置用户删除该子节点的删除操作符103。
SC2、根据所述父子关系由父至子逐级指向,并使最后一级子节点指向所述结束节点108,即将没有下一级子节点的子节点做为结束节点108的父节点,从而将使该子节点指向结束节点108,根据父子关系进行连线后由此于所述可视化配置画布中形成触发器执行流程图。
SC3、生成触发器,所述触发器以所述触发器执行流程图作为执行依据,逐级执行所述触发器流程图所示流程。即从触发节点101起,按照触发器执行流程图依次向下执行对应的动作,直到执行至结束节点108完成整个触发器执行流程。
请继续参考图1,为便于根据需求选择相应的子节点,在创建触发器可视化配置画布之前,还可预先创建节点配置抽屉;所述配置抽屉内具有不同执行动作的若干独立动作节点配置模块;所述配置抽屉内还具有用于配置并行分支节点的分支配置模块。所述SC1步骤还可具体包括:
SC11、根据触发节点101与所述结束节点108之间的增加节点操作符102增加配置子节点;即点击触发节点101与结束节点108之间的增加节点操作符102,打开配置抽屉。
SC12、(1)当同一时间只执行一个动作时,据所述触发条件选择所述配置抽屉中的对应执行动作的独立动作节点配置模块将所述独立动作节点104配置于所述触发节点101与结束节点108之间,形成第一独立动作节点104。
(2)当需要并行执行两个或两个以上的动作时,据所述触发条件选择所述配置抽屉中的分支配置模块以将第一并行分支节点配置于所述触发节点101与所述结束节点108之间。
SC13、当需要继续增加子节点时,根据需求于所述第一独立动作节点104(或第一并行分支节点)和触发节点101之间或第一独立动作节点104(或第一并行分支节点)和结束节点108之间增加配置第二独立动作节点104和/或第二并行分支节点。之后,还可根据需要继续在独立动作节点104(或并行分支节点)和触发节点101之间、独立动作节点104(或并行分支节点)和结束节点108之间,或两个独立动作节点104(或并行分支节点)之间、以及独立动作节点104和并行分支节点之间增加独立动作节点104或并行分支节点。
其中,选择所述分支配置模块配置对应的并行分支节点的步骤包括:
SC121、自所述配置抽屉中选择所述分支配置模块以触发并行分支节点配置指令。
SC122、根据所述并行分支节点配置于可视化配置画布中对应位置处配置一个分支操作节点105和一个分支组合节点106。所述分支操作节点105用于形成多个分支,分支组合节点106用于将多个分支合为一路。
SC123、在分支操作节点105和分支组合节点106之间并行生成两个分支,并在每一分支生成一个分支节点107于对应位置处。
SC124、判断是否需要增加分支执行流程,如果需要增加分支,则使对应分支操作节点105的分支操作符执行增加分支节点任务,以在对应分支操作节点105和分支组合节点106之间并行增加一个分支节点107。由于该方式固定生成两个分支,当两个分支不满足需求时,可通过点击分支操作符不断添加分支,直至满足需求。
SC125、在各分支节点107设置执行分支的条件或指定执行分支的主体。例如,如图1所示,当在分支节点107之前执行了新增数据的动作时,可将两个分支节点107的执行分支的条件分别设置为:“单行文本=2执行”和“单行文本=1执行”;当新增的数据为“2”时,则满足“单行文本=2执行”条件,执行左边的分支;当新增的数据为“1”时,则满足“单行文本=1执行”条件,执行右边的分支。
SC126、为每一分支以独立动作节点104或并行分支节点的方式配置子节点,从而使得所述分支被赋与对应的执行动作。
如图2所示,本发明基于触发器运转记录的流程异常处理方法的一个优选实施例包括以下步骤:
S1、检测触发器的触发动作,基于触发动作生成触发器运行日志,并按照所述父子关系顺序执行触发器各节点的动作。检测触发器的触发动作,基于触发动作生成触发器运行日志的具体方法如下:
先根据触发器的触发条件定义出可能触发触发器的动作,在任何可能触发触发器的动作发生后,均将动作的详情发送mq消息到触发器任务队列中。触发器的任务监听模块监听到触发器任务队列有任何新的消息时,会将消息取出,解析出具体的触发动作,并与数据库中所有该企业已经启用的触发器的触发动作进行比对,取出满足触发动作的全部触发器(一个触发动作可能会触发多个触发器)并放入一个队列中。依次获取出每条触发器,每取出一条触发器时就对应生成一条触发器运行日志,本实施例中以一条触发器的触发过程为例进行说明。
所述触发器运行日志包括运行触发器时临时分配的触发器运行ID、生成触发器时为触发器分配的触发器ID、本次触发的开始时间、本次触发的结束时间(待整个触发器运行结束后写入)、本次触发器所属的租户ID(即企业ID)、产生本次触发的租户下的用户ID(企业操作人员的ID)、触发器运行结果(包括:EXECUTED、EXECUTED_STOP和EXECUTING,其中,EXECUTED_STOP表示运行中止,EXECUTED表示运行成功,EXECUTING表示运行中)、异常原因(无异常时为空)以及触发过程中各节点的节点日志(节点日志最初为空)。所述节点日志包括生成触发器时为节点分配的节点ID、生成触发器时为节点设置的节点名称、节点执行情况(包括:EXECUTED、EXECUTED_STOP和EXECUTING,其中,EXECUTED_STOP表示运行中止,EXECUTED表示运行成功,EXECUTING表示运行中)、节点类型(例如:触发节点101、结束节点108、新增数据节点、编辑数据节点、获取数据节点、删除数据节点、填写节点、app通知节点等)、开始执行该节点的时间、停止执行该节点的时间、该节点的运行数据(即该节点设置的参数、在运行过程中获取的数据及产生的数据;例如,对于触发节点101,节点的运行数据包括触发条件以及引起触发动作的数据;对于获取数据节点,节点的运行数据包括获取数据的查询条件、获取到的表单ID以及获取到的表单数据;对于编辑数据节点,节点的运行数据包括被操作的表单ID以及表单编辑后的数据;对于新增数据节点,节点的运行数据包括需要新增数据的表单ID以及新增后的表单数据)。
触发器运行日志优选为采用json结构,例如,在执行完触发节点后的触发器运行日志如下所示:
Figure BDA0003445061700000121
Figure BDA0003445061700000131
按照节点的父子关系顺序执行触发器各节点的动作的具体方法如下:在执行节点的动作时,先判断该节点是否为结束节点108,如果执行的节点为结束节点108,则说明触发器的流程已经执行完毕,执行S6步骤结束触发器的运行;否则,执行S2'步骤,执行该节点的预定动作。
S2'、判断正在执行的节点是否为被允许的正常中止状态,即该节点的动作是否包括中止运行,如果包括中止运行,则执行S301~S303步骤;否则,执行S2步骤判断有无异常情况。例如,在执行“人工填写”节点的动作时,就会先执行中止运行机制,等待指定人员完成指定字段的填写,待填写完成后,再继续运行。在执行中止运行机制前,会先将该节点的节点日志中的节点执行情况填写为“EXECUTED_STOP”,并将触发器运行日志的触发器运行结果字段(“executeStatus”字段)修改为“EXECUTED_STOP”,然后执行S301~S303步骤。
S2、判断正在执行的节点是否出现执行异常,如果该节点执行完毕,且未出现执行异常,则说明该节点运行正常,执行S4步骤记录节点的运行数据;如果出现执行异常,则说明该节点的运行存在异常,执行S3步骤运行异常处理机制。
其中,所述执行异常包括触发器全局执行异常和各节点类型的节点执行异常;预先将与节点类型的具体业务相关的异常定义为该节点类型的节点执行异常,将各节点类型的节点执行异常之外的异常定义为触发器全局执行异常。
触发器全局执行异常为触发器整体通用,即同一触发器所有节点的触发器全局执行异常的定义均一致,例如,可将接口调用错误、接口调用超时、系统报错等与节点具体业务无关的异常定义为触发器全局执行异常;节点执行异常可根据节点类型分别定义,不同类型的节点定义的节点执行异常可不一致,例如,对于获取数据节点,获取不到数据与其具体业务相关,可定义为该节点类型的节点执行异常。
S4、判断该节点执行成功,在内存中记录该节点的运行数据以方便后续节点调用,并在触发器运行日志中写入该节点的节点日志;执行下一节点并返回执行S2步骤。所述触发器的每一个节点均设置有独立的节点ID作为nodeId,在触发器被触发时,会在内存中创建一个list(在编程语言中list表达一组数据)用于记录每一被执行的节点的运行数据。如图4所示,在触发器运行过程中,每执行一个节点,均将该节点的运行数据写入list中,并将list中新增的节点的运行数据写入触发器运行日志;list中每个节点的数据是一个key-value结构的map(在编程语言中map是key-value结构),其中key是对应节点的nodeId,value为该节点的运行数据(包括),当触发器的运行结束时,对应的list自动删除。通过在内存中创建一个list,可以使触发器的节点调用之前节点的数据,而不需要再从数据库中获取,避免因数据库中的数据写入不及时导致数据获取错误。需要说明的是,对于具有分支的触发器,对于每一分支节点,当不满足该分支节点的触发条件时,则仅记录该分支节点的数据,不再运行其对应分支的节点,所以也不需要记录这些节点的运行记录。
S3、若出现执行异常,则执行异常处理机制;其中,所述异常处理机制包括中止运行机制和继续运行机制;所述继续运行机制用于当节点出现执行异常时,结束当前节点的动作并继续运行触发器的下一节点;所述中止运行机制用于当节点出现执行异常时,将内存中的节点运行数据存入数据库中,根据需要执行重跑机制;并将异常数据写入所述触发器运行日志中。
如图5所示,为异常处理机制的流程图。所述异常处理机制包括全局异常处理机制和各节点的节点异常处理机制,全局异常处理机制为触发器整体通用,即同一触发器所有节点的全局异常处理机制均一致,当运行的节点出现触发器全局执行异常时,执行全局异常处理机制;节点异常处理机制为每一节点单独设置,不同的节点可根据节点的作用设置不同的节点异常处理机制;当运行的节点检测到该节点所属节点类型的节点执行异常时,执行该节点的节点异常处理机制。
所述全局异常处理机制包括:中止运行机制、继续运行机制、节点重复执行机制和异常通知机制。
所述节点重复执行机制基于预先配置的重复执行次数,重复执行所述节点;若重复执行次数到达预设的重复执行次数时且仍然处于全局执行异常状态时,根据需求转入所述中止运行机制或者继续运行机制。
所述异常通知机制用于当执行中止运行机制时,根据需求发送异常通知,其中,所述异常通知按照预先设定的通知对象、异常通知内容、异常通知方式发送至异常通知对象。
如图6所示,在配置触发器时需要对全局异常处理机制进行设置,设置全局异常处理机制包括设置重试选项、异常处理方式选项、异常通知选项、异常通知对象选项、异常通知方式选项和异常通知文案选项;所述重试选项用于设置是否重试,当用户未选择重试时,出现全局执行异常时直接执行设置的全局异常的处理方式(即继续运行机制或中止运行机制);当用户选择重试时,出现全局执行异常后会再次尝试执行该节点的运行,当重试次数到达到预定的次数仍然出现全局执行异常时,则执行设置的全局异常的处理方式。
所述异常处理方式选项用于设置全局异常时的处理方式,包括继续运行和结束运行;当全局异常的异常处理方式选项设置为继续运行时,出现全局异常后执行继续运行机制,即将该节点的节点日志中的节点执行情况填写为“EXECUTED”,并继续运行触发器的下一节点;当全局异常的异常处理方式选项设置为结束运行时,出现全局异常后执行中止运行机制,即将该节点的节点日志中的节点执行情况填写为“EXECUTED_STOP”,并将触发器运行日志的触发器运行结果字段(“executeStatus”字段)修改为“EXECUTED_STOP”,在触发器运行日志的“errorMsg”字段写入异常原因。如图7所示,执行中止运行机制还包括:
S301、在mongoDB中新建一个触发器运行时上下文,将list中的节点运行数据写入触发器运行时上下文(发生中止运行的节点的运行数据不写入触发器运行时上下文,其他运行过的节点的运行数据均会写入)。
S302、停止触发器的运行,并从内存中删除触发器对应的list,以释放内存空间。
S303、当用户需要从中止的节点继续运行触发器时,在内存中新建一个list,将触发器运行时上下文的数据从mongoDB中取出并写入list中,在内存中恢复触发器之前的所有运行数据,并从发生中止的节点开始继续运行触发器。
当由于节点的动作包括中止运行而执行S301~S303步骤时,从中止时的节点继续运行触发器时,删除数据库中的触发器运行时上下文,并执行步骤S4;当由于出现执行异常执行S301~S303步骤时,从中止时的节点继续运行触发器时,如果该节点运行成功,则将触发器运行日志中的触发器运行结果修改为EXECUTING,删除mongoDB中的触发器运行时上下文,并执行步骤S4;如果该节点的执行情况仍然出现执行异常,则不修正触发器记录状态,并保留触发器运行时上下文,可供客户再次运行。在此过程中,需要实现每个节点的运行数据格式在mongoDB和内存之间的转换,所述触发器运行时上下文以json格式存储数据,首先定义一个接口类AutomationLog,其中分别定义两个方法:从内存对象(list中的数据)转换成触发器运行时上下文(json格式)记为func1(Object nodeRuntimeDetail),从json转换为list中的数据记为func2(String jsonStr)。每个节点均实现这个接口类,即可完成对应业务的func1()和func2(),实现数据格式的转换。
Figure BDA0003445061700000171
Figure BDA0003445061700000181
异常通知选项用于设置在节点执行情况为“EXECUTED_STOP”时是否发送异常通知,当异常通知选项设置为“否”时,则发生异常时不通知,直接结束判断;当异常通知选项设置为“是”时,继续读取异常通知对象选项、异常通知方式选项和异常通知文案选项,并将异常通知文案的内容以设置的异常通知方式发送给异常通知对象;异常通知对象选项用于设置发生异常时需要通知的用户,例如:企业管理员、本触发器的配置人员、触发本次触发器的动作的人员或该企业的其他人员,异常通知对象可多选。异常通知方式选项用于设置发生异常时采用的通知方式,例如:电话、短信通知等,可多选;异常通知文案选项用于设置发生异常时通知的具体内容,以文本框的方式供用户填写,用户可自行录入通知时的文档内容。
所述节点异常处理机制包括:中止运行机制、继续运行机制、自定义的运行机制和异常通知机制。所述节点异常处理机制中的中止运行机制、继续运行机制和异常通知机制与所述全局异常处理机制中的中止运行机制、继续运行机制和异常通知机制相同。自定义的运行机制用于在节点出现节点执行异常时,先执行自定义的动作,所述自定义的动作用于排除该节点执行异常,之后再重新执行该节点的动作。
在配置触发器时,需要设置每一节点的节点异常处理机制。设置节点异常处理机制包括设置节点的异常处理方式选项,节点的异常处理方式选项用于设置该节点出现节点异常后的处理方式,不同的节点可设置不同的处理方式,包括继续运行、结束运行和自定义的动作;当节点的异常处理方式选项设置为继续运行时,出现节点异常后执行继续运行机制,当节点的异常处理方式选项设置为停止运行时,出现节点异常后执行中止运行机制;当节点的异常处理方式选项设置为自定义的动作(如“获取不到新增数据”)时,出现节点异常后执行自定义的运行机制。
例如,可在获取数据节点定义查询不到数据为该节点类型的节点执行异常,并自定义一个“获取不到新增数据”的动作选项作为该类型节点的自定义的运行机制,并定义“获取不到新增数据”所执行的动作为在表单中新增一个字段,字段名称为查询的字段名称,数据为“0”。在查询库存器件数据的触发器中,可在其用于查询库存器件数量的获取数据节点中选择节点异常处理机制为“获取不到新增数据”(即自定义的运行机制),当执行该节点时,在表单的字段中没有查询的器件名称导致查询失败时,则自动在该表单中新建一个字段,字段名称为查询的器件名称,数据为“0”,然后再次执行该节点即可获取到新增的数据,从而查询到该器件的数量为“0”,不会再出现异常情况,可正常执行下一节点。通过设置自定义的动作来处理异常,对于一些常见的异常情况能够通过预先定义相应的处理动作实现异常的自动处理,而无需执行中止运行机制进行人工处置,使触发器的维护更加方便。
当执行异常机制导致触发器执行中止运行机制时,还可执行以下步骤:
S5、对触发器运行日志进行解析,并以可视化的方式展示触发器运行情况和各节点的运行数据,以便于查找异常原因。具体可包括以下子步骤:
S501、根据触发器运行日志中的触发器ID获取对应触发器的详细配置,并以可视化的方式在画布上展示该触发器的节点配置。
S502、从触发器运行日志中依次取出各节点的运行数据,并将各节点的数据通过节点ID匹配到画布上对应的节点中。
S503、当用户将鼠标hover(指一个模仿悬停事件的方法,即鼠标移动到一个对象上面及移出这个对象的方法)到可视画布的节点时,根据节点的数据判断该节点在触发器运行时是否运行成功,如果该节点运行成功在节点上层浮现弹窗,根据节点的数据在弹窗中展示该节点触发的详细情况;如果判断该节点未运行成功,或是该节点没有数据,则不作响应。
判断节点在触发器运行时是否运行成功的方法优选为:
根据该节点的节点日志中的“executeStatus”字段进行判断,并将对应画布上面的节点变换颜色:当“executeStatus”字段为“EXECUTED_STOP”时,该节点展示为灰色,表示没有运行成功,当“executeStatus”字段为“EXECUTED”时,该节点展示为正常的颜色,表示该节点运行成功。最后,对于在画布中的节点在触发器运行日志不存在对应的nodeId,可以认为是由于分支节点或者由于触发器中止导致没有运行的节点,全部默认展示成灰色,以此来表示哪些节点进行了运行,哪些没有运行成功。对于灰色节点,鼠标hover无任何响应,对于有颜色的节点,鼠标hover会在节点上层浮现弹窗,展示该节点触发详细情况,包括开始执行该节点的时间、停止执行该节点的时间、该节点设置的参数和该节点的运行数据。
S6、结束触发器运行,将触发器运行日志中的触发器运行结果字段填写为“EXECUTED”,并销毁内存中该触发器对应的list,以节省内存。此时,也可对触发器运行日志进行解析,并以可视化的方式展示触发器运行情况和各节点的运行数据,以便于查看触发器的运行情况。
随着触发器配置的复杂,依赖的外部应用和系统越来越多,良好的异常处理机制可减少异常的持续时间,减少对终端用户的影响,本实施例中,通过设置异常处理机制和中止运行机制,企业管理员可自行监控触发器运行情况,方便进行触发器配置时调试,以及在后续问题的排查,中止后可重跑,可减少由于各类系统或者业务异常对客户数据的影响,尽可能保证功能的完整和数据的一致性。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,通过计算机执行所述计算机程序时执行上述基于触发器运转记录的流程异常处理方法的部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (10)

1.一种基于触发器运转记录的流程异常处理方法,其特征在于,所述触发器由多个执行预置动作的节点以可视化方式按照父子关系逐级指向配置而成,所述流程异常处理方法包括以下步骤:
S1、检测触发器的触发动作,基于触发动作生成触发器运行日志,并按照所述父子关系顺序执行触发器各节点的动作;
S2、判断正在执行的节点是否出现执行异常;
S3、若出现执行异常,则执行异常处理机制;其中,所述异常处理机制包括中止运行机制和继续运行机制;所述继续运行机制用于当节点出现执行异常时,结束当前节点的动作并继续运行触发器的下一节点;所述中止运行机制用于当节点出现执行异常时,将内存中的节点运行数据存入数据库中,根据需要执行重跑机制;并将异常数据写入所述触发器运行日志中;
S4、若未出现执行异常,则视为该节点执行成功,在内存中记录该节点的运行数据,并在触发器运行日志中写入该节点的节点日志。
2.根据权利要求1所述的基于触发器运转记录的流程异常处理方法,其特征在于,所述触发器运行日志包括生成触发器时为触发器分配的触发器ID、本次触发的开始时间、本次触发的结束时间、本次触发器所属的租户ID、产生本次触发的租户下的用户id、触发器运行结果、异常原因以及触发过程中各节点的节点日志;
所述节点日志包括生成触发器时为节点分配的节点ID、生成触发器时为节点设置的节点名称、节点执行情况、节点类型、开始执行该节点的时间、停止执行该节点的时间和该节点的运行数据。
3.根据权利要求1所述的基于触发器运转记录的流程异常处理方法,其特征在于,所述触发器的每一个节点均设置有独立的节点ID,在触发器被触发时,在内存中创建一个list用于记录每一被执行节点的运行数据,在编程语言中list表示一组数据;在触发器运行过程中,每执行一个节点,均将所述节点的运行数据写入list中,并将list中新增的所述运行数据写入触发器运行日志;list中每个节点的数据是一个key-value结构的map,其中key是对应节点的节点ID,value为该节点的运行数据,当触发器的运行结束时,对应的list自动删除。
4.根据权利要求3所述的基于触发器运转记录的流程异常处理方法,其特征在于,在S3步骤中,所述中止运行机制还用于执行以下步骤:
S301、在数据库新建一个触发器运行时上下文,将list中的节点运行数据写入触发器运行时上下文;
S302、停止触发器的运行,并从内存中删除触发器对应的list;
S303、根据需求确定是否需要从中止的节点继续运行触发器,若需要从中止的节点继续运行触发器,则在内存中新建一个list,将触发器运行时上下文的数据写入list中,并从中止的节点开始继续运行触发器。
5.根据权利要求4所述的基于触发器运转记录的流程异常处理方法,其特征在于,在执行所述S2步骤之前,先执行以下步骤:
S2'、判断正在执行的节点是否为被允许的正常中止状态,如果是被允许的正常中止状态,则执行S301~S303步骤;否则,执行S2步骤。
6.根据权利要求1所述的基于触发器运转记录的流程异常处理方法,其特征在于,所述S2步骤中:
所述执行异常包括触发器全局执行异常和各节点类型的节点执行异常;
所述S3步骤中:
所述异常处理机制包括全局异常处理机制和各节点的节点异常处理机制;当出现触发器全局执行异常时,执行全局异常处理机制;当出现节点执行异常时,执行该节点的节点异常处理机制。
7.根据权利要求6所述的基于触发器运转记录的流程异常处理方法,其特征在于,所述全局异常处理机制包括:
中止运行机制;
继续运行机制;
节点重复执行机制,基于预先配置的重复执行次数,重复执行所述节点;若重复执行次数到达预设的重复执行次数时且仍然处于全局执行异常状态时,根据需求转入所述中止运行机制或者继续运行机制;
异常通知机制,用于当执行中止运行机制时,根据需求发送异常通知,其中,所述异常通知按照预先设定的通知对象、异常通知内容、异常通知方式发送至异常通知对象。
8.根据权利要求7所述的基于触发器运转记录的流程异常处理方法,其特征在于,所述节点异常处理机制包括:
中止运行机制;
继续运行机制;
自定义的运行机制,用于在出现节点异常后先执行自定义的动作,之后再重新执行该节点;
异常通知机制,用于当执行中止运行机制时,根据需求发送异常通知,其中,所述异常通知按照预先设定的通知对象、异常通知内容、异常通知方式发送至异常通知对象。
9.根据权利要求1所述的基于触发器运转记录的流程异常处理方法,其特征在于,还包括S5、对所述触发器运行日志进行解析,并以可视化的方式展示触发器运行情况和各节点的运行数据,本步骤包括以下子步骤:
S501、根据触发器运行日志中的触发器ID获取对应触发器的详细配置,并以可视化的方式在画布上展示该触发器的节点配置;
S502、从触发器运行日志中依次取出各节点的运行数据,并将各节点的数据通过节点ID匹配到画布上对应的节点中;
S503、当鼠标hover到可视画布的节点时,hover指一个模仿悬停事件的方法,根据节点的数据判断该节点在触发器运行时是否运行成功,如果该节点运行成功在节点上层浮现弹窗,根据节点的数据在弹窗中展示该节点触发的详细情况;如果判断该节点未运行成功,或是该节点没有数据,则不作响应。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的方法。
CN202111645711.0A 2021-12-30 2021-12-30 基于触发器运转记录的流程异常处理方法及存储介质 Active CN114296983B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111645711.0A CN114296983B (zh) 2021-12-30 2021-12-30 基于触发器运转记录的流程异常处理方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111645711.0A CN114296983B (zh) 2021-12-30 2021-12-30 基于触发器运转记录的流程异常处理方法及存储介质

Publications (2)

Publication Number Publication Date
CN114296983A CN114296983A (zh) 2022-04-08
CN114296983B true CN114296983B (zh) 2022-08-12

Family

ID=80970846

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111645711.0A Active CN114296983B (zh) 2021-12-30 2021-12-30 基于触发器运转记录的流程异常处理方法及存储介质

Country Status (1)

Country Link
CN (1) CN114296983B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650798A (zh) * 2009-09-14 2010-02-17 中国科学院计算技术研究所 流程建模方法
CN102916830A (zh) * 2012-09-11 2013-02-06 北京航空航天大学 一种资源服务优化配置容错管理实现系统
CN104376237A (zh) * 2013-08-13 2015-02-25 中国科学院沈阳自动化研究所 一种针对生产过程中信息的安全控制方法和系统
CN104391865A (zh) * 2014-10-24 2015-03-04 浪潮软件股份有限公司 一种基于触发器原理实现操作日志记录的方法
CN106254317A (zh) * 2016-07-21 2016-12-21 柳州龙辉科技有限公司 一种数据安全异常监控系统
CN106664540A (zh) * 2015-07-07 2017-05-10 华为技术有限公司 检测终端设备异常的方法、装置及系统
CN110046071A (zh) * 2019-03-13 2019-07-23 中国平安人寿保险股份有限公司 数据库监控方法、装置、计算设备与存储介质
CN111209455A (zh) * 2019-12-29 2020-05-29 横琴宝蓝科技有限公司 一种可视化数据交换管理平台
CN111596909A (zh) * 2020-04-02 2020-08-28 珠海沙盒网络科技有限公司 一种可视化编辑树结构游戏逻辑的方法及介质
CN113778614A (zh) * 2021-08-03 2021-12-10 科大国创云网科技有限公司 一种面向企业服务总线的集群异常监控告警系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386208B2 (en) * 2008-05-08 2013-02-26 Teledyne Lecroy, Inc. Method and apparatus for trigger scanning

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650798A (zh) * 2009-09-14 2010-02-17 中国科学院计算技术研究所 流程建模方法
CN102916830A (zh) * 2012-09-11 2013-02-06 北京航空航天大学 一种资源服务优化配置容错管理实现系统
CN104376237A (zh) * 2013-08-13 2015-02-25 中国科学院沈阳自动化研究所 一种针对生产过程中信息的安全控制方法和系统
CN104391865A (zh) * 2014-10-24 2015-03-04 浪潮软件股份有限公司 一种基于触发器原理实现操作日志记录的方法
CN106664540A (zh) * 2015-07-07 2017-05-10 华为技术有限公司 检测终端设备异常的方法、装置及系统
CN106254317A (zh) * 2016-07-21 2016-12-21 柳州龙辉科技有限公司 一种数据安全异常监控系统
CN110046071A (zh) * 2019-03-13 2019-07-23 中国平安人寿保险股份有限公司 数据库监控方法、装置、计算设备与存储介质
CN111209455A (zh) * 2019-12-29 2020-05-29 横琴宝蓝科技有限公司 一种可视化数据交换管理平台
CN111596909A (zh) * 2020-04-02 2020-08-28 珠海沙盒网络科技有限公司 一种可视化编辑树结构游戏逻辑的方法及介质
CN113778614A (zh) * 2021-08-03 2021-12-10 科大国创云网科技有限公司 一种面向企业服务总线的集群异常监控告警系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
工作流系统中异常处理的研究;陈淑芬等;《电脑知识与技术》;20100125;第6卷(第03期);744-747 *
工作流系统数据触发模块的设计与实现;李勇等;《计算机工程与设计》;20090428;第30卷(第08期);2022-2025 *

Also Published As

Publication number Publication date
CN114296983A (zh) 2022-04-08

Similar Documents

Publication Publication Date Title
CN107291565B (zh) 运维可视化自动化作业平台及实现方法
CN1573691B (zh) 自动生成并跟踪撤消信息的方法和系统
CN111443940A (zh) 一种基于DevOps的完整软件生命周期管理方法及平台
US20150100829A1 (en) Method and system for selecting and executing test scripts
US20150100832A1 (en) Method and system for selecting and executing test scripts
EP2661014A1 (en) Polling sub-system and polling method for communication network system and communication apparatus
CN113569987A (zh) 模型训练方法和装置
US20150100830A1 (en) Method and system for selecting and executing test scripts
US20150100831A1 (en) Method and system for selecting and executing test scripts
US11995706B2 (en) Coordination process restart device and coordination process restart method
CN111966465B (zh) 一种实时修改宿主机配置参数的方法、系统、设备及介质
CN113778486B (zh) 一种代码流水线的容器化处理方法、装置、介质及设备
CN114035925A (zh) 一种工作流调度方法、装置、设备及可读存储介质
CN110555074A (zh) 定时抽取和加工数据的方法、终端及计算机可读存储介质
JP2008269277A (ja) 共有データの分散編集システム、分散編集方法およびプログラム
CN113434180B (zh) 应用的数据处理方法、装置、服务器和存储介质
CN114296983B (zh) 基于触发器运转记录的流程异常处理方法及存储介质
CN113253887A (zh) 应用发布方法、计算机设备及可读存储介质
CN113687927A (zh) Flume任务调度配置方法、装置、设备及存储介质
CN116645060A (zh) 一种基于soar的工单系统自动运维方法、装置以及处理设备
CN113934711B (zh) 一种自动化部署gbase8s集群的方法
CN116069358A (zh) 分布式数据库中数据的升级方法、装置及存储介质
CN115129452A (zh) 一种协同控制系统、方法、设备、存储介质及产品
CN111610992B (zh) 部署组件更新处理方法、装置及存储介质
CN105677515B (zh) 一种数据库联机备份方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230605

Address after: Room 1-1-18, Unit 1, Building 4, No. 1580 Zhiyun Avenue, Yudong Street, Banan District, Chongqing, 401320

Patentee after: Chongqing Yunfeng Technology Co.,Ltd.

Address before: 408300 building a, 59 Chaoyang Road, Dianjiang Industrial Park, Chongqing

Patentee before: Chongqing Yuncheng Internet Technology Co.,Ltd.

TR01 Transfer of patent right