# 脚本

# 概述

在节点和动作的设置中多次出现了脚本,这里的脚本是符合BeanShell规范的可执行命令。关于BeanShell的使用,可以参考https://beanshell.github.io (opens new window)。BeanShell是一种类Java的语言,它的使用不在本文档范围内。这里仅对在BeanShell中可以引用的一些流程相关的内部变量作说明:

变量名称 Java类型 说明
$ Map<String, Object> 表单数据,key为字段名称
$$ Map<String, Object> 当前动态并行分支相关的表单数据
_ Map<String, Object> 流程实例的附加属性
error InterruptWorkflowException 在脚本中返回错误信息并中断流程执行,可用于调试
如:error.report(${"fieldName"});

特别说明:{}为BeanShell中对Map对象get方法的特殊语法,${"fieldName"}等价于$.get("fieldName"),因此修改表单数据可以通过$.put("fieldName", "Other Value")来进行。为了兼容表单配置中的语法,对于表单变量的引用可以使用${"fieldName"}的形式,也可以使用${fieldName}的形式。

# 示例


示例 赋值
// 读取表单日期控件转换格式,实例名称使用 
// 实例名称配置:${fieldFZ}${fieldXingMing}到${fieldChuFangGuoJia}因公出国(境)
long t=${"fieldChuGuoKaiShiRiQi"};
if( t > 0 ) {
    String rq=new java.text.SimpleDateFormat("yyyy年MM月dd日").format(new java.util.Date(t * 1000));
    $.put("fieldFZ",rq);
}
1
2
3
4
5
6
7
示例 报错
String rest=${"fieldName"};  // 获取表单值
String info="信息不能为空";
if(rest.equals("")){
    error.report(info); 
}
1
2
3
4
5
示例 for循环重复节
List results = ${"fieldSZYXYJ"};
for(String result : results) {
  if (result.equals("1")) {
    return "approve";
  }     
}
return "reject";
1
2
3
4
5
6
7
示例 判断是否已审核
return "1".equals(${"fieldMyDepartmentApprove"}) ? "yes" : "no"; 
1
示例 判断是否全部通过
int passedCount = 0;
Collection results = ${"fieldMyDepartmentApprove"};
for (Object r : results) {
    if ("1".equals(r)) passedCount++;
}
int size = results.size();
if (passedCount == size) return "all";
return "some";
1
2
3
4
5
6
7
8