3公式定义器练习.docx

上传人:b****9 文档编号:24945015 上传时间:2023-06-03 格式:DOCX 页数:12 大小:818.45KB
下载 相关 举报
3公式定义器练习.docx_第1页
第1页 / 共12页
3公式定义器练习.docx_第2页
第2页 / 共12页
3公式定义器练习.docx_第3页
第3页 / 共12页
3公式定义器练习.docx_第4页
第4页 / 共12页
3公式定义器练习.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

3公式定义器练习.docx

《3公式定义器练习.docx》由会员分享,可在线阅读,更多相关《3公式定义器练习.docx(12页珍藏版)》请在冰豆网上搜索。

3公式定义器练习.docx

3公式定义器练习

公式定义器扩展

用于何处?

公式定义器主要用于自定义表单控件的初始值,审批节点的审批人,自动分支的条件表达式等地方。

公式定义器的构成

公式的特点:

1、具有运行上下文。

简单地说,就是变量,参与计算的数据。

如:

“$报销金额$”。

2、通过一些逻辑运算符,进行一系列的运算。

对于相对复杂的运算,引入了函数的概念,方便了公式的编写,如:

“$时间.获取时间差$($结束时间$,$开始时间$)”。

3、最终会返回一个结果。

结合下图的公式定义器界面,可以更好地帮助您了解公式定义器。

变量:

变量是参与公式计算的数据。

在审批流程模块中,变量可以来自系统预定义的字段,如:

标题、创建时间、创建人等;还可以来自自定义表单的字段,如:

报销金额、开始时间、结束时间等。

在公式定义器中引用的格式为:

“$变量名$”,如:

“$报销金额$”。

变量可以在公式定义的左边树变量列表中直接选择引用。

逻辑运算符:

温馨提醒:

公式定义器中的逻辑运算符完全符合Java的语法,若您对Java语法了如指掌,请忽略下面这张表。

分类

符号

说明

数学运算符号

+(加)

-(减,或负)

*(乘)

/(除)

%(取模,即余数,如11%10=1)

使用除号需要小心,若参与运算的都是整数,则返回的结果会自动取整,如:

11/10=1,为了避免该现象,可以将上面的公式改写一下:

11.0/10=1.1

逻辑判断符

>(大于)

<(小于)

>=(大于或等于)

<=(小于或等于)

==(等于)

!

=(不等于)

!

(非)

注意:

这几个函数都用于数字类型的判断,对象类型的判断不能使用(字符串属于对象类型),详见“对象相等”

对象相等

equals(等于)

样例:

”a”.equals(“a”),返回真

常用表达式

true

false

return

终止后面运算,直接返回值,如returntrue;

逻辑表达式?

值1:

值2

若逻辑表达式成立,则返回值1,否则返回值2

if(逻辑表达式){

}else{

}

如果……

否则……

函数:

函数是系统预定义好的一些逻辑算法,每个函数包含若干个输入参数(某些函数可能没有输入参数)和一个返回值。

函数的格式:

$函数名$(参数1,参数2,……)。

函数可以通过左边树的函数列表进行选择,鼠标放在左边树的函数的时候,会显示该函数的帮助信息。

公式定义器的类型

公式定义器里面的所有变量都有数据类型,函数中的输入输出也有数据类型,公式定义的返回结果也有数据类型。

如何确认一个变量的数据类型?

比如在审批流程模块中,变量可能来自系统预定义的字段,也可能来自表单自定义的字段。

系统预定义的字段来自系统的数据字典(这点开发人员应该非常清楚),在此我就不多加描述。

自定义表单的字段类型如何确定呢?

自定义表单元素

类型确定

单行输入框

由该控件的“数据类型”属性确定是字符型还是数字型。

多行输入框

字符型

单选按钮

由该控件的“数据类型”属性确定是字符型还是数字型。

多选按钮

字符型,多值用;分隔

下拉菜单

由该控件的“数据类型”属性确定是字符型还是数字型。

富文本框

字符型

附件

不参与任何公式计算

