定義計算屬性

計算屬性可讓您新增邏輯和數學功能,以便為屬性產生值。您可以在其他已計算的屬性中內嵌它們,以產生複雜的功能。計算屬性是唯讀屬性。只能針對「排程」來評估它們。

排程:您可以新增任何「計算」,不論是否明確將它指派給任務,都會評估計算。

範本:您無法將已選取「計算」選項的自訂屬性新增為欄或可篩選的屬性。

當管理員將屬性新增至「動作」對話方塊的「屬性」區段時,工作流程使用者將可看到這些屬性。管理員可以將存取權設為「不顯示」,以限制只有特定角色才能存取。例如,對於已計算的屬性 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)。對於月份,請輸入開始日期之前或之後的月數。正值月份會產生未來日期。負值會產生過去的日期。

    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')

  • Length:把文字值視為參數,並傳回一個整數,也就是該文字的字元數。如果該值為空白/空值,計算作業會傳回 0。

    Length ({<attribute>})

    範例:LENGTH("Value") 會傳回 5,而 LENGTH({Name}) 會傳回該物件名稱的字元數。

    下列範例為搭配 SUBSTRING 來使用上述計算作業,以擷取文字值的最後 4 個字元。

    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=BASE NUMBER,而且 y=EXPONENT,x 和 y 可以是屬性或計算,只要兩者都是數值即可。

    範例:POWER(3,4)=81

    註:

    分數將簡化為該數的根。例如,POWER(27, 1/3) = 3 為立方根。

    負值將執行反轉的指數計算。例如,POWER(2, -2) = 1 / (2^2) = 1 / 4 = .25

  • Round:傳回四捨五入的值至指定的小數位數

    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>)

計算驗證

當您儲存「計算」時會執行下列驗證檢查:

  • 「計算」的「語法」正確。

  • 「計算」中指定的「屬性」和「函數」存在。

  • 「函數」的「參數」正確。

  • 沒有「循環迴圈」。