Track when a task is opened

I had a teammate ask me how to track a task is opened the first time.  He wanted to fire either a startProcess or write to DSE in a localVariable but I told him you could only do that on saveInto.  I proposed creating a task report and either using the status of Assigned -> Accepted or Owner is not null to show the task has been opened and accepted (accepted has automatically when there is only one assignee and the task is opened).

Is this the only way to track when a task is opened?

  Discussion posts and replies are publicly visible

  • By assigning a task to a group, you are able to track when a user assigns the task to themselves. Alternatively, you can always create a button called 'Start Task' which will fire startProcess or a write to DSE.

  • I am not very sure about the reason/requirement to track this, but you can always check when the task is accepted first time.

  • 0
    Certified Lead Developer

    From documentation:

    owner tp!owner Task owner.
    • When a task is assigned, the Task Owner property has a null value until the assigned user views the task or until a user in the assigned group accepts the task.

    So theoretically, you could use an a!refreshVariable set to update when tp!owner changes from null to any value.  That will at least get a local variable to show that a user has accepted / viewed the task.

    Now, the trick is to go from there to starting a process.  I don't know if there's a means to fire it off from there.  a!startProcess, as far as I know, requires a user input of some kind.

    Can rules for scripted start nodes poll process variables including the task properties of specific nodes?  If so, you could have a secondary process thread flow to a startProcess smart service.

  • 0
    Certified Lead Developer

    The other possibility, though not EXACTLY what was asked for, you could have 2 saveIntos added to each component on the form.

    The first is to set an alreadySent flag (which you set to false by default) to true.

    The second is if( local!alreadySent, {}, a!startProcess() )

    With this, you'll send one process, and hopefully only 1 process, the first time a user INTERACTS with anything on the form.

    Again, not exactly what was asked for, but will do in a pinch?