地址本选择框

组织架构对象类型(SysOrgElement)

日期选择框

日期时间型(Date)

隐藏字段

由该控件的“数据类型”属性确定是字符型、数字型、日期型。

如何确认函数的参数类型和返回值类型?

当鼠标放在左边树的每个函数节点时,都会提示该函数的简单介绍,信息包括:

您该输入什么样的参数,将输出什么样的值。

如何确认公式返回结果类型?

要确认公式返回结果类型,需要从使用公式的场景来理解。

下面举几个场景:

1、流程定义中的条件分支:

显然这里应该返回true/false。

2、流程定义中,采用公式定义器来定义处理人:

返回值类型为组织架构对象(或组织架构对象列表)。

3、表单自定义中某个字段的初始值:

可以根据该字段的类型确定公式应该返回什么类型的数据。

返回结果类型的自动转换

公式定义器会自动将返回的结果转换成合适的类型。

期望返回类型

可自动转换的类型

字符

所有类型

日期/时间/日期时间

整数:

1970-01-0100:

00:

00GMT等于0,往后1毫秒的时间加1。

字符:

格式为1970-01-0100:

00

数字

字符

布尔(true/false)

字符:

true/false/t/f/yes/no/y/n/1/0

数字:

1/0

组织架构等model

字符:

以该字符作为ID的对象

另外,公式定义器还能将列表自动转换成单值,或将单值自动转换成列表。

常见的问题

校验失败?

由于公式定义器的语法过于灵活,所以公式定义器的校验方法中,只能简单模拟数据进行校验,所以无法完全校验公式是否可以正常运行。

所以,当您写一些比较复杂的公式的时候,公式定义器可能会提示:

“表达式校验未通过!

原因可能是由于表达式编写错误,或者校验器无法模拟真实数据导致。

是否仍使用该公式?

”当出现该提示的时候,若您确认公式的书写是正确的,可以忽略该提示信息。

常见误区:

字符串相等

在编写公式的时候,经常会用到字符串的比较,比如我们需要判断一个城市的字段值是否为深圳,那我们很自然地会将公式写成:

$城市$==”深圳”

很抱歉,上面的语法是无法得到您期望的结果。

正确的写法是:

”深圳”.equals($城市$)

公式解释器中,将字符串看成了是一个对象,这个对象的相等只能采用equals符号。

空指针错误?

字符串、日期、组织架构等都是对象类型,我们可以通过“对象1.equals(对象2)”的方式来比较两个对象是否相等,也可以访问对象的属性/方法,但若这个对象可能没有被赋值,那当访问的时候就会出空指针的错误,所以在使用公式的时候,请尽量保证使用的变量是必填项,避免空指针错误。

解决空指针的方法见“在公式定义器中使用脚本语言”小节。

表单控件初始化值

我们把自定义表单里面的薪资的控件值初始化为一个不大于10000的随机整数。

步骤一:

点击公式定义的按钮

步骤二:

编写逻辑代码

importjava.util.Random;

Randomr=newRandom();

returnr.nextInt(10000);

分支条件表达式

我们根据薪资的数额来决定是否需要老总审批,比如薪资大于8000的要老总来审批,小于等于8000的就不需要。

步骤一:

画出流程图

步骤二:

编写条件表达式

节点处理人

公式定义器里面已经内置了一些函数,我们可以在流程,自定义表单中使用它。

比如我们把经理审批节点设置为提交人的直线领导。

步骤一:

配置节点处理人

步骤二:

调用组织架构的方法

声明机器人节点service类,具体样例如下所示:

$创建者$.getLeader(0);

步骤三:

通过逻辑代码来返回

公式定义器里面允许我们编写逻辑代码。

比如如果创建人没有直线领导,那么我们则固定返回一个人作为审批人。

在公式定义器中直接写逻辑代码,具体实例如下代码所示:

varleader=$创建者$.getLeader(0);

if(leader==null){

leader=$组织架构.根据登录名取用户$("zhangp");

}

returnleader;

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1