# 功能描述

调用脚本功能实现的是,我们有些情况下希望在前端调用后端的代码,可以做一些后端的逻辑处理,如果我们每次都去编辑java代码,那么可能需要服务器重新发布,重启比较繁琐。

平台实现了可以通过在线编辑java代码,提供给前端调用,方便开发过程。

# 操作步骤

添加一个后台调用。

我们添加一个别名,别名是唯一的 编写java 脚本,return "hello" + params;其中 params 是前端传过来的参数,如果有多个参数,自行组装,在后端自行解析。

测试 我们可以看到返回的结果。

可以查看使用帮助

# 通过脚本调用构建下拉树

# 业务场景

在表单中,我们有时候需要通过下拉框选择用户,这个用户需要和组织架构挂钩。

类似这种。

这种通过通过直接配置还是不能够配置出来,比如自定义SQL,平台提供了一种可以树形配置URL的功能实现树形。

这个时候就可以通过调用脚本,在线实现 这个功能。

# 添加一个调用脚本

import com.redxun.core.dao.mybatis.CommonDao;
import com.redxun.core.util.AppBeanUtil;
CommonDao dao=AppBeanUtil.getBean(CommonDao.class);
String pid=params["ID_"];
if(pid==null){
    pid="0";
}
String sql="select GROUP_ID_ ID_,NAME_,(SELECT COUNT(*) FROM os_group A WHERE A.PARENT_ID_=W.GROUP_ID_) CHILDS,1 TYPE,PARENT_ID_  from os_group w WHERE DIM_ID_='1' AND PARENT_ID_='"+pid+"'";
List list=dao.query(sql);
List userList=new ArrayList();
//"isLeaf":false,"expanded":false
for(Map map:list){
  String groupId=map["ID_"];
  String userSql="select u.USER_ID_ ID_,u.FULLNAME_ NAME_ ,2 TYPE,'"+groupId+"' PARENT_ID_  from os_rel_inst t,os_user u where t.PARTY1_='"+groupId+"' and REL_TYPE_ID_='1' and PARTY2_=u.USER_ID_";
  List users=dao.query(userSql);
  for(Map user:users){
    user.put("isLeaf",true);
    user.put("expanded",false);
  }
  userList.addAll(users);
  if(map["CHILDS"]>0){
    map.put("isLeaf",false);
    map.put("expanded",false);
  }
  else{
    map.put("isLeaf",true);
    map.put("expanded",true);
  }
}
list.addAll(userList);
return list;

脚本编写如上

params 是上下文封装的参数map对象。
树形实现异步,数据中需要 isLeaf 和 expanded 数据,如果为false,表示有子节点数据。

# 表单中配置

配置一个下拉框 ,这个URL 的配置就 配置 为

/sys/core/sysInvokeScript/data/脚本别名.do

还需要配置 文本字段,ID_字段,父节点字段,就可以实现树形异步了。