外观
租户应用添加
租户应用基于SQL脚本实现,利用AgileBPM低代码开发的应用可以很好的在线安装给平台租户,或是将应用开放给租户,租户自行通过应用市场在线安装。
添加应用
菜单路径: 系统 > 租户管理 > 租户应用
对外开放
当勾选开放,租户可通过应用市场看到该应用
安装器
Default
纯SQL脚本执行
Freemarker
语法参考链接: http://freemarker.foofun.cn
利用模板引擎生成SQL,编写有逻辑的SQL生成,例如生成新的主键ID,一些有逻辑判断
内置变量
idGen.nextId()
唯一ID,顺序生成
nowTime
当前时间,可利用日期格式化出想要的格式,示例:${nowTime?string("yyyy-MM-dd HH:mm:ss")}
tenant.alias
当前租户别名
tenant.isolationMode
当前租户隔离模式 logic:逻辑隔离 physics:物理隔离
tenant.name 当前租户名称
tenant.id 当前租户ID
示例
- 带有层级的数据处理
该例子中,我们利用Freemarker中宏递归出带有层级的结构insert语句
<#macro insertResource appId, children, parentId, path>
<#list children as child>
<#local id="${idGen.nextId()}" />
INSERT INTO sys_resource (id_,app_id_,code_,name_,url_,enable_,opened_,is_api_,icon_,type_,sn_,parent_id_,path_,create_time_,create_by_,create_org_id_,update_time_,updater_,update_by_,tenant_id_) VALUES ('${id}','${appId}','${child.code_!''}','${child.name_!''}','${child.url_!''}',${child.enable_!'NULL'},${child.opened_!'NULL'},${child.is_api_!'NULL'},'${child.icon_!''}','${child.type_!''}',${child?index + 1},'${parentId}','${path}','${nowTime?string("yyyy-MM-dd HH:mm:ss")}','1','','${nowTime?string("yyyy-MM-dd HH:mm:ss")}','系统管理员','1','${tenant.id}');
<#if (child.children??) && (child.children?size > 0)>
<@insertResource appId=appId children=child.children parentId=id path="${path + '.' + id}"/>
</#if>
</#list>
</#macro>
<@insertResource appId='1602918114232172552' parentId='0' path='0' children=[{"code_":"office","name_":"办公","url_":"","enable_":1,"opened_":0,"icon_":"home-2-line","type_":"menu","sn_":1,"children":[{"code_":"index","name_":"工作台","url_":"/index","enable_":1,"opened_":0,"icon_":"","type_":"menu","sn_":1}]}] />
应用授权
将应用授权给租户,允许租户自行安装
菜单路径: 系统 > 租户管理 > 租户列表
- 进入租户-应用管理
- 授权给租户