Appearance
FBP基础
1 FBP是什么
FBP (flow based programming)即基于流程的编程模式,将原本存在于代码中错综复杂的方法调用关系以可视化流程图的形式更直观的展示出来。它提供所见( 流程图示 )即所得( 代码执行 )的可视化能力,可自定义流程协议,支持流程配置的热部署,支持自定义指令和任务脚本,可负责各种基础能力组件的拼装。
平台提供基于FBP理念的**<接口>和<状态>**这两个功能模块,实现后台服务的低代码开发。
2 服务配置界面
进入<项目空间>-<接口>,先点击左侧目录栏内的一个服务接口,再点击右侧画布上方工具栏的如下图标进入编辑模式。
完整界面如下:
左侧是目录栏,用于维护目录结构和添加服务接口。部件面板在编辑模式下可见,它分类展示平台提供的服务部件。右侧是画布,可以将部件面板上的服务部件拖入画布绘制服务接口的流程图,点击画布上的部件浮出部件配置面板。点击顶部的tab可以切已经打开过的换服务接口配置页面。
3 服务部件
3.1 基础类
开始:标识进程的起始点,它只能具有输出连接,可以配置权限规则。
结束:指定进程内的路径在何处结束,它只能具有输入连接。
判断:根据分支(连接线)上的条件表达式判断走哪条分支,可以设置分支的优先级(最高为1)。
子流程:子流程是定义在父流程里的内嵌子流程,它内部可以包含其他节点、判断、事件等。
外部子流程:外部子流程是指主流程可以调用的外部接口,可跨应用和跨项目调用接口。
错误:一个可以自定义状态码和异常信息的结束事件,用于结束并返回一个错误的信息结果。
捕获错误:捕获运行错误,相当于代码的try...catch。
递归:满足递归条件时调用的一个事件节点。
捕获递归:配合递归节点和子流程使用,在子流程上捕获递归节点事件。
3.2 数据库类
执行:用于数据库DDL(create、drop、alter)、DML(insert、update、delete)语句的执行。
查询:用于数据库DQL(select)语句的执行。
事务:是一组数据库操作的集合,事务会把所有操作作为一个整体向系统提交或撤销操作请求,即这些操作要么都执行成功,要么都不执行。
连接检测:测试数据源是否可以正常连接成功的工具。
3.3 服务类
脚本:对参数、数据结构的处理,只适用Google Aviator语法,语法手册可参考:https://www.yuque.com/boyan-avfmj/aviatorscript
JSON解析:将json字符串解析成JSONArray或JSONObect。
JSON序列化:将JSON数据转换为json字符串。
日期解析:将字符串格式日期转换成时间戳。
日期格式化:用于Google Aviator中sysdate()函数,将当前系统日期转换成指定字符串格式。
权限:获取用户权限项表达式。
加解密:对字符串进行加密或解密。
Excel读:从指定存储路径中读取一个excel文件中的数据。(场景:与文件上传配合使用做数据导入)
Excel写:将数据写入到一个指定存储路径下的excel文件中。(场景:列表导出成excel)
webClient:请求外部第三方接口。
ZZD:请求浙政钉开放平台API接口。
Velocity模板引擎:可以使用简单的模板语言来引用由脚本代码定义的对象。
系统日期:获取后台系统日期。
UUID:获取一个uuid。
MAP:创建一个map对象。
3.4 状态机
状态集:根据在新增状态图时定义的状态代码获取所有状态集合。
事件集:根据当前状态节点ID获取下一步的事件集合。
流转:通过状态代码和事件ID获取下一状态的节点。
3.5 文件类
读文件:从指定路径下文件读取流。
写文件:文件内容输入流写入指定路径下。
复制:将目标文件复制到目标路径下。
移动:将目标文件移动到目标路径下。
删除:删除指定的文件。
罗列文件:获取某路径下所有文件列表。
文件信息:获取某路径下一个文件的名称、大小、最后操作时间等信息。
是否存在:判断文件在某路径下是否存在。
3.6 缓存
添加:添加内容到缓存。(目前支持jvm、redis两种形式)
删除:根据缓存key删除已添加的缓存内容。
获取:根据缓存key获取已添加的缓存内容。
3.7 编码
4 服务配置基础操作
4.1 添加目录和服务接口
在项目空间点击右侧菜单<接口>进入FBP配置,在目录栏添加目录和服务接口。
目录栏里的服务接口名称前显示了它是使用POST方法还是GET方法。
目录和接口默认显示名称,可以切换显示为接口路径(即接口代码)。
4.2 添加服务部件
在目录栏上点击一个服务接口并进入编辑模式,在右侧显示该服务接口的配置界面,包括服务部件面板和画布。
服务部件面板展示了服务配置可以使用的所有部件,通过鼠标拖拽方式将部件从服务部件面板放置到画布上,双击画布上的部件,可以在其内部备注文字。
如果要删除部件,先点击部件弹出工具面板,再点击移除图标即可。
添加常用部件的快捷方式:在上图部件弹出的工具面板上,前三个图标依次是添加结束部件、网关、脚本部件,点击可以在画布上添加相应部件和连接线。
4.3 连接服务部件
一个完整的服务由表示开始节点的“开始”部件出发,中间有若干个执行具体任务的部件,最后以表示结束节点的“结束”部件终止,并按照服务的内部逻辑使用带箭头的连接线将这些部件依次连接起来,中间节点的部件就好比是一道道工序,它们共同协作最终完成一项工作。
在画布上连接部件有两种操作方式:
方式一:先点击画布顶部工具栏的连接图标,再依次点击“开始”节点和目标节点,就可以将这两个节点连接起来
如果要删除连接线,先点击连接线弹出工具面板,再点击移除图标。
方式二:先点击“开始”部件,在弹出的工具面板上点击连接箭头,再将鼠标移动到目标部件上(此时鼠标应变为箭头形状)并点击,就连接了这两个部件。
4.4 配置服务部件
每个中间节点的部件用于完成一项任务,这是通过部件配置来实现的。在画布上点击部件时会在右侧显示部件配置面板,配置面板的内容会因部件不同而有所差异。
注:服务配置时输入的脚本使用Google Aviator语法编写。
4.5 服务调试
完成服务配置后可以通过服务调试来验证是否存在错误、是否达到配置目的,鼠标点击服务调试工具的选择器,再点击“编辑”,弹出服务调试窗口。
在服务调试窗口点击图标按钮添加一个实例,输入[实例名]和[参数],再点击【发送】,在[响应]中可以看到调试结果。
注:[参数]输入的是JSON语句。
4.6 工具栏操作
在画布顶部的工具栏提供的操作功能依次如下:
抓手工具:将鼠标切换为抓手状态,此时在画布上按下鼠标不放,可以拖拽整个画布在屏幕上移动位置。
套索工具:用于在画布上一次选中多个部件。先点击该工具图标,再在画布空白处按下鼠标拖动,此时会显示一个移动的蓝色方框,松开鼠标后框线内的部件会被全部选中。
- 空间工具:以鼠标位置为中心点将画布分为四个区域,按下鼠标在画布上拖拽可以横向移动右方区域或纵向移动下方区域,用来调整画布上局部内容的位置,点击鼠标右键退出空间工具。
连接工具:用于连接画布上的两个部件。
放大:放大画布内容。
缩小:缩小画布内容。
还原:将画布内容还原到默认大小。
适应窗口:将画布内容还原到默认大小并移动到画布中间位置。
撤销:撤销前一步操作。
重做:撤销的逆向操作。
查看/编辑XML:显示服务的XML,在编辑模式下可以通过直接编辑xml文本来修改服务配置。例如从其他项目复制过来一个完整的服务xml后,可快速通过编辑xml的方式,全局查找匹配替换节点中所有数据源的值,如下图。
保存:保存服务配置。
切换为编辑/只读:切换为编辑模式或只读模式,默认为只读模式。
4.7 全屏
点击画布右上角的全屏图标,可以将配置窗口全屏,再次点击还原。