使用计算属性,您可以添加逻辑和数学函数来推导属性值。这些属性可以嵌入在其他计算属性中以生成复杂的函数。计算属性是只读属性。只能根据调度对其进行计算。
调度:您可以添加任何计算,无论是否将计算明确分配给任务,都会执行计算。
模板:您不能将选择了“计算”选项的自定义属性添加为列或可筛选属性。
当管理员将属性添加到“操作”对话框中的“属性”部分时,这些属性可供工作流用户查看。管理员可以将访问权限设置为“不显示”,从而限制某些角色的访问权限。例如,对于计算属性 XYZ,管理员可以将访问权限设置为查看者: 不显示
,这样便不会向仅具有查看者角色的用户显示 XYZ 属性。
任何用户角色均可在视图和 Portlet 中将计算属性添加为列。此外,也可以在“筛选器”面板中将它们添加为可筛选属性。
要定义计算属性:
可以从以下计算类型中进行选择。可用类型由属性类型(文本和整数等)确定。
将值分配给列表:将自定义值分配给列表类型的属性
将列表分配给值:将自定义列表值分配给不同属性的值。仅限列表类型的属性使用。
条件:条件计算 (If - Then - Else)
脚本形式:自由形式的脚本计算。仅限整数、多行文本、数字或文本类型的属性使用。
下表列出了可供每个属性类型使用的计算类型。
属性类型 | 将值分配给列表 | 条件 | 脚本形式 | 将列表分配给值 |
---|---|---|---|---|
日期 | ||||
日期/时间 | ||||
整数 | X | X | X | |
列表 | X | X | ||
多行文本 | X | X | X | |
数字 | X | X | X | |
文本 | X | X | X | |
True/False | X | |||
用户 | ||||
是/否 | X |
计算定义
使用脚本形式计算类型可以输入自由形式的计算公式。您可以使用添加属性和添加函数:
添加属性:选择一个属性,并在“计算定义”框中光标所在位置插入该属性。如果光标在一个单词或属性的中间,则该单词/属性将在定义中替换。脚本格式会在新属性名称两边添加大括号 {}。
唯一可用的属性是“调度”属性。
添加函数:选择一个函数,并将该函数添加到计算定义中。在添加的函数中,每个参数都有占位符。
例如,在计算定义中插入 DATE_DIFF 函数:
DATE_DIFF(<Date1>, <Date2>, <Type>)
然后用属性替换占位符:
DATE_DIFF( {Start Date}, {End Date}, 'DAYS')
数字和日期函数
绝对值:返回指定数字的绝对值。如果某个数字小于零,则返回该数字的正值。如果指定的数字等于或大于零,则返回指定的数字。
ABS(<Number>)
添加月:返回与开始日期相差指定月数的日期。该日期始终处于指定的偏差月内。如果开始日期所在的那一天超过了偏差月中的最后一天,则将使用偏差月的最后一天。例如,EDate (31-Jan-2017, 1) 返回 (28-Feb-2017)。对于 Months,输入开始日期之前或之后的月数。月数为正值将产生将来的日期。负值将产生过去的日期。
ADD_MONTH(<Start Date>, <Months>, <Length>)
示例:ADD_MONTH(DATE(2017, 2, 15) 3)
日期:基于在年、月和日指定的整数值返回日期值。
DATE(<Year>, <Month>, <Day>)
日期差异:返回两个日期之间相差的年数、月数、天数、小时数、分钟数或秒数。对于 DATE 1 和 DATE 2,可使用值 TODAY 和 NOW,它们分别表示当前的日期(没有时间要素)和日期时间。
DATE_DIFF(<Date1>, <Date2>, <Type>)
示例:DATE_DIFF( {Start Date}, 'TODAY', 'DAYS')
天:以整数返回日期所在的那一天
DAY(<DATE>)
提取文本:返回值中自指定位置起的子字符串。
SUBSTRING(<Value>, <Location>, <Length>)
示例:SUBSTRING( {Name}, 4, 10)
If Then Else:允许您向脚本形式的计算中插入条件计算。还可以嵌套 IF_THEN_ELSE 计算以支持 ELSE IF 类型的计算。
IF_THEN_ELSE(<Condition>, <Value1>, <Value2>)
示例:IF_THEN_ELSE( ( {Priority} = 'Low'), 1,IF_THEN_ELSE( ( {Priority} = 'Medium'), 2, IF_THEN_ELSE( ( {Priority} = 'High'), 3, 0)))
示例:IF_THEN_ELSE( ( {Priority} = 'Low'), 'Good' IF_THEN_ELSE( ( {Priority} = 'Medium'), 'Better'. 'Best') )
Instring:返回值中子字符串的索引。
INSTRING(<Value1>, <Value to Search>)
示例:INSTRING({Name}, 'a')
长度:接受文本值参数,并以整数形式返回文本中的字符数。如果值为空白/空值,则计算结果将返回 0。
Length ({<attribute>})
示例:LENGTH("Value")
将返回 5,LENGTH({Name})
将返回对象名称中的字符数。
将该计算与 SUBSTRING 结合使用可提取文本值中的最后四个字符。
SUBSTRING( {MyString}, LENGTH ({MyString}) - 4
小写:以小写形式返回值
LOWERCASE(<Value>)
示例:LOWERCASE ({Task Code})
最大值:返回属性列表中的最大值。可以包含任意数量的参数。
MAX <Value1>, <Value2>, <ValueN>)
示例:MAX( {Scripted Substring Loc a}, {Scripted Substring Loc s}, {Scripted Substring Loc t} )
最小值:返回属性列表中的最小值。可以包含任意数量的参数。
MIN (<Value1>, <Value2>, <ValueN>)
示例:MIN( {Scripted Substring Loc a}, {Scripted Substring Loc s}, {Scripted Substring Loc t} )
月:以整数返回日期所在的月份 (1-12)
MONTH (<DATE>)
幂:将一个数提升为另一个数的指数幂。
POWER(x,y),其中 x=基数,y=指数
,x 和 y 可以是属性或计算(只要它们是数字)。
示例:POWER(3,4)=81
注:
分数值将数字还原为其根。例如,POWER(27, 1/3) = 3
,即立方根。
负值将执行指数计算的逆运算。例如,POWER(2, -2) = 1 / (2^2) = 1 / 4 = .25
。
舍入:返回舍入到指定小数位数的值
ROUND <Attribute>, <Decimal Places>)
示例:ROUND( ({Scripted Substring Loc t} / 7), '4')
文本位置:返回值中子字符串的索引,1 表示第一个位置。
INSTRING(<Value>, <Value To Search>)
示例:INSTRING( UPPERCASE( {Name} ), 'TAX' )
大写:以大写形式返回值。
UPPERCASE(<Value>)
示例:UPPERCASE( {Name} )
年:以整数返回日期所在的年份。
YEAR (<DATE>)
计算验证
当您保存计算时,会执行以下验证检查:
计算的语法是否正确。
计算中指定的属性和函数是否存在。
函数的参数是否正确。
是否不存在循环回路。