逻辑功能介绍
1 简介
逻辑是对应用一系列行为的定义,比如:修改数据、删除数据、查询数据、打开页面等等,并且,我们提供了图形化的展现形式,来让您更直观地去操作、定义这些行为。在本平台里,逻辑的编写与 Java 的思想是一致的。
逻辑,只能在服务器端运行,一般而言,它需要搭配页面编辑器去使用,比如某一个页面需要通过查询后台数据来展现网页内容时,可通过配置数据源=逻辑,来完成数据的查询、返回、展现。
2 图形化符号
因为逻辑使用图形化的形式来让用户更直观地定义应用行为,所以您大概需要对这些图形化符号有一些了解。
目前,图形化符号,从图形的类别上,可以大致分为两类:
2.1 元件
元件是定义一条应用行为的最小组成单元,一般以长方形或者圆形的形式出现,它们负责执行一系列最小化的操作,具有低耦合、高内聚、可配置的特性。
2.1.1 通用元件
这些元件大多数是用于控制逻辑的执行顺序、执行情况,类似于控制执行过程中的走向。
图标 | 名称 | 说明 |
---|---|---|
注释 | 用于方便用户在编排逻辑的过程中,填写一些备注或者说明,防止用户在以后回过头来看这条逻辑的时候,不明白它的业务含义。 | |
参数 | 用于定义,运行该逻辑前,需要有哪些准备数据、前置数据。而这些数据,一定是由调用方传递过来的。 如果把逻辑比作制作工艺,那么参数就是制作前需要准备好的原材料。 | |
循环 | 循环,顾名思义,就是一次次重复地做相同的事。 比如:从篮子里一次次地取出鸡蛋,直到篮子里没鸡蛋,那么这里面一次次取鸡蛋的动作就可以比作循环。 | |
停止循环 | 只能用于循环元件的内部,表示退出当前循环。 比如,正常情况下,我要重复做取鸡蛋的动作 10 次,才能把篮子里的鸡蛋取完,但是在这过程中我发现取 3 个鸡蛋也够我炒菜了,那我就可以在第 3 次动作结束后,紧跟着使用停止循环元件,来退出重复取鸡蛋的动作,让剩下的 7 个鸡蛋依然在篮子里放着。 | |
继续循环 | 只能用于循环元件的内部,表示跳过后续节点,开始执行下一次循环。 还是用上面的从篮子里取鸡蛋作为例子,我现在每次取完一次鸡蛋后,还需要对鸡蛋做一些清洗工作才能算是完成一次循环,但是中途突然发生了一些其他事情,导致我不想清洗鸡蛋,想直接执行取下一枚鸡蛋的动作,这个时候,就需要用到继续循环,这里面,跳过的就是清洗鸡蛋这个动作,开始了取下一个鸡蛋的循环。 | |
决策 | 决策元件后面可跟多条分支,但真正运行时只会根据计算节点,走一条分支。类似于当我们走到十字路口时,告诉我们到底走那一条路的意思。 | |
合并 | 合并元件前面可跟多条分支,用于表明这些分支元件,最终都应该汇总到合并元件这里,然后再执行后续的元件。有点类似殊途同归的意思。 | |
休眠 | 从专业术语来解释,就是当线程执行到这一元件时,休眠指定的一段时间。从类比的角度来看,就比如我们跑步跑到一半累了,停下来休息了一会儿,待会儿再跑。 | |
结束节点 | 结束节点用于表明该逻执行完毕。这里对结束节点做如下几点约束: 1.一条逻辑中可以有多个结束节点。 2.这些多个结束节点,必须拥有相当的返回类型。 3.结束节点后面不能再跟其他连线或者元件。 4.一条正常的逻辑必须以结束节点结尾。 |
2.1.2 对象元件
对象类型的元件,在大多数场景下,可以帮您完成对数据库的增删改查操作,如下图所示
其次,对象还描述了一种简单的数据结构:即一个对象下包含多个属性,如下图所示
其中,手机是对象,品牌、型号、价格是它的属性。
并且,对象与对象之间,可以形成嵌套关系,如下图所示
使用对象的这些特点,可以帮您返回丰富的数据结构给客户端,便于客户端直观地展示数据,如下图所示
术语解释
实体
这里说的实体,是指领域模型画布中,创建的实体,例如下图所示:
这里面的 device 就是一个实体。
通常来说,实体是对现实世界中事物的映射。可以这么想象,现实世界与数字化世界之间有一面镜子,现实世界中的设备,对应的就应该是数字化世界中的设备实体。
属性
如下图所示,这个 device 实体,有三个属性,type、sn、wire_mac。我们可以给实体添加任意多个属性,只要它们能满足您的业务需求即可。
红框内的三个属性,就表明设备实体,用于三个属性,分别是:设备类型、序列号、有线 mac。
对象
对象是实体实例化后的一种结果。
如果把实体比作模具,那么对象就是被这个模具制作出来的模型。
又比如,设备实体是对某一场景下设备的统称,那么对象就可以说是具体的一台设备。
即,实体=概念,对象=该概念的实际产物。
图标 | 名称 | 说明 |
---|---|---|
创建对象 | 根据选择的实体,创建出一个该实体的对象,并把该对象的使用权输出到执行过程中去。 | |
修改对象 | 根据选中的某一个对象,修改其属性值。 | |
提交对象 | 根据选中的某一个对象或者集合,把它持久化到数据库中去。 | |
删除对象 | 根据选中的某一个对象,把它从数据库中删除,并且把对该对象的使用权,从执行流中移除。 | |
检索对象 | 根据选中的实体,以及配置的过滤条件,从数据库查询出满足条件的对象或者对象集合。 | |
高级搜索 | 与上面的检索对象元件很类似,不过高级搜索为数据查询添加了许多高级功能。 | |
复用对象 | 允许用户把某一个对象的子对象单独提取出来,方便后续使用。 | |
设置关联 | 根据选中的对象,把该对象的关联关系,即子对象或者子集合的数据,反应到数据库中去。 |
2.1.3 集合元件
集合类型的元件,主要是针对实体集合数据,做一些操作。
集合,顾名思义,是一种可以存放多个物品的容器的概念。
类比于现实世界中,鸡蛋篮子,可以称作集合,里面的一个个鸡蛋,可以称作元素。
在本平台中,集合中存放的数据类型必须保持一致,不能往同一个集合中,放入不同数据类型的数据,
不能在集合 A 中,又放入用户实体数据,又放入角色实体数据。
图标 | 名称 | 说明 |
---|---|---|
聚合对象 | 对集合中的数据,做聚合操作,并返回计算结果。 | |
创建集合 | 创建一个空集合。 | |
修改集合 | 对集合做追加,删除,清空的操作。 | |
复用集合 | 允许把 A 集合转变成 B 集合,也允许把一串代表集合的 json 字符串,反序列化成一个集合。 |
2.1.4 变量元件
用于对一些非实体、实体集合的数据类型做支持。
映射
映射,属于容器的一种,不过它存放的不是一个个元素,而是一对对元素。
类比于现实世界,在公司,会有一张员工信息表格,我们可以把员工编号和员工信息,当作这一对对元素,员工编码,就是这对元素的建,员工信息,就是这对元素的值,而映射,保存的就是这些键值对。
如上图所示,我们就能在该映射中,根据员工编号 0001,找到员工张三的信息。
图标 | 名称 | 说明 |
---|---|---|
创建变量 | 创建一个变量,变量的类型可以指定。 | |
修改变量 | 修改一个变量的值。 | |
创建映射 | 创建一个空映射。 | |
修改映射 | 修改一个映射。 |
2.1.5 客户端元件
客户端类型的元件,用于控制前端行为。
所有的客户端元件,并非在逻辑的执行过程中实时通知前端,而是在该逻辑执行完成后,按顺序一次性通知到前端。只有被前端直接调用的逻辑,在里面使用的客户端元件,才能被前端感知到。
图标 | 名称 | 说明 |
---|---|---|
关闭页面 | 通知前端,从最上层开始计算,关闭 1 个或者多个、所有的页面。 | |
返回首页 | 通知前端,跳转到应用首页。 | |
提示信息 | 通知前端,弹出提示信息框。 | |
跳转页面 | 通知前端,跳转到指定页面。 | |
刷新 | 通知前端,刷新当前的数据容器。 |
2.1.6 调用元件
调用类型的元件,主要负责执行高级操作。
图标 | 名称 | 说明 |
---|---|---|
调用 javaAction | 用于调用由用户上传 jar 包里面的 api。 | |
调用逻辑 | 用于调用其他逻辑。 | |
REST 服务 | 用于请求其它 rest 接口。 | |
Redis 服务 | 用于对数据做一些缓存操作。 | |
文件服务 | 用于存储获取文件。 | |
代码段 | 用于编辑自定义脚本实现业务逻辑 | |
虎符数据服务 | 简化了对虎符数据服务接口的调用 | |
调用算盘 | 简化了对算盘节点的调用 |
2.1.7 定时任务元件
定时任务元件目前主要用于结合定时任务实现程序执行的定时操作。
图标 | 名称 | 说明 |
---|---|---|
创建定时任务 | 用于在逻辑中创建一个定时任务。 | |
修改定时任务 | 用于在逻辑中修改一个定时任务的配置。 | |
销毁定时任务 | 用于在逻辑中销毁一个定时任务。 |
2.1.8 参数化活动元件
参数化活动类型的元件目前主要用于对关系型数据库执行自定义查询、执行。
图标 | 名称 | 说明 |
---|---|---|
参数化查询 | 能对关系型数据库,做自定义查询。 | |
参数化执行 | 能对关系型数据库,做自定义执行,比如新增、修改、删除。 |
2.1.9 工作流元件
工作流类型的元件,负责执行与工作流相关的操作。
图标 | 名称 | 说明 |
---|---|---|
调用工作流 | 用于在逻辑中发起一个工作流。 | |
改变任务状态 | 用于在逻辑中改变工作流中一个用户任务的完成状态。 |
2.2 连线
连线,故名思意,它是以线的形式,两头连接着元件,充当着承上启下、桥梁一样的作用。连线,从图形上来分,分为 2 种类型:
第一种就如上图所示的带箭头的实线连线,用于表示两个元件间的执行顺序,上图就表示从左边的元件开始,运行到右边的元件。
第二种就是上图所示的,不带箭头的虚连线。目前只有和注释元件连接在一起的线,才会是虚线,此虚线只用于指明该文本注释说明针对的是哪一个元件,并不参与元件之间的执行顺序。
3 使用说明
登录进本平台设计器后,选择一个模组,新增逻辑:
填写一个名称后,点击保存:
创建完成之后,就是逻辑设计器工作台:
上图红框部分,是逻辑的图形化展现区域,我们称之为逻辑画布。绿框部分,是所有可用的元件,我们称之为元件栏。
然后,我们从元件栏单击选中一个元件,并把它拖到画布区域:
参数元件比较特殊,它在画布上的存在,不需要有连线的帮助,因为它相当于是这条逻辑开始执行的前置条件。
我们选中一个参数元件,先来配置它:
我们定义这个参数的类型是长整型,变量名称叫 id。说明该逻辑,需要一个长整型的入参,并且你在后续的逻辑编排过程中,会需要用到这个入参。
接着,我们拖入一个修改变量元件:
我们需要把修改变量元件,精准地拖入绿色的开始节点和红色的结束节点之间,用于表明该元件的执行顺序,在开始元件之后,在结束元件之前。
我们再对拖入的修改变量元件做一下配置:
该配置用于表明,我们会把 id 这个局部变量的值,修改成-1。
最后,我们配置一下结束节点:
我们把结束节点,配置成有返回值,意味着当调用方调用该逻辑后,会得到返回数据。由于我们选择的数据类型=长整形,值=id,意味着该逻辑在被触发调用后,最终会返回变量 id 的值,对应此处,该逻辑被调用后,必定会返回-1。