触发器变量赋值方法、触发器配置方法及计算机存储介质与流程

文档序号:29863295发布日期:2022-04-30 11:52阅读:67来源:国知局
触发器变量赋值方法、触发器配置方法及计算机存储介质与流程

1.本发明属于工业互联网平台触发器字段赋值技术领域,涉及一种触发器变量赋值方法、触发器配置方法及计算机存储介质。


背景技术:

2.触发器是业务人员根据业务需求配置触发条件,当生产业务满足配置的触发条件时,可自动触发特定事件,将表单内的某个值改变为指定的另一个值,现有技术在改变触发器表单内某个值的时候,赋值方式单一,字段赋值时,只能赋值为指定的自定义的值,使得触发器赋值不灵活、扩展性较差,无法灵活配置触发器达到用户的需求。由于触发器应用场景广泛,单一赋值成某个自定义的值可能并不能达到用户的需求,用户想要取前置触发器节点操作后变化的值,只能新建一个触发器,在前边的触发器触发之后,新的触发器再获取该表单变化后的值,这样增加了人力成本,让用户体验下降。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种可采用多种方式灵活给字段赋值的触发器变量赋值方法、触发器配置方法及计算机存储介质。
4.为达到上述目的,本发明提供如下技术方案:
5.一种触发器变量赋值方法,其特征在于,所述触发器由多个执行预置动作的节点配置而成,所述变量赋值方法包括以下步骤:
6.s1、基于触发器的对应节点的数据需求,配置所述对应节点的赋值规则;
7.s2、基于预先配置的赋值规则,执行所述触发器的对应节点时,根据该节点设置的赋值规则为所述对应节点的对应字段赋值;其中,当赋值规则需要根据前置节点执行后的运行数据赋值时,自所述内存中调用前置节点的运行数据,根据所述运行数据和配置的赋值规则为所述对应字段赋值。
8.进一步的,所述赋值规则包括字段赋值规则;
9.所述s1步骤具体包括:基于触发器的对应节点的字段数据需求,配置所述对应节点的字段赋值规则,其中,取一前置节点中表单的字段作为目标字段,以目标字段作为所述对应节点的赋值参数;
10.所述s2步骤具体包括:执行所述触发器的对应节点时,根据所述字段赋值规则将所述目标字段的数据赋值于所述对应节点的对应字段中;其中,自所述内存中调用前置节点的运行数据,根据赋值参数从所述运行数据中提取出目标字段的数据赋值于所述对应节点的对应字段。
11.进一步的,所述赋值规则还包括公式赋值;
12.所述s1步骤具体包括:基于触发器的对应节点的字段数据需求,配置所述对应节点的公式赋值规则,其中,从预先定义的赋值函数库中的指定一函数公式作为赋值公式,设置赋值公式的各个运算参数作为所述对应节点的赋值参数;所述运算参数为前置节点的表
单字段或指定值;
13.所述s2步骤具体包括:执行所述触发器的对应节点时,根据所述公式赋值规则从函数库中调用对应的函数公式;其中:
14.当赋值公式的各个运算参数均为指定值时,直接通过函数公式各运算参数进行运算,将运算结果赋值于所述对应节点的对应字段;
15.当赋值公式的运算参数包括前置节点的表单字段时,自内存中调用所述前置节点的运行数据,并自所述运行数据中找出该表单字段的数据作为对应的运算参数的值,之后再通过函数公式各运算参数进行运算,将运算结果赋值于所述对应节点的对应字段。
16.进一步的,所述赋值规则还包括自定义赋值、表单赋值和空值赋值;
17.所述s1步骤具体包括:基于触发器的对应节点的字段数据需求,配置所述对应节点的赋值规则为自定义赋值、表单赋值或空值赋值;其中,当赋值规则为自定义赋值时,输入所述对应字段需要配置的数据,并将输入的数据作为所述对应节点的赋值参数;
18.当赋值规则为表单赋值时,自动获取对应字段所在表单的配置参数,并从配置参数中获取对应字段的默认值作为赋值参数;当赋值规则为空值赋值时,自动以空值作为赋值参数;
19.所述s2步骤具体包括:执行所述触发器的对应节点时,根据所述自定义赋值规则、表单赋值规则或空值赋值规则,将所述赋值参数的数据赋值于所述对应节点的对应字段中。
20.进一步的,还包括以下步骤:
21.sa1、预先定义每一字段类型允许的赋值规则,并建立字段类型和赋值规则之间的映射关系;
22.所述s1步骤具体还包括:
23.s101、设置赋值规则时,显示与被赋值字段的字段类型有映射关系的赋值规则。
24.进一步的,还包括以下步骤:
25.sa2、预先定义目标字段类型与被赋值字段类型的匹配规则,分别建立目标字段的每一字段类型和被赋值字段的字段类型之间的映射关系;并定义实现不同字段类型之间转换的字段类型转换函数;
26.s1步骤具体还包括:
27.s102、当赋值规则为字段赋值时,先查询与被赋值字段的字段类型有映射关系目标字段类型;
28.s103、在赋值参数区域中显示前置节点的所有表单中字段类型为映射的目标字段类型的字段。
29.进一步的,还包括以下步骤:
30.sa3、预先针对每一赋值规则分别定义一个赋值函数表达式,并定义一个数据结构用于存储节点的赋值函数表达式和赋值参数;
31.所述s1步骤具体还包括:
32.s104、在设置节点的赋值规则和赋值参数后,将对应的赋值函数表达式和赋值参数存储在所述数据结构中;
33.所述s2步骤具体还包括:
34.s201、在赋值时,先对所述数据结构进行解析得到赋值函数表达式和赋值参数,再通过赋值函数对赋值参数进行运算得到所需的赋值数据并赋值给被赋值字段。
35.进一步的,还包括以下步骤:
36.sc、当触发器被触发时,在内存中存储每一被执行节点的运行数据,具体包括以下子步骤:
37.sc1、所述触发器的每一个节点均设置有独立的节点id,在触发器被触发时,在内存中创建一个list用于记录每一被执行节点的运行数据;
38.sc2、在触发器运行过程中,每执行一个节点,均将所述节点的运行数据写入list中,list中每个节点的数据是一个key-value结构的map,其中key是对应节点的节点id,value为该节点的运行数据;
39.sc3、当触发器的运行结束时,对应的list自动删除。
40.一种触发器配置方法,包括以下步骤:
41.s901、创建触发器可视化配置画布;
42.s902、在可视化配置画布中生成触发节点和结束节点;并在所述触发节点设置触发器的触发条件;
43.s903、根据所述触发条件于所述触发节点和所述结束节点之间配置具有对应执行动作的子节点,由此形成由所述触发节点经所述子节点至所述结束节点的触发器执行流程;
44.s904、设置各子节点的参数,据此生成触发器;其中,基于对应子节点的数据需求,配置所述子节点的赋值规则;从而使得所述对应子节点能够根据所述赋值规则为所述子节点的对应字段赋值;其中,当赋值规则需要根据前置节点执行后的运行数据赋值时,自所述内存中调用前置节点的运行数据,根据所述运行数据和设置的赋值规则为所述对应字段赋值。
45.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现触发器变量赋值方法或触发器配置方法。
46.本发明中,通过在内存中存储触发器各节点的运行数据,并定义支持前置节点的字段数据进行赋值和计算的赋值规则,可以满足更加多变的业务场景,相比现有技术需要多个触发器才能实现这一功能,本发明只需要配置一个触发器便可实现,减少了人力成本,提升了用户的体验感。另外,本发明采用了自定义赋值、字段赋值、公式赋值、表单赋值、空值赋值等多种赋值方式,使触发器配置更加灵活,满足用户更多使用场景。
附图说明
47.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
48.图1为本发明触发器配置方法的一个优选实施例的流程图。
49.图2为通过可视化方式配置触发器的示意图。
50.图3为本发明触发器变量赋值方法的一个优选实施例的流程图。
51.图4为采用字段赋值时,配置界面的示意图。
52.图5为采用公式赋值时,配置界面的示意图。
53.图6为给字段类型分配字段类型代码的示意图。
54.图7为建立目标字段的字段类型和被赋值字段的字段类型之间的映射关系的示意图。
55.图中:101.触发节点,102.增加节点操作符,103.删除操作符,104.独立动作节点,105.分支操作节点,106.分支组合节点,107.分支节点,108.结束节点。
具体实施方式
56.以下通过特定的具体实例说明本发明的实施方式,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
57.本发明公开了一种触发器配置方法,采用配置抽屉在可视化配置画布上配置动作节点形成触发器,能够实现了触发器的可视化配置,在不影响现有业务的基础上,改善了触发器配置体验,且降低了排查问题难度,减少维护成本。另外,在配置触发器时还可设置通过前置节点的字段数据对后续节点进行赋值的方式,从而可以满足更加多变的业务场景。
58.如图1所示,本发明触发器配置方法的一个优选实施例包括以下步骤:
59.s901、创建触发器可视化配置画布,以便于在可视化配置画布以可视的方式配置触发器的执行流程。
60.本步骤中,所述可视化配置画布作为提供一个供配置用户配置触发器的可视化界面而存在,配置用户可在配置触发器时实时掌控、操作触发器配置事项。所述配置用户可以企业管理人员,本优选实施例中,将配置权限由云端侧下放至用户侧,配置用户根据自身需要配置所需的触发器,配置用户能够根据自身习惯、企业数据种类、数据实参、常用应用场景等配置适用于他自身的、贴合度及灵活度更高的触发器触发过程,便于后期应用层触发时,能够根据配置的触发器生成一系列的执行动作,实现由首至尾的完整执行链。
61.s902、在可视化配置画布中生成触发节点101和结束节点108,并在触发节点101设置触发器的触发条件。
62.所述触发条件是指:在用户应用层面,用户开启或触发所述触发器的开关。例如在指定表单中新增数据、在指定表单中修改数据、达到预设的时间等等。当以新增数据作为触发条件时,当检测到某一表单具有用户新增数据时,则触发对应的触发器,当触发器被触发后,则基于配置的对应触发器执行流程由首至尾执行,直至该对应触发器的所有执行流程全部被执行。当以修改数据作为触发条件时,当检测到某一表单数据被修改时,则触发对应的触发器。应当理解的,所述触发条件可以根据不同配置用户的实际需求而设定,上述仅作为示例性描述,不用于限制触发条件的范围。
63.s903、根据所述触发条件于所述触发节点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之间。
64.配置用户可基于需求配置一个或多个并行或串行独立动作节点104作为触发器执行流程,也可基于需求配置一个或多个并行分支节点作为触发器执行流程。所述独立动作节点104和并行分支节点的配置无先后顺序,也即,配置用户可基于需求优先配置独立动作节点104或优先配置并行分支节点,也可在串行的两独立动作节点104之间配置并行分支节点,还可在并行分支节点中的某一个分支节点107下方再次配置并行分支节点等等。综上,当需要依次执独立动作时,可配置独立动作节点104,当需要多个动作并行执行时,可配置并行分支节点,然后在每一分支中分别配置分支节点107。
65.根据本发明的一方面,所述s903步骤具体包括:
66.s9031、以所述触发节点101作为父节点、结束节点108作为终节点,于可视化配置画布中设置附属于所述父节点之下的子节点,所述子节点位于所述触发节点101与所述结束节点108之间。
67.本步骤中,以触发节点101作为父节点增加的子节点,该子节点为触发节点101的子节点;在某一子节点的下一级增加的另一子节点,则增加的子节点为作为上一级子节点的子节点;从而形成父子关系。所述独立动作节点104以及所述并行分支节点中的每一分支节点107均与其父节点连接,所述独立动作节点104及所述并行分支节点中的每一分支节点107均与其子节点连接。
68.为便于进行增加或删除子节点的操作,增加触发器配置的灵活性、可操作性及兼容性,还可在每一子节点与其父节点之间及每一子节点与其子节点之间均具有供配置用户增加子节点的增加节点操作符102,每一子节点上均具有供配置用户删除该子节点的删除操作符103。
69.s9032、根据所述父子关系由父至子逐级指向,并使最后一级子节点指向所述结束节点108,即将没有下一级子节点的子节点做为结束节点108的父节点,从而将使该子节点指向结束节点108,根据父子关系进行连线后由此于所述可视化配置画布中形成触发器执行流程图。
70.如图2所示,为便于根据需求选择相应的子节点,在创建触发器可视化配置画布之前,还可预先创建节点配置抽屉;所述配置抽屉内具有不同执行动作的若干独立动作节点配置模块;所述配置抽屉内还具有用于配置并行分支节点的分支配置模块。所述s9031步骤的具体方法为:
71.先根据触发节点101与所述结束节点108之间的增加节点操作符102增加配置子节点;即点击触发节点101与结束节点108之间的增加节点操作符102,打开配置抽屉。然后根据是否需要并行执行两个或两个以上的动作选择对应的节点配置方法:
72.(1)当同一时间只执行一个动作时,据所述触发条件选择所述配置抽屉中的对应执行动作的独立动作节点配置模块将所述独立动作节点104配置于所述触发节点101与结
束节点108之间,形成第一独立动作节点104。
73.(2)当需要并行执行两个或两个以上的动作时,据所述触发条件选择所述配置抽屉中的分支配置模块以将第一并行分支节点配置于所述触发节点101与所述结束节点108之间。
74.之后,当需要继续增加子节点时,根据需求于所述第一独立动作节点104(或第一并行分支节点)和触发节点101之间或第一独立动作节点104(或第一并行分支节点)和结束节点108之间增加配置第二独立动作节点104和/或第二并行分支节点。之后,还可根据需要继续在独立动作节点104(或并行分支节点)和触发节点101之间、独立动作节点104(或并行分支节点)和结束节点108之间,或两个独立动作节点104(或并行分支节点)之间、以及独立动作节点104和并行分支节点之间增加独立动作节点104或并行分支节点。
75.其中,选择所述分支配置模块配置对应的并行分支节点的具体方法为:
76.先自所述配置抽屉中选择所述分支配置模块以触发并行分支节点配置指令。
77.然后根据所述并行分支节点配置于可视化配置画布中对应位置处配置一个分支操作节点105和一个分支组合节点106。所述分支操作节点105用于形成多个分支,分支组合节点106用于将多个分支合为一路。
78.之后,在分支操作节点105和分支组合节点106之间并行生成两个分支,并在每一分支生成一个分支节点107于对应位置处。
79.再判断是否需要增加分支执行流程,如果需要增加分支,则使对应分支操作节点105的分支操作符执行增加分支节点任务,以在对应分支操作节点105和分支组合节点106之间并行增加一个分支节点107。由于该方式固定生成两个分支,当两个分支不满足需求时,可通过点击分支操作符不断添加分支,直至满足需求。
80.最后,为每一分支以独立动作节点104或并行分支节点的方式配置子节点,从而使得所述分支被赋与对应的执行动作。
81.s904、设置各子节点的参数,据此生成触发器;所述触发器以所述触发器执行流程图作为执行依据,逐级执行所述触发器流程图所示流程。即从触发节点101起,按照触发器执行流程图依次向下执行对应的动作,直到执行至结束节点108完成整个触发器执行流程。其中,当某一子节点需要赋值时,基于对应子节点的数据需求,配置所述子节点的赋值规则;从而使得所述对应子节点能够根据所述赋值规则为所述子节点的对应字段赋值;其中,当赋值规则需要根据前置节点执行后的运行数据赋值时,自所述内存中调用前置节点的运行数据,根据所述运行数据和设置的赋值规则为所述对应字段赋值。
82.设置子节点的参数包括设置独立动作节点104的参数和设置分支节点107的参数。
83.为在满足系统的不同触发流程需求,本实施例设置了多个独立动作节点104,通过组合能够满足工业互联网协同平台系统的各种触发流程需求。具体结合实例,独立动作节点104包括:新增数据节点、编辑数据节点、获取数据节点、删除数据节点、填写节点和app通知节点等多个不同节点。各独立动作节点104的功能及参数设置如下:
84.获取数据节点:用于从指定的表单(即一个数据表,每一数据表都有一个独立的id号,可通过数据表的id号指定表单,也可根据数据表的名称指定表单)获取满足筛选条件的一条或多条数据;配置的参数包括获取数据的表单名称和数据的筛选条件。
85.新增数据节点:用于在指定的表单中新增一条数据;配置的参数包括新增数据的
表单、字段(表单中一列单元格的列标题为这一列单元格的字段名称;每一单元格还分配有一个独立的字段id号,可通过数据表的字段名称来指定表单的一列单元格,也可通过字段id指定表单的一个单元格)和新增数据的赋值规则。
86.编辑数据节点:用于对指定表单中指定字段的数据进行编辑修改;配置的参数包括待编辑数据的表单、字段和编辑数据的赋值规则。
87.删除数据节点:用于删除指定表单的数据;配置的参数包括删除数据的表单名称。
88.填写节点:用于通过人工方式对指定表单中的数据进行填写;配置的参数包括填写数据的表单名称和有填写权限的用户名称。
89.app通知节点:用于通过app发送通知给指定的对象;配置的参数包括接收通知的对象名称。
90.当然,独立动作节点104还可设置其他功能的节点,在此只是以常用节点进行举例说明。
91.设置分支节点107的参数包括:在各分支节点107设置执行分支的条件或指定执行分支的主体。例如,请继续参考图2,当在分支节点107之前执行了新增数据的动作时,可将两个分支节点107的执行分支的条件分别设置为:“单行文本=2执行”和“单行文本=1执行”;当新增的数据为“2”时,则满足“单行文本=2执行”条件,执行左边的分支;当新增的数据为“1”时,则满足“单行文本=1执行”条件,执行右边的分支。
92.本实施例中,通过可视化配置画布和配置抽屉实现了触发器的可视化配置,在不影响现有业务的基础上,改善了触发器配置体验,能够在配置过程中预见触发器配置全貌,使触发器配置过程完全可见。降低排查问题难度,减少维护成本。另外,还可通过前置节点的字段数据进行赋值,可以满足更加多变的业务场景。
93.本发明还公开了一种触发器变量赋值方法,通过基于触发器节点的数据需求,配置所述对应的赋值规则,并在执行触发器的节点时,基于预先配置的赋值规则为所述对应字段赋值;其中,当赋值规则需要根据前置节点执行后的运行数据赋值时,还可从内存中调用前置节点的运行数据,通过触发器运行过程中产生的数据为后续的节点赋值,相比现有技术需要多个触发器才能实现这一功能,本实施例只需要配置一个触发器便可实现,减少了人力成本。
94.如图3所示,本发明触发器变量赋值方法的一个优选实施例包括以下步骤:
95.s1、基于触发器的对应节点的数据需求,配置所述对应节点的赋值规则。在配置触发器时,在需要赋值的触发器节点设置被赋值的表单名称、被赋值字段名称和赋值规则。具体为:先在被赋值表单的选择区选择被赋值的表单(本实施例中优选为通过下拉菜单选择),然后在被赋值字段的选择区显示该表单的所有字段供用户选择(本实施例中优选为通过下拉菜单选择);用户选择被赋值字段后,再先选择对应的赋值规则。
96.在执行s1步骤之前,需要预先定义根据触发器的节点运行数据为字段赋值的赋值规则。例如,可以预先定义字段赋值规则;当选择字段赋值时,在用于设置赋值参数的赋值参数区域中显示前置节点(即在该节点之前可能被执行的节点,如该节点的父节点,该节点父节点的父节点等等)的表单的字段,从中选择一个表单的字段作为目标字段,以目标字段作为赋值参数;从而在赋值时,能够从内存中调用目标字段的表单所在节点的运行数据,然后从运行数据中找出目标字段的数据赋值给被赋值字段。通过定义字段赋值的赋值规则,
触发器在运行时可以直接调用前置节点的表单的字段数据给执行节点(即触发器当前正在执行的节点)的表单的字段赋值,不用分多个触发器调用。如图4所示,为采用字段赋值时,使用“生产派工单”(前置节点的表单)中的“客户姓名”(目标字段)的数据给“入库单据”(待赋值字段的表单)的“客户名称”(待赋值字段)赋值的配置示意图。
97.在本实施例中,还预先定义有公式赋值规则、自定义赋值规则、表单赋值规则和空值赋值规则。
98.当选择公式赋值规则时,在赋值参数区域中显示预先设置的函数公式,先从中选择一个函数公式为赋值规则的公式,然后设置函数公式的各个运算参数,以指定值作为函数公式的参数或从前置节点的表单字段中选择一个表单的字段作为目标字段,以目标字段作为函数公式的参数,以函数公式和函数公式的参数作为赋值参数;在赋值时,通过函数公式对参数的值进行运算,将运算结果赋值给被赋值字段;当函数公式的参数为指定值时,直接以指定值作为函数参数的值;当函数公式的参数为前置节点的表单字段时,先从内存中调用目标字段的表单所在节点的运行数据,然后从运行数据中找出目标字段的数据作为函数参数的值。通过定义公式赋值的赋值规则,可以调用多个前置节点的表单的字段数据进行公式运算后,将运算结果给执行节点的表单的字段赋值,也可将前置节点的表单的字段数据与指定值进行公式运算后,将运算结果给执行节点的表单的字段赋值,赋值方式更加灵活。如图5所示,为选择公式赋值时的配置界面,可以选择多种运算函数,且可以选择前置节点的字段作为运算函数的参数,也可在人工输入运算函数的参数。
99.当选择自定义赋值规则时,在赋值参数区域中写入需要赋值给被赋值字段的数据,将赋值参数区域写入的数据作为赋值参数;以赋值参数区域写入的数据给被赋值字段赋值。
100.当表单中部分字段的内容基本一致时,可以预先设置表单中各字段的默认值,当设置赋值规则为表单赋值规则时,将被赋值字段的默认值作为赋值参数(选择表单赋值时,赋值参数为自动根据被赋值字段进行确定,无需人工设置);赋值时获取被赋值字段的默认值赋值给被赋值字段。例如:新入职的员工工资的各个项目的金额基本都是一样的,那么就先可以设置工资单这一表单中工资的各个项目的字段的默认值为新入职的员工工资的金额,当有员工新入职,需要在工资单新增该员工的工资时,其工资的各个项目的字段就可以设置赋值规则为表单赋值,从而直接将设置的默认值赋值给对应的字段,而无需人工填写或通过其他字段赋值,赋值过程更加简单。
101.在某些特殊的业务场景下(如不能确定字段的内容时),用户需要将某个字段赋空,则需要用到空值这个功能。设置赋值规则为空值赋值规则时,以空值作为赋值参数(选择空值赋值时,赋值参数为自动设置为空值,无需人工设置),赋值时直接给被赋值字段赋空值;以便于用户在确定该字段的内容后再修改。例如:当派遣某维修人员修理设备时,“修理人”字段先填写派遣的人员,但是,当该人员到了现场发现自己修不了,这个时候他就需要把“修理人”字段赋空值,当确定再次派遣的人员后再修改“修理人”字段。
102.为避免选择的赋值规则无法为被赋值字段赋值,在执行s1步骤前还可以先执行以下步骤:
103.sa1、预先定义每一字段类型允许的赋值规则,并建立字段类型和赋值规则之间的映射关系。所述s1步骤还包括:
104.s101、设置赋值规则时,只显示与被赋值字段的字段类型有映射关系的赋值规则,而不会显示无映射关系的赋值规则,确保选择的赋值规则可以为被赋值字段赋值。
105.如图6所示,本实施例中优选为先为每一字段类型分配一个字段类型代码,并为每一赋值规则分配一个赋值规则代码(本实施例中,“自定义赋值”的代码为1,“字段赋值”的代码为2,“公式赋值”的代码为3,“表单赋值”的代码为4,“空值赋值”的代码为5);然后建立多个集合,并将赋值规则相同的字段类型放同一集合,再建立集合和赋值规则的映射关系。其代码如下:
106.//选择类型集合
107.export const select_type_options={
108.all:[
[0109]
{name:

字段赋值’,id:
‘2’
},
[0110]
{name:

自定义赋值’,id:
‘1’
},
[0111]
{name:

公式赋值’,id:
‘3’
},
[0112]
{name:

表单赋值’,id:
‘4’
},
[0113]
{name:

空值赋值’,id:
‘5’
}
[0114]
],
[0115]
var:[{name:

字段赋值’,id:
‘2’
}],
[0116]
normal:[
[0117]
{name:

字段赋值’,id:
‘2’
},
[0118]
{name:

自定义赋值’,id:
‘1’
}
[0119]
],
[0120]
normal_var_fillout_null:[
[0121]
{name:

字段赋值’,id:
‘2’
},
[0122]
{name:

自定义赋值’,id:
‘1’
},
[0123]
{name:

表单赋值’,id:
‘4’
},
[0124]
{name:

空值赋值’,id:
‘5’
}
[0125]
],
[0126]
var_fillout_null:[
[0127]
{name:

字段赋值’,id:
‘2’
},
[0128]
{name:

表单赋值’,id:
‘4’
},
[0129]
{name:

空值赋值’,id:
‘5’
}
[0130]
]
[0131]
};
[0132]
/*举例:如果要取select_type_options的all,可以用select_type_option s[type_const_all];type_const_all代表all,select_type_options[type_const_all]就可以取到select_type_options的key值为all的数组*/export const type_const_all=

