作者:管理员 历史版本:1 更新时间:2024-10-24 16:08
编写版本:v3.5.0
适用版本:v3.5.0+
一、 Groovy脚本使用说明
1.1、概要说明
Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性.
语法跟写java代码类似,可以使用java中的lib包帮助类,也可以调用spring 的server的服务
简介:groovy脚本是维护在后端的ibps-excessive-root\modules\platform-excessive工程目录下,产品自带维护在下面脚本类中:
1、BpmnScript.java //主要与工作流接口业务相关脚本
2、BusinessScript.java //主要业务逻辑相关脚本,比如:库存增/减,查询某个表在增加在另表等
3、CommonScript.java //通用脚本类,比如:获取当前用户信息、组织等
4、JdbcScript.java //主要与jdbc增加、更新、查询的脚本
5、ThridServiceScript.java //主要调用第三方接口相关脚本
6、ValidationScript.java //主要与数据唯一性做校验相关脚本
1.2、常用Bean列表
BeanID | Bean说明 | 使用文档 |
---|---|---|
cmd | IBPS流程执行对象(任务、实例) | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/ActionCmd |
execution | Activiti任务执行对象 | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/BpmDelegateTask |
mybatisTemplateProvider | SQL执行对象(基于Mybatis,事务一致) | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/MybatisTemplateProvider |
jdbcScript | SQL脚本对象(基于JdbcTemplate,事务不一致) | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/JdbcScript |
bpmnScript | 流程脚本对象 | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/BpmnScript |
businessScript | 业务脚本对象 | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/BusinessScript |
cscript | 通用脚本对象 | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/CommonScript |
thridServiceScript | 第三方服务脚本对象 | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/ThridServiceScript |
validationScript | 校验脚本对象 | 在这里http://doc.bpmhome.cn/docs/ibps_v3_develop/ValidationScript |
说明:
- 调用规则:BeanID.方法名进行调用方式,即:cscript.getCurrentName();
- 本身产品维护的脚本类中没有用户相关的业务方法,可自定义脚本类进行增加,开发指导移步:自定义脚本开发范例。
二、平台中使用
2.1、表单管理
2.1.1 默认值-动态脚本
登录系统,在【表单管理】-【表单管理】使用Groovy脚本主要在“默认值-动态脚本”、“选择器-范围脚本”、“标签和按钮-文本固定值动态脚本”的使用操作说明,如下图所示:
选择某条数据直接进入“表单设计器”,如下图:
选中某个控件,在设计右边选择“默认值”属性下拉选择“动态脚本”,比如:选中是“单行文本”控件,如下图:
点击“动态脚本”进入编写脚本代码编辑器,比如:获取当前用户账号可调用脚本代码“cscript.getAccount();”,如下图:注意:脚本方法中返回的类型需要与业务对象定义的类型一致,比如:名称是字符串,年龄是数字,那么在后端脚本类方法返回的类型必须匹配一致!
- 在
CommonScript.java
类中常调用方法说明:
方法 | 说明 | 返回类型 | 脚本调用方式 |
---|---|---|---|
getAccount() | 获取当前登录用户账号信息 | 字符串 | cscript.getAccount(); |
getCurrentUserId() | 获取当前登录用户ID信息 | 字符串 | cscript.getCurrentUserId(); |
getCurrentName() | 获取当前登录用户名称信息 | 字符串 | cscript.getCurrentName(); |
getCurrentOrgName() | 获取当前登录用户所在组织名信息 | 字符串 | cscript.getCurrentOrgName(); |
getCurrentOrgId() | 获取当前登录用户所在组织ID信息 | 字符串 | cscript.getCurrentOrgId(); |
getCurrentPositionName() | 获取当前登录用户所在的主岗位名称信息 | 字符串 | cscript.getCurrentPositionName(); |
getCurrentPositionId() | 获取当前登录用户所在的主岗位ID信息 | 字符串 | cscript.getCurrentPositionId(); |
getCurDate() | 获取系统当前日期,默认格式:yyyy-MM-dd | 字符串 | cscript.getCurDate(); |
getCurDateTime() | 获取系统当前日期时间,默认格式:yyyy-MM-dd HH:mm:ss | 字符串 | cscript.getCurDateTime(); |
2.1.2 表单脚本
可以通过表单脚本的this.$request
调用后端脚本
this.$request({
url:'/business/v3/form/def/getScriptValue',
method: 'post',
data: {
'script': `Groovy脚本代码`
}
}).then(response => {
//TODO:处理数据返回的逻辑
}).catch(error => {
console.log(error)
})
说明
表单脚本的细节操作说明,移步地址:表单脚本
2.1.3 唯一校验脚本
说明
唯一校验脚本的细节操作说明,移步地址:唯一校验脚本
2.2、流程定义管理
2.2.1、设置事件脚本
登录系统,在【工作流程】-【流程定义管理】使用Groovy脚本主要在“事件设置”进行使用,如下图:
进入设置页面,选中节点信息在系统页面右边区域选择“事件设置”的“前置/后置脚本”,如下图:
说明
- 事件设置脚本的细节操作说明,移步地址:事件设置;
- 事件脚本类其他细节说明,移步地址:流程设置-前后置事件脚本。
2.2.2、表单前后置处理器
说明
2.3、脚本规范3.5.6+
groovy可以直接使用spring中的beanId调用对应方法。
2.3.1、普通脚本
性能有所欠缺。
return cscript.getAccount();
2.3.2、预编译脚本
可以通过预编译方式提高脚本执行效率。
//script-type=pre
//script-name=Script1
//execute-method=execute
public void execute(Map<String, Object> vars) {
vars.get("cmd");
vars.get("execution");
vars.get("businessKey_");
vars.get("instanceId_");
vars.get("flowKey_");
}
// 方法规范
// 不能使用run命名,会与groovy的防范冲突
// 开始/结束节点变量说明
//execution 类型 com.lc.ibps.bpmn.api.model.delegate.BpmDelegateExecution
// 任务节点变量说明
//execution 类型 com.lc.ibps.bpmn.api.model.delegate.BpmDelegateTask
// 通用节点变量说明
//yzfwb 类型 com.lc.ibps.base.bo.model.DataObjectModel
//nodeDef 类型 com.lc.ibps.bpmn.api.model.node.IBpmNodeDefine
//businessKey_ 类型 java.lang.String
//saveBusinessDataMode_ 类型 java.lang.String
//subject_ 类型 java.lang.String
//processDefId_ 类型 java.lang.String
//curUser 类型 java.lang.String
//task_id_ 类型 java.lang.String
//instanceId_ 类型 java.lang.String
//startUser 类型 java.lang.String
//task_qualfied_executor_ids_ 类型 java.lang.String
//flowKey_ 类型 java.lang.String
//isSaveBusinessData_ 类型 java.lang.Boolean