作者:管理员 历史版本:1 最后编辑:Eddy 更新时间:2024-10-24 16:08
自定义Groovy脚本开发范例
说明:在平台配置开发中,如果平台原提供的脚本无法满足业务需要,可根据具体业务情况自定义开发符合自身业务需要的脚本。比如:流程分支网关中需要根据扩展属性值配置走不同分支,这时需要自己开发一个获取扩展属性值的脚本方法!
温馨提示:规范开发
1、后端java方法编写
在/ibps-excessive-platform/src/main/java/com/lc/ibps/platform/script/script
下新增一个jave类,比如:MyScript.java
需要注意的是,该类需要继承BaseScript
或 IScript
类
详细代码如下:
package com.lc.ibps.platform.script.script;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.lc.ibps.api.org.constant.PartyType;
import com.lc.ibps.base.core.util.BeanUtils;
import com.lc.ibps.base.core.util.string.StringUtil;
import com.lc.ibps.cloud.entity.APIResult;
import com.lc.ibps.org.api.IPartyAttrService;
import com.lc.ibps.org.party.persistence.entity.PartyAttrPo;
import com.lc.ibps.org.party.persistence.entity.PartyAttrValuePo;
/**
* 自定义开发脚本,可直接在Groovy脚本中调用。
*
*/
@Service
public class MyScript extends BaseScript {
@Resource
private IPartyAttrService partyAttrService ;
/**
* 获取当前用户员工扩展属性值
* @param attrKey 具体的扩展属性key
* <pre>
* 脚本中使用方法: myScript.getCurrentEmployeeAttrVal("securityLevel");
* </pre>
* @return
*/
public String getCurrentEmployeeAttrVal(String attrKey) {
if (BeanUtils.isEmpty(currentContext.getCurrentUserId())){
return "";
}
return getAttrVal(currentContext.getCurrentUserId(),PartyType.EMPLOYEE.getValue(),attrKey);
}
/**
* 获取员工扩展属性值
* @param id
* @param attrKey
* <pre>
* 脚本中使用方法: myScript.getEmployeeAttrVal(userId,"securityLevel");
* </pre>
* @return
*/
public String getEmployeeAttrVal(String id,String attrKey) {
if (BeanUtils.isEmpty(currentContext.getCurrentUserId())){
return "";
}
return getAttrVal(id,PartyType.EMPLOYEE.getValue(),attrKey);
}
/**
* 获取扩展属性值
*
* @param id
* @param partyType employee-员工,org-机构,position-岗位,role-角色
* @param attrKey 具体的扩展属性key
* <pre>
* 脚本中使用方法: cscript.getCurrentAttrVal(userId,"employee","securityLevel");
* </pre>
*
* @return
*/
public String getAttrVal(String id,String partyType,String attrKey) {
if(StringUtil.isBlank(id) ||StringUtil.isBlank(partyType) || StringUtil.isBlank(attrKey)) {
return "";
}
//根据用户ID查询扩展属性
APIResult<List<PartyAttrPo>> apiResult = partyAttrService.findByPartyTypeUserId4Get(partyType, id);
if (apiResult.isFailed() || BeanUtils.isEmpty(apiResult.getData())) {
return "";
}
List<PartyAttrPo> partyAttrPoList = apiResult.getData();
for (PartyAttrPo partyAttrPo : partyAttrPoList) {
if (!attrKey.equals(partyAttrPo.getKey())) {
continue;
}
List<PartyAttrValuePo> values = partyAttrPo.getValues();
if (BeanUtils.isEmpty(values)) {
return "";
}
return values.get(0).getValue();
}
return "";
}
}
2、在平台配置中使用该脚本
例如在流程配置分支网关中使用该脚本:
myScript.getEmployeeAttrVal(startUser,"securityLevel").equals("三级")