Some examples

Assume that we have a project with the following data.

Field
Data
ID1234
NameSample Project: Setting up office space
StartJune 10, 2011
ManagerMark Duncan
Budget5000
Cost (Est)4000
Cost (Actual)3800

Based on this data, the table below shows sample formulas, the output of that formula and also provides an explanation.

Examples of the formula field

Formula
Output (In Browser)
Explanation
${me.id * 10}12340Id is multiplied by 10.
me.id * 10entity.id * 10Not enclosed in ${} and hence copied to the output verbatim.
${10* 10}100Formulas need not use variables.
<b>${me.name}</b>Test ProjectYou can use html tags.
${me.name + 100}ERR!Cannot perform arithmetic on String type.
<a href="http://mywikiserver/${entity.id}">Wiki Link</a>Wiki LinkIf you use a Wiki, you can create hyperlinks to pages in your Wiki. Notice that we have simply used the HTML Anchor tag to generate a hyperlink.
${me.abcd}ERR!Formula contains error. No variable entity.abcd exists.
${formatDate(me.start)}Jan 10, 2011Formats the start date as per the user's date format style.
${me.actualCost > (me.estimatedCost * .9) ? 'Cost Alert!' : 'Cost Ok'}Cost Alert!If...then.. logic
${formatCurrency(me.budget)}$ 5,000Assuming your currency symbol is $

 

Now, lets try creating some formula using custom fields and using some logic :

  • Accessing a custom field attached to Client in a formula attached to Task.
    Let us say that you have a requirement to flag all tasks in a project where the custom field of client is rated as 1 as your 'High' priority tasks, 2 as 'Normal' tasks and 3 as 'Low' priority tasks. There is a custom field for Client which rates the client as 1 or 2 or 3 depending on the client's value to your business. The custom field is called 'Rating' and has a formula key 'client_rate'. Now, you need to create a custom formula field on task. Let us name this 'Task Importance'. The formula will look like this :
    ${me.project.client.client_rate == 1 ? (High) : ' ' || me.project.client.client_rate == 2 ? (Normal): ' ' || me.project.client.client_rate == 3 ? (Low) :' '} 

    Now if display 'Task Importance' column in a task report and you will know the importance of the task and can follow up accordingly.

 

  • Date Arithmetic
    Let us assume that one of the projects where you are a PM has completed. Now, you want to compare which of your resources, took more days to complete their task.
    For this, you need the Finish(Actual) date (me.actualFinishCalendar) of the task and the planned finish date of the task (me.finishCalendar).
    Since, these two fields are of type date, you cannot perform a direct operation on them.  You need to convert them to a number and then perform the operation. So, the formula will look like:
    ${(me.finishCalendar.time.time - me.actualFinishCalendar.time.time)/86400000}

    When you write ".time.time" it means that the date field is first converted to milliseconds for both the fields, then the subtraction is done. The result is again in milliseconds which needs to be converted again in days and hence, it is divided by 86400000. The result is the extra or less days taken by the resources to complete the task. The PM can pick this custom field as a column in a task report to see the difference.