定义计算属性

使用计算属性,您可以添加逻辑和数学函数来推导属性值。这些属性可以嵌入在其他计算属性中以生成复杂的函数。计算属性是只读属性。只能根据调度对其进行计算。

调度:您可以添加任何计算,无论是否将计算明确分配给任务,都会执行计算。

模板:您不能将选择了“计算”选项的自定义属性添加为列或可筛选属性。

当管理员将属性添加到“操作”对话框中的“属性”部分时,这些属性可供工作流用户查看。管理员可以将访问权限设置为“不显示”,从而限制某些角色的访问权限。例如,对于计算属性 XYZ,管理员可以将访问权限设置为查看者: 不显示,这样便不会向仅具有查看者角色的用户显示 XYZ 属性。

任何用户角色均可在视图和 Portlet 中将计算属性添加为列。此外,也可以在“筛选器”面板中将它们添加为可筛选属性。

要定义计算属性:

  1. 在主页上,依次单击应用程序任务管理器
  2. 单击左侧的属性选项卡。
  3. 单击新建,然后在属性选项卡上输入属性名称,并选择属性类型
  4. 选中计算选项。
  5. 计算选项卡上,选择计算类型

可以从以下计算类型中进行选择。可用类型由属性类型文本整数等)确定。

  • 将值分配给列表:将自定义值分配给列表类型的属性

  • 将列表分配给值:将自定义列表值分配给不同属性的值。仅限列表类型的属性使用。

  • 条件:条件计算 (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>)

计算验证

当您保存计算时,会执行以下验证检查:

  • 计算的语法是否正确。

  • 计算中指定的属性和函数是否存在。

  • 函数的参数是否正确。

  • 是否不存在循环回路。