all’;
[0133]
export const type_const_var=

var’;
[0134]
export const type_const_normal=

normal’;
[0135]
export const type_const_fillout_null=

var_fillout_null’;
[0136]
export const type_const_normal_var_fillout_null=

normal_var_fillout_null’;
[0137]
/*定义可以使用字段赋值、自定义赋值、公式赋值、表单赋值、空值赋值的字段类型(即:单行文本、多行文本、下拉选择、日期时间、数值输入、引用对象)*/
[0138]
export const select_type_all=[1,2,3,6,8,55];
[0139]
/*定义可以使用字段赋值、自定义赋值、表单赋值、空值赋值的字段类型(即:部门选择、人员选择)*/
[0140]
export const select_type_normal_var_fillout_null=[20,58];
[0141]
/*定义可以使用字段赋值、表单赋值、空值赋值的字段类型(即:文件上传、图片、企业信息)*/
[0142]
export const select_type_var_fillout_null=[17,5,62];
[0143]
//根据字段类型显示对应的赋值规则
[0144]
const getselecttype=input_type=》{
[0145]
if(select_type_all.includes(input_type))
[0146]
{
[0147]
return select_type_options[type_const_all];
[0148]
}
[0149]
else if(select_type_var.includes(input_type))
[0150]
{
[0151]
return select_type_options[type_const_var];
[0152]
}
[0153]
else if(select_type_normal_var_fillout_null.includes(input_type))
[0154]
{
[0155]
return select_type_options[type_const_normal_var_fillout_null];
[0156]
}
[0157]
else if(select_type_var_fillout_null.includes(input_type)){
[0158]
return select_type_options[type_const_fillout_null];
[0159]
}
[0160]
else
[0161]
{
[0162]
return select_type_options[type_const_normal];
[0163]
}
[0164]
};
[0165]
如图7所示,为实现不同字段类型之间的赋值,在执行s1步骤前还可以先执行以下步骤:
[0166]
sa2、预先定义目标字段类型与被赋值字段类型的匹配规则,并分别建立目标字段的每一字段类型和被赋值字段的字段类型之间的映射关系。
[0167]
当然,此时还需要定义实现不同字段类型之间转换的函数,以便于在赋值时先通
过函数将目标字段的字段类型转换为被赋值字段的字段类型,以便于完成赋值。s1步骤具体还包括:
[0168]
s102、当赋值规则为字段赋值时,先查询与被赋值字段的字段类型有映射关系目标字段类型。
[0169]
s103、在赋值参数区域中只显示前置节点的所有表单中字段类型为映射的目标字段类型的字段,不显示前置节点的表单中字段类型不是映射的目标字段类型的字段。
[0170]
为了能够在执行s2步骤时从内存中调用前置节点的运行数据,在执行s2步骤前先执行以下步骤:
[0171]
sc、触发器触发后,在内存中存储每一被执行节点的运行数据。具体方法为:
[0172]
所述触发器的每一个节点均设置有独立的节点id,在触发器被触发时,在内存中创建一个list用于记录每一被执行节点的运行数据,在触发器运行过程中,每执行一个节点,均将所述节点的运行数据写入list中,并将list中新增的所述运行数据写入触发器运行日志;list中每个节点的数据是一个key-value结构的map,其中key是对应节点的节点id,value为该节点的运行数据,当触发器的运行结束时,对应的list自动删除。
[0173]
为便于在触发器运行过程中调用节点的运行数据,本实施例优选为在内存的list中采用三层存储结构存放节点的运行数据,第一层结构存储以节点id表示的执行过的触发器节点,在每一节点id下存储该节点执行的表单的表单id作为第二层结构,在每一表单id下存储该节点执行的字段的字段id及该字段在执行后的数据作为第三层结构。其中,获取到前置节点传入的字段id定义为elementid,节点id定义为nodeid,表单id定义为formid。
[0174]
例如:在新增节点(id为addnode01),给“员工信息表”(id为formstaff info01)表单新增一条数据,假设员工信息表中有三个字段“姓名”(id为nam e01)、“电话”(id为phone01)、“地址”(id为address01);当执行新增节点为员工信息表单新增一条姓名为“张三”、电话为“18933223355”、地址为“北京市朝阳区28号”的数据后,list中该节点的运行数据如下所示:
[0175]
从内存中调用目标字段的数据时,先根据nodeid从list的第一层结构中找到对应的节点,然后根据formid在该节点的第二层结构中找到对应的表单,再根据elementid从该表单的第三层结构中找到对应的字段和数据,根据获取到的nodeid,formid,elementid,可以精准查询到当前节点对应的表单字段值为多少。例如:要调用上述新增节点的员工信息
表中电话字段的数据时,先根据“addnode01”从list中找到新增节点,再根据“formstaffinfo01”从新增节点的数据中找到员工信息表,最后根据“phone01”找到电话字段,并读取该字段对应的数据得到“18933223355”,即为目标字段的数据。
[0176]
s2、基于预先配置的赋值规则,执行所述触发器的对应节点时,根据该节点设置的赋值规则为所述对应节点的对应字段(即被赋值字段)赋值;其中,当赋值规则需要根据前置节点执行后的运行数据赋值时,自所述内存中调用前置节点的运行数据,根据所述运行数据和配置的赋值规则为所述对应字段赋值。
[0177]
为根据定义的赋值规则完成赋值动作,在执行s1步骤之前还执行以下步骤:
[0178]
sa3、预先针对每一赋值规则分别定义一个赋值函数表达式,并定义一个数据结构(数据结构中定义有解析时需要用到的函数)用于存储节点的赋值函数表达式和赋值参数。具体为:
[0179]
定义赋值规则的代号为“selecttype”,selecttype=1表示自定义赋值,selecttype=2表示字段赋值,selecttype=3表示公式赋值,selecttype=4表示表单赋值,selecttype=5表示空值赋值;在赋值时根据selecttype的值即可判定赋值规则,并调用对应的赋值函数表达式。
[0180]
(1)当selecttype=1(即自定义赋值)时,赋值函数表达式如下:
[0181]
expression=“赋值参数”//赋值参数为用户自定义输入
[0182]
其中,expression为给被赋值字段赋值的赋值数据。
[0183]
(2)当selecttype=2(即字段赋值)时,赋值函数表达式如下:
[0184]
expression=“selectfromprocess(

nodeid’,’formid’,’elementid’)”。
[0185]
其中,selectfromprocess为定义的函数,其功能是根据赋值参数中的nod eid、formid和elementid从list中调用相应节点的运行数据中相应表单的对应字段的数据。
[0186]
(3)当selecttype=3(即公式赋值)时,赋值函数表达式如下:
[0187]
expression=“函数名(函数的参数)”。
[0188]
例如:当需要采用求和函数“sum”计算10和5的和时,表达式如下:
[0189]
expression=“sum(10,5)”//15
[0190]
当需要求多个字段的数据之和时,先通过表达式“selectfromprocess(

nodeid’,’formid’,’elementid’)”分别调用两个字段的数据,再采用求和函数计算这两个数据之和。
[0191]
(4)当selecttype=4(即表单赋值)时,会先根据被赋值字段所在表单的表单id去查询这个表单的配置,然后根据字段id从这个表单的配置中取出对应字段的配置文件,从配置文件中获取到该字段的默认值,然后返回默认值作为赋值参数,赋值函数表达式如下:
[0192]
expression=“赋值参数”//赋值参数为被赋值字段的默认值
[0193]
(5)当selecttype=5(即空值赋值)时,赋值函数表达式如下:
[0194]
expression=null。
[0195]
本实施例中,优选为采用多层“children”的数据结构来存储赋值函数表达式和赋值参数,“children”结构可以为空,也可以包括一个或多个元素,每一元素包括一个下一层的“children”结构、一个“nodetype”字段和一个“text”字段;当“children”结构为空表示没有下一层结构;“text”字段用于存储文本信息,“nodetype”字段用于指定对“text”字段
的文本信息进行操作的函数。下面分别通过例子对几种赋值规则的数据结构进行说明。
[0196]
所述s1步骤具体还包括:
[0197]
s104、在设置节点的赋值规则和赋值参数时,将对应的赋值函数表达式和赋值参数存储在所述数据结构中。所述s2步骤具体还包括:
[0198]
s201、在赋值时,先对所述数据结构进行解析得到赋值函数表达式和赋值参数,再通过赋值函数对赋值参数进行运算得到所需的赋值数据并赋值给被赋值字段。下面针对不同的赋值规则分别举例进行说明:
[0199]
例子1、当赋值方式为自定义赋值时,假设被赋值字段的字段类型为单行文本,在赋值参数区域输入的数据为“张三”,得到的赋值函数表达式为:
[0200]
expression=“张三”。
[0201]
执行s104步骤时,该表达式通过两层“children”的数据结构进行存储,具体如下:
[0202][0203]
执行s201步骤进行解析时,先解析出第一层children中的nodetype字段为entry,故调用“entry”函数解析,按层级遍历所有的children。调用“ent ry”函数解析发现第一层children中还有值,故解析第一层children中的值(即第二层),第二层children中无值,故不再向下解析,继续解析第二层,第二层nodetype为“stringliteral”,故调用”stringliteral”函数解析,stringliteral函数的功能是将"text"字段中的数据以文本类型返回,直接获取第二层中text字段的值(即“张三”)为计算值,将该值返回。nodetype字段的函数为根据被赋值字段的字段类型确定,如果被赋值字段的字段类型为数值,则nodetype字段的函数为numberliteral(numberliteral函数的功能是将"te xt"字段中的数据以数值类型返回)。
[0204]
例子2、当赋值方式为字段赋值时,在赋值参数区域选择目标字段后,会获取目标字段的表单所在节点的节点id(假设为0001)、目标字段的表单id(假设为formid0003)和目标字段的字段id(假设为element2)作为赋值参数,得到的赋值函数表达式为:
[0205]
expression=“selectfromprocess(

0001’,

formid0003’,

element2’)”。
[0206]
执行s104步骤时,该表达式通过三层“children”的数据结构进行存储,具体如下:
[0207][0208][0209]
执行s201步骤进行解析时,先解析出第一层children中的nodetype字段为entry,故调用“entry”函数解析,按层级遍历所有的children。调用“ent ry”函数解析发现第一层children中还有值,故解析第一层children中的值(即第二层),第一层children中有三个元素,故每个元素单独解析,第一个元素的children中(即第三层)的nodetype为”stringliteral”,因此以文本类型返回其text中的值(即“0001”);同样的,解析第二个元素
会返回文本“formid0003”,解析第三个元素会返回文本“element2”;之后,返回第二层,第二层的nodetype为“function”,故调用“function”函数解析,fun ction函数的功能是调用以"text"字段中的数据为函数名的函数进行解析,故调用selectformprocess函数,得到上述的赋值函数表达式给被赋值字段赋值。
[0210]
例子3、当赋值方式为公式赋值时,假设是通过公式对数值“10”和数值“5”求和时,在赋值参数区域选择对应的公式(即求和公式),并设置公式的参数(即数值“10”和数值“5”)后,得到的赋值函数表达式为:
[0211]
expression=“sum(10,5)”。
[0212]
执行s104步骤时,该表达式通过三层“children”的数据结构进行存储,具体如下:
[0213][0214][0215]
执行s201步骤进行解析时,先解析出第一层children中的nodetype字段为entry,故调用“entry”函数解析,按层级遍历所有的children。调用“ent ry”函数解析发现第一层
children中还有值,故解析第一层children中的值(即第二层),第一层children中有两个元素,故每个元素单独解析,第一个元素的children中(即第三层)的nodetype为”numberliteral”,因此以数值类型返回其text中的值(即“10”);同样的,解析第二个元素会返回数值“5”,之后,返回第二层,第二层的nodetype为“function”,调用以"text"字段中的数据为函数名的函数进行解析,故调用sum函数,得到上述的赋值函数表达式给被赋值字段赋值。
[0216]
需要说明的是,设置公式的参数时,可以将前置节点的字段设置为参数,例如,可以将上述例子中的参数—数值“10”替换为前置节点的字段,此时,会将使用例子2中的全部数据结构来代替数值“10”所在的元素(即"children":[],"nodetype":"numberliteral","text":"10"),从而会出现四层结构。在解析时,会先解析出字段赋值的表达式得到该字段的数据,再将该数据与另一参数(即“5”)进行求和运算。
[0217]
设置公式的参数时,还可以将公式设置为参数,例如,可以将上述例子中的参数—数值“10”替换为公式sum(3,7),则会将数值“10”所在的元素替换为上述例子的结构,形成嵌套。在解析时,会先解析出该公式sum(3,7),再以公式sum(3,7)的结果作为参数与另一参数(即“5”)进行求和运算。
[0218]
表单赋值和空值赋值的存储数据结构与例子1基本相同,区别只在第二层级的"text"字段。当选择表单赋值时,赋值参数为被赋值字段的默认值,在第二层级的"text"字段存储被赋值字段的默认值即可;当选择空值赋值时,赋值参数为空值,在第二层级的"text"字段存储空值即可。
[0219]
本实施例通过在内存中存储触发器各节点的运行数据,并定义支持前置节点的字段数据进行赋值和计算的赋值规则,能够采用前置节点的数据进行赋值,相比现有技术需要多个触发器才能实现这一功能,本实施例只需要配置一个触发器便可实现,减少了人力成本。另外,本实施例采用了自定义赋值、字段赋值、公式赋值、表单赋值、空值赋值等多种赋值方式,使触发器配置更加灵活,满足用户更多使用场景,提升了用户的体验感。
[0220]
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,通过计算机执行所述计算机程序时执行上述触发器变量赋值方法的部分或全部的实际操作,或者执行上述触发器配置方法的部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
[0221]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1